11.740 bytes

Service Hints & Tips

Document ID: DETR-3UFMZ5

Aptiva-PS/1 - Information about the DOS 640KB memory addressing limitation!

Applicable to: United States

Memory addressing is one of the most misunderstood concepts to the average personal computer user. Hopefully, with this article, we can explain how memory on a PC is addressed by DOS.

First, we should get some of the terminology straight. The processor in a computer is responsible for all decision making, calculating, and logic that goes on in the computer. Along with many other computer manufacturers, IBM uses processors made by INTEL or AMD. Just as the DOS version levels have increased over time, Intel's processors have also gone up in levels. This is reflected in the expansion of the PS/1 line of computers. The smallest unit that an 8088 processor could access was (and is) a byte. This is important to keep in mind when we talk later about DOS and the way it addresses memory. You don't have to be too concerned with bits or bytes, just know that 1 byte is made up of 8 bits. A bit is a single switch that is either ON or OFF (in computing, ON is denoted by 1 and OFF is represented by a 0).

The first IBM personal computer used the INTEL 8088 microprocessor that could address a maximum of 1 megabyte of information. The prefix "mega" means million, thus megabyte means 1 million bytes. However, it is not actually 1 million bytes exactly that the 8088 can access. The actual number is 2 to the 20th power which computes to 1,048,576 bytes. The term "megabyte" is used since there is not a term that means exactly 1,048,576 and it is close enough to 1,000,000. The reason that 2 to the 20th power is the magic number is that the 8088 has 20 different address lines (where a "line" can be thought of as a wire over which an ON or OFF signal can travel), each of which can contain the value of 0 (OFF) or 1 (ON). Therefore the processor has 2 possible values for 20 address lines... this computes to: 2 to the 20th power. An example address is 10000111000110001001. A good analogy for memory addressing is to think of each memory address location in the computer as a mailbox. Each mailbox has a unique address. However, in a computer there are a limited number of addresses and all are made up of some combination of 0's and 1's. The processor is like the postal delivery person and is responsible for taking information from one mailbox to another based on the address.

These different addresses are used to access the different components inside the computer. DOS, which is the common operating system for most IBM personal computers, was designed for the 8088 processor. Because the 8088 processor could only address 1 megabyte, and DOS was designed for the 8088, DOS can only access 1 megabyte. The question now is 1 megabyte of WHAT?

The developers of DOS decided that they would use the first 640,000 address locations for memory or RAM. (Using the mailbox analogy, there would be 640,000 mailboxes available to DOS.) The remaining 384,000 "mailboxes" would be reserved for special adapters (the hard drive and video adapters), thus they would not be available to DOS. The 640,000 address lines is why DOS has this 640,000 byte limit on accessible memory. 640K (K is short for kilo or 1 thousand) may seem like a small amount of memory now that most people talk about having megabytes of memory, but in the early 1980's this was an unimaginable amount. The next chip IBM used was the INTEL 80286. This chip has 24 address lines (wires) which gives 2 to the 24th power of storage. This computes to 16,777,220 and is referred to as 16 megabytes. DOS still has its 640K barrier even though the 80286 can access 16MB

Many people wonder why, if there is a 640K limit on the number of addresses DOS can use, do people add memory to their computers. As time went by, people in the computer industry realized people were going to want more memory for their programs to use. So, they came up with "tricks" to work around the 640K memory address limitation. The problem is that the use of tricks to address memory is not as efficient as using an operating system that does not have the 640K memory barrier designed into it (like DOS does). In other words, it is not as efficient as using an operating system that can recognize more than 1,000,000 addresses (640,000 for memory and 384,000 for hardware adapters) -- one that can recognize 16MB for example. The "tricks" used to allow DOS to use memory above 640K usually involve the installation of special software or drivers such as HIMEM.SYS and EMM386.EXE. Microsoft Windows, later versions of DOS beginning with DOS 5.0, and special memory management software all provide different types of solutions to most memory problems by working around DOS's address limitations.

