Addressing
Did I say the bits and bytes section was dry?? Well, this section may just take the honors. Most of you can cruise through this, or if you like - skip it altogether. I do feel you need to know just a bit about addressing (primarily Memory addressing) - since all the programs and code are loaded into memory at specific addresses.
Just like the post office can send and receive info from you because you have an address - the PC can send and receive info from Memory by using it's address. The same is true for the hard drive, diskettes, and CD ROM's - the data is accessible through an address. However, the storage addresses are stored in a FAT (File Allocation Table) and are transparent to the user.
Earlier, we discussed the concepts of 3 types of memory - ROM and RAM, and the L2 Cache. This section is concerned primarily with ROM and RAM. Modern SIMM's of RAM average about 64 MB (but 32, 64, 128, and 256 MB are the primary sizes).
The first 1 MB is a unique and extremely important area, and is divided up into two parts - the first 640k in RAM, and the last 384 k on ROM. This which is primarily reserved for low-level software routines that are part of the computer's OS (Operating System). The OS control the basic functions, such as interrupt hadlers (routines that manage Interrupts), I/O (Input/Output). In addition, it was found that an additional small, 64k area of memory above 1 MB was accessible, and this was named the HMA (High Memory Area).
The areas of addressable memory that your PC uses are as follows :
Conventional memory (Upper and Lower Memory)
Conventional memory, totalling 1 MB, is split into 640K of lower memory (RAM) and 384K of upper memory (ROM). However, when most people talk about conventional memory, they are referring to the 640K of lower memory.
The DOS operating system was designed to only access conventional memory, specifically the 640K lower memory, reserving the remaining 384K for the ROM. The ROM is used by DOS to support various hardware and system resources such as BIOS, video controllers, etc.
If you are familiar with DOS and the config.sys and autoexec.bat files, you may
have seen the DeviceHigh statements in config.sys for device drivers
- or LH (load high) statements for TSR's (Terminate Stay Resident), which
requests that the driver be loaded into high memory. This is done to free
up the lower 640k for other programs that may only be able to run in the lower
640k. This used to be a major problem, but very few programs run in the
lower are of memory anymore, and DOS is on the way out anyway.
If you have more than 640K of RAM then that excess is called extended or expanded memory. To use the extended or expanded memory you will be required to load one or more memory managers. This will be discussed later on in this document.
Extended memory (XMS)
In general, extended memory is the additional RAM above the 1 MB boundary. The original 8088 and 8086 PCs are not able to utilize extended memory. The 286 and later chip sets contain a new addressing system known as protected mode. The original addressing method is referred to as real mode and can only access up to the 1 MB boundary. Protected mode (also referred to as extended mode) allows the system to access the space above the 1 MB conventional memory. The 286 and later chips are able to switch between real mode and protected mode. Extended memory comes on a minimum chip set size of 256K, so addressing is usually specified in 256K increments. Extended memory is abbreviated XMS (eXtended Memory Specification).
NOTE: you often need to be able to access upper memory in order to load a fresh install of Windows, and the himem.sys files should be loaded into the root folder of your C drive, or diskette, and this line is needed in the config.sys file :
DEVICE= HIMEM.SYS
High Memory Area (HMA)
The high memory area is the first 64K bytes of extended memory. This area was tailor made for DOS and its
buffers to load into - nothing else. To load DOS high, specify DOS=HIGH in your CONFIG.SYS file. You will also have to load an extended memory manager such as
HIMEM.SYS. When DOS is loaded high so are the buffers, if they ALL fit. If they don't all fit then none of them are loaded in the HMA but are loaded in the conventional memory instead. To get them to fit in the HMA, never specify buffers greater than 40.
Expanded memory (EMS)
The concept of expanded memory was developed by three companies. Lotus, Intel and Microsoft; also known as the LIM group. Expanded memory is also referred to as EMS (Expanded Memory Specification. Expanded memory is only used by programs that are explicitly coded to handle and use the EMS standards. Expanded memory can be thought of as sitting beside your upper memory.
The EMS area is almost limitless in size, since the system basically take chinks
of it, and uses a 64k swap page to access it one segment at a time. This
is called "paging". You may, from time to time, on a system
crash, see a message referring to a "Page Error"