Zona de memorie superioară ( UMA ), blocuri de memorie superioară ( UMB ), memorie superioară informală - 384 kiloocteți de memorie , situată după memoria principală la adrese de la A0000 16 (640 KB) la FFFFF 16 (1024 KB, 1 MB). Caracteristica arhitecturilor IBM compatibile cu PC-uri .
IBM a rezervat zona de memorie superioară a computerului său IBM PC pentru placa de bază și accesorii ROM și RAM , precum și porturile I/O de intrare/ieșire mapate cu memorie. Această zonă de memorie se numește UMA și se află între adresele A0000 16 (640 KB) și FFFFF 16 (1 MB).
De exemplu, această zonă de memorie conține memoria RAM și ROM-ul unui adaptor video compatibil EGA și fereastra de afișare a memoriei extinse .
Memoria superioară este împărțită condiționat în trei zone de 128 KB fiecare. Alocarea implicită de memorie superioară arată astfel:
Într-un sistem real, nu toată zona de memorie rezervată (UMA) este alocată. Calculatoarele cu procesor 80386 și mai sus pot mapa memorie suplimentară pentru a elibera zonele UMA. Astfel, se formează blocuri de memorie superioare (Upper Memory Block, UMB), care pot fi plasate sub controlul OS și distribuite între aplicații.
MS-DOS 5.0 și versiunile ulterioare acceptă controlul UMB. Pentru a face acest lucru, include driverele HIMEM.SYS și EMM386.EXE (cu ajutorul cărora este afișată memoria suplimentară pe UMA în modul virtual 8086dos=umb ) și comenzile , devicehighși loadhigh. Pentru a mapa memoria suplimentară la UMA și pentru a activa funcțiile de gestionare UMB, adăugați următoarele linii la fișierul CONFIG.SYS :
dispozitiv=HIMEM.SYS device=EMM386.EXE NOEMS dos=UMB devicehigh = ... (acest driver va fi încărcat în UMB)Au existat, de asemenea, drivere pentru a mapa UMB umbră RAM în mod real folosind caracteristicile chipset-ului [1] [2] .
Programele rezidente pot fi încărcate în UMB folosind loadhigh. Cu toate acestea, nu toate aplicațiile funcționează corect atunci când sunt încărcate în UMB.
În plus, orice aplicație se poate transfera independent sau o parte din datele sale către UMB folosind funcția DOS 58xx.
Deoarece o aplicație poate ocupa mai multă memorie la pornire decât partea rezidentă, DOS alocă de obicei o dimensiune maximă de bloc. [3] Ca urmare, UMA este foarte fragmentată și chiar dacă cantitatea totală de memorie liberă în blocuri este mai mare decât este necesar, aplicația poate să nu se încadreze în niciun bloc liber. Pentru umplerea optimă a UMA, trebuie selectată ordinea de încărcare a driverelor și a programelor rezidente și se folosește sintaxa extinsă a comenzilor devicehighși loadhigh(cu care puteți specifica în ce bloc să încărcați programul).
Cuvânt englezesc . superior este de obicei tradus în rusă ca „sus” („situat în partea de sus” [4] ), dar cuvântul înalt poate fi tradus și ca „sus” (sau „înalt” - „situat în partea de sus” [5] ) . Multe inexactități sunt asociate cu aceasta la traducerea numelor Upper Memory Area (Upper Memory Block) și High Memory Area .
Drept urmare, ortografiile originale în limba engleză UMB și HMA continuă să fie folosite în literatura în limba rusă (abrevierea UMA practic nu a prins rădăcini).
În plus, comenzile devicehighși loadhigh, în ciuda cuvântului înalt în nume, încarcă programe în UMB, nu în HMA. DOS folosește HMA numai pentru a-și încărca nucleul (dacă este folosită comanda dos=highsau dos=high,umb).