The 640K memory barrier is the reason a PC user will sometimes get the dreaded "Out of memory error" even though the computer may have 2 megabytes (MB)_installed. Remember, DOS cannot really use the full 2 megabytes, only the first 640K. To make use of the rest of the memory, the computer must use the "tricks" available to work around the 640K limitation and the software that is being used on the computer must be able to understand these "tricks". The next logical question is probably "Why not create a new version of DOS that does not have this problem and that doesn't have to use 'tricks'?" Since DOS really cannot be changed to support more memory and still be DOS, the IBM solution was to create a whole new operating system for PC's. This operating system is called OS/2 and it does have the ability to access more than 1MB of memory.

Search Keywords

Hint Category

DOS/Windows 3.x, Memory

Date Created

23-04-96

Last Updated

15-03-99

Revision Date

15-03-2000

Brand

IBM Aptiva

Product Family

Aptiva, PS/1

Machine Type

2011, 2121, 2123, 2133, 2155, 2168, 2134, 2176, 2144

Model

C01; C34; M01; NEA; T35; U35; A62; A82; A94; B82; C42; C92; G42; M82; S92; 081; 087; 131; 137; K37; N31; N81; 11E; 13T; 14C; 16E; 17A; 18A; 18T; 19C; 21C; 23C; 28A; 46M; 51D; D50; G11; G13; G43; G46; G49; G50; G53; M40; M46; P11; P13; P43; P50; P53; R04; R05; R06; R09; R38; R42; R43; R44; R84; R86; R87; RO3; S11; S13; S43; S45; S47; S48; S50; S53; W11; W13; W42; W43; W45; W50; W53; 20E; 22T; 24C; 24M; 28V; 39E; 41T; 43C; 45V; 48E; 50T; 52C; 55V; 72E; 74T; 76C; 78C; 79C; 81A; 82E; 84T; 86C; 87C; CC1; D53; G14; G44; G52; G54; G72; G76; G78; G82; NM1; P14; P44; P57; P71; P74; P76; P78; P84; R14; R15; R16; R17; R18; R51; R52; R57; R58; R62; R63; R67; R71; R89; R93; R96; R97; S14; S44; S54; S70; S75; S76; S78; S80; W14; W44; W48; W54; W67; W76; W77; W78; Z33; 31E; 33T; 37C; 38C; 51E; 54T; 56C; 57C; 88V; BB1; G57; G87; OR1; OR3; OR4; OR5; P89; R28; R29; R31; R74; R78; R82; R98; S55; S85; SR1; US1; W52; W82; 6R6; 6R7; C21; C32; 6R9; C31; C54; C5D; F31; 6R8; 7R1; 7R2; 7R3; 7R4; 7R5; 7R6; 7R7; 7R8; 7R9; 7RO; 8R1; 8R2; 8R3; 8RO; C23; C33; C35; C53; C55; C57; C5H; C65; C66; C67; C69; C73; C75; C77; C79; C7H; F23; F35; F57; F69; F79; 5R5; M91; 2R5; 2R7; 2R8; M30; M35; M50; 2R6; 4R7; 4R8; M54; M58; 3R0; 3R8; M60; M70; 3R4; 3R6; 4R1; 4R9; M31; M51; M52; M63; 2R9; 3R1; 3R3; 3R5; 3R7; 3R9; 4R0; 4R2; 4R3; M41; M53; M55; M56; M57; M61; M62; M71; M72; 5R1; 6R3; A10; A12; A14; 5R2; 5R3; 5R6; 5R8; 5R9; 6R0; 6R4; 6R5; A15; A40; A44; A45; A50; A51; A52; A90; A92; 1R2; 66P; 67P; 86P; OR8; 1R1; 1R3; 1R5; 22P; 24P; 25P; 27P; 29P; 63P; 82P; 83P; OR6; OR7; OR9; 1R0; 26P; 62P; 2R0; P30; 2R3; S15

TypeModel

