Upper Memory Area ( UMA ), Upper Memory Blocks ( UMB ), informally the upper memory is 384 kilobytes of memory located after the main memory at addresses from А0000 16 (640 Kb) to FFFFF 16 (1024 Kb, 1 Mb). Feature of the architecture of the IBM PC .
Content
Description
IBM has reserved the upper memory area of its IBM PC computer for ROM of the motherboard and additional devices and RAM , as well as I / O ports, addressed as memory (Memory-Mapped Input / Output). This memory area is called UMA and is located between the addresses A0000 16 (640 KB) and FFFFF 16 (1 MB).
For example, in this memory area are the RAM and ROM of an EGA- compatible video adapter and a display window for extended memory .
The upper memory is conditionally divided into three areas of 128 KB. The standard allocation of the upper memory looks like this:
- A0000h ... BFFFFh - reserved for video memory , most often it is not fully used.
- C0000h ... DFFFFh - reserved for BIOS adapters (Adapter ROM, Adapter RAM).
- E0000h ... FFFFFh - reserved for the use of the system BIOS, but in most cases it is not fully used (the last 64 Kbytes are most often occupied).
Usage
In a real system, not all of the reserved memory area (UMA) is allocated. Computers with an 80386 processor or higher are able to map additional memory to free UMA sections. Thus, upper memory blocks (UMB) are formed, which can be given under the control of the OS and distributed between applications.
MS-DOS 5.0 and higher supports UMB management. To do this, it includes the HIMEM.SYS and EMM386.EXE drivers (with the help of which additional memory is displayed in virtual 8086 mode on UMA) and the dos=umb , devicehigh and loadhigh . To map additional memory to UMA and activate the UMB management functions, add the following lines to the CONFIG.SYS file:
device = HIMEM.SYS
device = EMM386.EXE
dos = UMB
devicehigh = ... (this driver will be loaded into UMB)
There were also drivers for displaying in UMB shadow RAM in real processor mode using the chipset functions [1] [2] .
Resident programs can be loaded into UMB using loadhigh . However, not all applications work correctly when loaded in UMB.
In addition, any application can independently transfer itself or part of its data to UMB, using the DOS 58xx function.
Since the application may take up more memory during loading than its resident part, in DOS, as a rule, a block of maximum size is allocated. [3] As a result, UMA turns out to be highly fragmented, and even if the total amount of free memory in blocks is more than necessary, the application may not fit in any free blocks. To optimally fill UMA, the loading order of drivers and resident programs should be selected and the extended syntax of the devicehigh and loadhigh (with which you can specify which block to load the program into).
Title confusion
Word eng. upper is usually translated into Russian as “upper” (“located above” [4] ), but the word high can also be translated as “upper” (or “high” - “located above” [5] ). Many inaccuracies are associated with the translation of the names Upper Memory Area (Upper Memory Block) and High Memory Area .
As a result, the original English spellings - UMB and HMA (the abbreviation UMA practically did not take root) continue to be used in Russian-language literature.
In addition, the devicehigh and loadhigh , despite the word high in the name, load programs into UMB, not HMA. HMA DOS uses only to boot its kernel (if the dos=high or dos=high,umb command is used).
Notes
- ↑ UMBPCI - a hardware UMB driver for DOS and Win95
- ↑ Index of / scene96-2 / misc / utilz / rdosumb
- ↑ There are fields in the header of .EXE files for indicating the minimum and maximum requested memory; when loading a program, DOS selects the largest block for it, whose size is between these two values. But, as a rule, in the maximum memory field there is a value indicating the allocation of all available memory, and in this case, DOS does not limit the size of allocated blocks. .COM files do not have a header, so the requirement for a maximum block of program memory in this format is implied.
- ↑ upper (unavailable link) (unavailable link from 06/14/2016 [1132 days]) in Yandex.dictionaries
- ↑ high (unavailable link) (unavailable link from 06/14/2016 [1132 days]) in Yandex.dictionaries