High Memory Area , HMA - secțiunea inițială a memoriei suplimentare cu o capacitate de 65520 bytes (64 kilobytes minus 16 bytes) cu adrese de la 100000 16 la 10FFEF 16 (imediat după Upper Memory Area ), disponibilă în modul real prin segmentele superioare a spațiului de adrese. Caracteristica procesoarelor 80286 și superioare și computerelor compatibile IBM PC/AT construite pe acestea [1] .
Adresarea memoriei în procesoarele 8086 și 8088 este segmentată : adresa de memorie completă (liniară) este dată de un număr de segment de 16 biți ("paragraf") și un offset de 16 biți în acest segment (ambele numere sunt de obicei scrise în formă hexazecimală ) și se calculează prin formula
(segment) × 16 + (offset).(În acest caz, aceeași adresă poate fi obținută din diferite perechi de segmente/offset - de exemplu, adresa completă 1000 16 este disponibilă ca 0000:1000 și ca 0100:0000 și ca 0060:0A00).
Cu adresarea segmentului, sunt disponibile adrese liniare de la 0 (0000:0000) la 10FFEF 16 (FFFF:FFFF, 1088 KB). Cu toate acestea, magistrala de adrese a procesoarelor 808x este de 20 de biți și poate adresa doar 220 de octeți (1024 KB sau 1 MB) de memorie, adică o zonă cu adrese de la 0 la FFFFF 16 (0000:0000 la FFFF:000F). Adresele de la 100000 16 la 10FFEF 16 (de la FFFF:0010 la FFFF:FFFF) sunt pe 21 de biți, deci atunci când sunt utilizate, are loc o depășire , al 21-lea bit este pierdut și, de exemplu, adresa 100000 16 (FFFF:0010) indică același , unde și adresa 0 (0000:0000).
În procesorul 80286 , magistrala de adrese este pe 24 de biți (adresabilă 2 24 = 16 MB de memorie), astfel încât acestea să nu depășească.
Calculatoarele IBM PC / AT sunt construite pe procesorul 80286, dar din motive de compatibilitate cu IBM PC și IBM PC / XT , construite pe procesoare 808x, a fost introdus în ele un element logic ( poarta ), deconectând firul de a 21-a adresă (A20). ) din memoria circuitului de control. Acest element logic ( Gate A20 ( eng. A20 line )) este controlat prin controlerul tastaturii ( chip Intel 8042 ) și este activat implicit.
Mai recent, au fost dezvoltate programe driver , așa-numitul handler A20 , care gestionează dinamic adresarea și permit aplicațiilor care rulează în mod real să utilizeze o zonă de memorie între 1024 și 1088 KB.
HMA a fost folosit pentru prima dată în Windows 2.1 în 1988, iar funcția de gestionare A20 a fost realizată de driverul HIMEM.SYS de acolo .
În 1991, a fost lansat MS-DOS 5.0, care a putut să-și încarce nucleul în HMA, eliberând astfel 46 KB de memorie principală pentru aplicații. Versiunile ulterioare de MS-DOS acceptă, de asemenea, această caracteristică. Driverul HIMEM.SYS a fost inclus cu MS-DOS.
Pentru ca DOS să își încarce nucleul în HMA, trebuie să adăugați următoarele linii în fișierul CONFIG.SYS :
dispozitiv=HIMEM.SYS dos = mareAlte aplicații pot folosi HMA folosind funcțiile DOS sau direct prin funcțiile HIMEM.SYS, deși după mutarea nucleului DOS în HMA, aproape că nu mai rămâne spațiu liber acolo.
Cuvânt englezesc . superior este de obicei tradus în rusă ca „sus” („situat în partea de sus” [2] ), dar cuvântul înalt poate fi tradus și ca „sus” (sau „înalt” - „situat în partea de sus” [3] ) . Multe coliziuni 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).