2011C01; 2011C34; 2011M01; 2011NEA; 2011T35; 2011U35; 2121A62; 2121A82; 2121A94; 2121B82; 2121C42; 2121C92; 2121G42; 2121M82; 2121S92; 2123081; 2123087; 2123131; 2123137; 2123K37; 2123N31; 2123N81; 213311E; 213313T; 213314C; 213316E; 213317A; 213318A; 213318T; 213319C; 213321C; 213323C; 213328A; 213346M; 213351D; 2133D50; 2133G11; 2133G13; 2133G43; 2133G46; 2133G49; 2133G50; 2133G53; 2133M40; 2133M46; 2133P11; 2133P13; 2133P43; 2133P50; 2133P53; 2133R04; 2133R05; 2133R06; 2133R09; 2133R38; 2133R42; 2133R43; 2133R44; 2133R84; 2133R86; 2133R87; 2133RO3; 2133S11; 2133S13; 2133S43; 2133S45; 2133S47; 2133S48; 2133S50; 2133S53; 2133W11; 2133W13; 2133W42; 2133W43; 2133W45; 2133W50; 2133W53; 215520E; 215522T; 215524C; 215524M; 215528V; 215539E; 215541T; 215543C; 215545V; 215548E; 215550T; 215552C; 215555V; 215572E; 215574T; 215576C; 215578C; 215579C; 215581A; 215582E; 215584T; 215586C; 215587C; 2155CC1; 2155D53; 2155G14; 2155G44; 2155G52; 2155G54; 2155G72; 2155G76; 2155G78; 2155G82; 2155NM1; 2155P14; 2155P44; 2155P57; 2155P71; 2155P74; 2155P76; 2155P78; 2155P84; 2155R14; 2155R15; 2155R16; 2155R17; 2155R18; 2155R51; 2155R52; 2155R57; 2155R58; 2155R62; 2155R63; 2155R67; 2155R71; 2155R89; 2155R93; 2155R96; 2155R97; 2155S14; 2155S44; 2155S50; 2155S54; 2155S70; 2155S75; 2155S76; 2155S78; 2155S80; 2155W14; 2155W44; 2155W48; 2155W54; 2155W67; 2155W76; 2155W77; 2155W78; 2155Z33; 216828V; 216831E; 216833T; 216837C; 216838C; 216851E; 216854T; 216856C; 216857C; 216888V; 2168BB1; 2168G57; 2168G87; 2168OR1; 2168OR3; 2168OR4; 2168OR5; 2168P89; 2168R28; 2168R29; 2168R31; 2168R74; 2168R78; 2168R82; 2168R98; 2168S55; 2168S85; 2168SR1; 2168US1; 2168W52; 2168W82; 21346R6; 21346R7; 2134C21; 2134C32; 21766R9; 2176C31; 2176C54; 2176C5D; 2176F31; 21766R8; 21767R1; 21767R2; 21767R3; 21767R4; 21767R5; 21767R6; 21767R7; 21767R8; 21767R9; 21767RO; 21768R1; 21768R2; 21768R3; 21768RO; 2176C23; 2176C33; 2176C35; 2176C53; 2176C55; 2176C57; 2176C5H; 2176C65; 2176C66; 2176C67; 2176C69; 2176C73; 2176C75; 2176C77; 2176C79; 2176C7H; 2176F23; 2176F35; 2176F57; 2176F69; 2176F79; 21685R5; 2168M91; 21442R5; 21442R7; 21442R8; 2144M30; 2144M35; 2144M50; 21682R6; 21684R7; 21684R8; 2168M40; 2168M54; 2168M58; 21683R0; 21683R8; 2168M60; 2168M70; 21443R4; 21443R6; 21444R1; 21444R9; 2144M31; 2144M51; 2144M52; 2144M63; 21682R9; 21683R1; 21683R3; 21683R5; 21683R7; 21683R9; 21684R0; 21684R2; 21684R3; 2168M41; 2168M53; 2168M55; 2168M56; 2168M57; 2168M61; 2168M62; 2168M71; 2168M72; 21445R1; 21446R3; 2144A10; 2144A12; 2144A14; 21685R2; 21685R3; 21685R6; 21685R8; 21685R9; 21686R0; 21686R4; 21686R5; 2168A15; 2168A40; 2168A44; 2168A45; 2168A50; 2168A51; 2168A52; 2168A90; 2168A92; 2168A94; 21681R2; 216866P; 216867P; 216886P; 2168OR8; 21441R1; 21441R3; 21441R5; 214422P; 214424P; 214425P; 214427P; 214429P; 214463P; 214467P; 214482P; 214483P; 2144OR6; 2144OR7; 2144OR9; 21681R0; 21681R1; 216826P; 216862P; 21442R0; 2144P30; 21442R3; 2144S15

Retain Tip (if applicable)

Reverse Doclinks
and Admin Purposes