Knowledge (XXG)

Upper memory area

Source 📝

196:
of memory, such as the monochrome display area on colour machines. Then, DOS' many subcomponents had to be loaded into these UMBs in the correct sequence to use the blocks of memory as efficiently as possible. Some TSR programs required additional memory while loading, which was freed up again once loading was complete. Fortunately, there were few dependencies amongst these modules, so it was possible to load them in almost any sequence. Exceptions were that to successfully cache CD-ROMs, most disk caches had to be loaded after any CD-ROM drivers, and that the modules of most network stacks had to be loaded in a certain sequence, essentially working progressively up through the layers of the
225:, it became less relevant still, as this version of Windows provides much of the functionality of the DOS device drivers to DOS applications running under Windows, such as CD, network and sound support; the memory map of Windows 95 DOS boxes was automatically optimised. However, not all DOS programs could execute in this environment. Specifically, programs that tried to directly switch from real mode to protected mode would not work as this was not allowed in the 33: 195:
For a period in the early 1990s, manual optimization of the DOS memory map became a highly prized skill, allowing for the largest applications to run on even the most complex PC configurations. The technique was to first create as many UMBs as possible, including remapping allocated but unused blocks
203:
A basic yet effective method used to optimize conventional memory was to load HIMEM.SYS as a device, thereafter loading EMM386.EXE as a device with the "RAM AUTO" option which allows access into the UMA by loading device drivers as devicehigh. This method effectively loads the fundamental memory
220:
made the necessity of the upper memory area less relevant, as Windows applications were not directly affected by DOS' base memory limits, but DOS programs running under Windows (with Windows itself acting as a multitasking manager) were still thus constrained. With the release of
172:. This configuration was not a trivial process. As it was largely automated by the installation program of QEMM, this program survived on the market; indeed, it worked well with DR DOS' own HMA and UMB support and went on to be one of the best-selling utilities for the PC. 481:
support, task swapping, and Undelete. Considerable amounts of the team's management attention was diverted to new features such as file transfer software, undelete and network installation Eventually this situation reached a crisis point at the end of July 1990, and, led by
121:, and I/O ports for peripherals, much of this 384 KB of address space was unused. As the 640 KB memory restriction became ever more of an obstacle, techniques were found to fill the empty areas with RAM. These areas were referred to as 288:
On many systems including modern ones it is possible to use memory reserved for shadowing expansion card ROM as upper memory. Many chipsets reserve up to 384 KB RAM for this purpose and since this RAM is generally unused it may be used as
183:
in June 1991. Eventually, even more DOS data structures were moved out of conventional memory, allowing up to 631 KB out of 640 KB to be left free. Starting from version 6.0 of MS-DOS, Microsoft even included a program called
156:
The advantage of DR DOS 5.0 over the combination of an older DOS plus QEMM was that the DR DOS kernel itself and almost all of its data structures could be loaded into high memory. This left virtually
233:(VCPI) API (which was introduced to allow DOS programs that needed protected mode to enter it from the virtual 8086 mode set up by a memory manager, as described above) didn't work in Windows 95. Only the 327:
for XT-class computers, allowed normal memory to be mapped into the 0xA0000-EFFFF address range, giving up to 952 KB for DOS programs. Programs such as
339:
was removed at the cost of software compatibility. This usage of the upper memory area is different from using upper memory blocks, which was used to free
312:
to make it appear in the upper memory area. As with the 386-based upper memory described above, the extra RAM could be used to load TSR files, or as a
458: 271: 230: 164:
Configuration was not automatic - free UMBs had to be identified by hand, manually included in the line that loaded EMM386 from
384: 556: 486:, the team's management spent an arduous series of meetings nailing down a schedule and process for closing the project down 204:
managers into conventional memory, and thereafter everything else into the UMA. Conventional memory glutton programs such as
529: 309: 276: 234: 189: 503: 266:
so this method of providing upper memory blocks is usually provided by the expanded memory manager (for example
208:
could also be loaded into the UMA in a similar fashion, hence freeing up a large amount of conventional memory.
137:
The next stage in the evolution of DOS was for the operating system to use upper memory blocks (UMBs) and the
453:. p. 10. MS-PCA1179169 (MS-PCA1179159-MS-PCA1179191). MS7020988 (MS7020978-MS7021010). Depo. Ex. 1109. 76: 324: 356: 41: 443: 361: 340: 478: 454: 255: 226: 161:
the base memory free, allowing configurations with up to 620 KB out of 640 KB free.
99: 320: 378: 138: 483: 372: 366: 306: 263: 259: 251: 53: 473:
One of the most important stimulanta for adding features was competitive pressure from
336: 332: 477:, which we first learnt of in the spring of 1990. The DRDOS feature set led us to add 561: 550: 168:, and then drivers and so on had to be manually loaded into UMBs from CONFIG.SYS and 57: 169: 32: 305:
computers, it was possible to add more memory to the motherboard and use a custom
525: 328: 217: 65: 347:
address space, but left the amount of addressable memory (640 KB) intact.
474: 222: 180: 165: 146: 142: 118: 114: 91: 87: 73: 450: 290: 197: 176: 103: 17: 343:
by moving device drivers and TSRs into the upper 384 KB of the 1 
415: 499: 395: 390: 344: 313: 229:
it was running in. Also, programs that tried making the switch using the
185: 61: 500:"UMBPCI V3.89 - c't magazine's hardware-UMB-driver for DOS and Win95/98" 188:
which was used to automatically optimize conventional memory by moving
36:
The upper memory area is located between 640 KB and 1024 KB.
302: 267: 205: 69: 457:
Plaintiff's Exhibit 3473. CA.No.2:96CV645B Plaintiff's Exhibit 477.
31: 150: 110: 80: 95: 83: 72:
or compatible. IBM reserved the uppermost 384 KB of the
526:"What is high memory, why do I care, and how can I use it?" 293:
upper memory with a custom device driver, such as UMBPCI.
237:(DPMI) API for switching to protected mode was supported. 274:
for managing the upper memory blocks is specified in the
331:, which accessed video memory directly, needed to be 437: 435: 149:, could perform most of the basic functionality of 145:in 1990. DR DOS' built-in memory manager, 250:Upper memory blocks can be created by mapping 335:to handle this memory layout. Therefore, the 8: 27:Physical memory region on IBM PC compatibles 444:"MS-DOS 5.0 Development Post-Mortem Report" 254:into the upper memory area when running in 141:(HMA). This occurred with the release of 407: 109:However, even with video RAM, the ROM 7: 192:(TSR) programs to the upper memory. 442:Dryfoos, Mike, ed. (1991-09-18) . 79:'s 1024 KB address space for 25: 272:application programming interface 231:Virtual Control Program Interface 175:This functionality was copied by 532:from the original on 2018-10-05 506:from the original on 2019-12-30 464:from the original on 2019-04-02 416:"Memory Map (x86) - OSDev Wiki" 385:Global EMM Import Specification 1: 277:eXtended Memory Specification 216:The increasing popularity of 235:DOS Protected Mode Interface 190:terminate-and-stay-resident 578: 449:(mail as court document). 258:. This is similar to how 153:and comparable programs. 325:memory management unit 262:can be emulated using 37: 557:DOS memory management 528:. San Jose, CA, USA. 524:Atkinson, Cy (2001). 357:DOS memory management 68:A0000–0xFFFFF) in an 42:DOS memory management 35: 179:with the release of 362:Conventional memory 341:conventional memory 337:640 KB barrier 123:upper memory blocks 64:and 1024 KB ( 38: 455:Comes v Microsoft 256:virtual 8086 mode 246:Virtual 8086 Mode 227:virtual 8086 mode 100:memory-mapped I/O 46:upper memory area 16:(Redirected from 569: 541: 540: 538: 537: 521: 515: 514: 512: 511: 496: 490: 488: 470: 469: 463: 448: 439: 430: 429: 427: 426: 412: 379:High Memory Area 139:high memory area 102:, and obsoleted 98:on peripherals, 21: 577: 576: 572: 571: 570: 568: 567: 566: 547: 546: 545: 544: 535: 533: 523: 522: 518: 509: 507: 498: 497: 493: 467: 465: 461: 446: 441: 440: 433: 424: 422: 414: 413: 409: 404: 373:Expanded memory 367:Extended memory 353: 307:address decoder 299: 286: 264:extended memory 260:expanded memory 252:extended memory 248: 243: 223:Windows 95 214: 143:DR DOS 5.0 135: 28: 23: 22: 15: 12: 11: 5: 575: 573: 565: 564: 559: 549: 548: 543: 542: 516: 491: 431: 420:wiki.osdev.org 406: 405: 403: 400: 399: 398: 393: 388: 382: 376: 370: 364: 359: 352: 349: 298: 295: 285: 282: 247: 244: 242: 241:Implementation 239: 213: 210: 134: 131: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 574: 563: 560: 558: 555: 554: 552: 531: 527: 520: 517: 505: 501: 495: 492: 487: 485: 480: 476: 460: 456: 452: 445: 438: 436: 432: 421: 417: 411: 408: 401: 397: 394: 392: 389: 386: 383: 380: 377: 374: 371: 368: 365: 363: 360: 358: 355: 354: 350: 348: 346: 342: 338: 334: 330: 326: 322: 317: 315: 311: 308: 304: 296: 294: 292: 283: 281: 279: 278: 273: 269: 265: 261: 257: 253: 245: 240: 238: 236: 232: 228: 224: 219: 211: 209: 207: 201: 199: 193: 191: 187: 182: 178: 173: 171: 167: 162: 160: 154: 152: 148: 144: 140: 132: 130: 128: 124: 120: 116: 112: 107: 105: 101: 97: 94:, video RAM, 93: 89: 85: 82: 78: 75: 71: 67: 63: 59: 55: 51: 47: 43: 34: 30: 19: 534:. Retrieved 519: 508:. Retrieved 494: 489:(1+32 pages) 472: 466:. Retrieved 423:. Retrieved 419: 410: 323:, an add-on 318: 300: 287: 275: 249: 215: 202: 194: 174: 170:AUTOEXEC.BAT 163: 158: 155: 136: 126: 122: 108: 60:of 640  56:between the 49: 45: 39: 29: 18:Upper memory 329:Lotus 1-2-3 218:Windows 3.0 119:Option ROMs 92:Option ROMs 551:Categories 536:2020-02-07 510:2020-02-07 468:2019-07-22 425:2020-12-20 402:References 284:Shadow RAM 181:MS-DOS 5.0 166:CONFIG.SYS 147:EMM386.EXE 115:Video BIOS 88:Video BIOS 475:DRDOS 5.0 451:Microsoft 291:real mode 198:OSI model 177:Microsoft 104:ROM BASIC 58:addresses 52:) is the 530:Archived 504:Archived 459:Archived 396:A20 line 391:LOADHIGH 387:(GEMMIS) 351:See also 314:RAM disk 186:MEMMAKER 333:patched 321:AllCard 270:). The 212:Windows 303:IBM XT 297:IBM XT 268:EMM386 206:MSCDEX 117:, the 113:, the 70:IBM PC 54:memory 44:, the 484:BradS 462:(PDF) 447:(PDF) 381:(HMA) 375:(EMS) 369:(XMS) 133:Usage 562:BIOS 319:The 310:PROM 151:QEMM 127:UMBs 111:BIOS 81:BIOS 74:8088 479:UMB 301:On 159:all 129:). 96:RAM 84:ROM 77:CPU 50:UMA 40:In 553:: 502:. 471:. 434:^ 418:. 345:MB 316:. 280:. 200:. 106:. 90:, 86:, 66:0x 62:KB 539:. 513:. 428:. 125:( 48:( 20:)

Index

Upper memory

DOS memory management
memory
addresses
KB
0x
IBM PC
8088
CPU
BIOS
ROM
Video BIOS
Option ROMs
RAM
memory-mapped I/O
ROM BASIC
BIOS
Video BIOS
Option ROMs
high memory area
DR DOS 5.0
EMM386.EXE
QEMM
CONFIG.SYS
AUTOEXEC.BAT
Microsoft
MS-DOS 5.0
MEMMAKER
terminate-and-stay-resident

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.