Zona de memorie superioară - Upper memory area

Image
Zona de memorie superioară este situată între 640 KB și 1024 KB.

În gestionarea memoriei DOS , zona de memorie superioară ( UMA ) se referă la memoria dintre adresele de 640  KB și 1024 KB ( 0x A0000–0xFFFFF) într-un computer IBM sau compatibil. IBM a rezervat cei 384 KB superiori ai spațiului de adresă de 1024 KB al procesorului 8088 pentru BIOS ROM , Video BIOS , Option ROM , RAM video, RAM pe periferice, I / O mapate în memorie și ROM BASIC învechit .

Cu toate acestea, chiar și cu RAM video, BIOS-ul ROM , BIOS-ul video , ROM-urile opționale și porturile I / O pentru periferice, o mare parte din acest 384 KB de spațiu de adrese a fost neutilizat. Pe măsură ce restricția de memorie de 640 KB a devenit tot mai mult un obstacol, s-au găsit tehnici pentru a umple zonele goale cu RAM. Aceste zone au fost denumite blocuri de memorie superioare ( UMB ).

Utilizare

Următoarea etapă a evoluției DOS a fost ca sistemul de operare să utilizeze blocuri de memorie superioare (UMB) și zona de memorie înaltă (HMA). Acest lucru a avut loc odată cu lansarea DR DOS 5.0 în 1990. Managerul de memorie încorporat al DR DOS, EMM386.EXE , ar putea realiza majoritatea funcționalităților de bază ale QEMM și ale programelor comparabile.

Avantajul DR DOS 5.0 față de combinația unui DOS mai vechi plus QEMM a fost că nucleul DR DOS în sine și aproape toate structurile sale de date ar putea fi încărcate în memorie mare. Acest lucru a lăsat practic toată memoria de bază liberă, permițând configurații cu până la 620 KB din 640 KB liberi.

Configurarea nu a fost automată - UMB-urile gratuite trebuiau identificate manual, incluse manual în linia care încărcau EMM386 din CONFIG.SYS , iar apoi driverele și așa mai departe trebuiau încărcate manual în UMB-uri de la CONFIG.SYS și AUTOEXEC.BAT . Această configurație nu a fost un proces banal. Deoarece a fost automatizat în mare parte de programul de instalare QEMM, acest program a supraviețuit pe piață; într-adevăr, a funcționat bine cu suportul HMA și UMB al DR DOS și a devenit unul dintre cele mai bine vândute utilitare pentru computer.

Această funcționalitate a fost copiată de Microsoft odată cu lansarea MS-DOS 5.0 în iunie 1991. În cele din urmă, chiar mai multe structuri de date DOS au fost mutate din memoria convențională, permițând până la 631 KB din 640 KB să fie lăsați liberi. Începând de la versiunea 6.0 a MS-DOS, Microsoft a inclus chiar și un program numit MEMMAKER care a fost folosit pentru a optimiza automat memoria convențională prin mutarea programelor TSR în memoria superioară.

Pentru o perioadă de la începutul anilor 1990, optimizarea manuală a hărții de memorie DOS a devenit o abilitate foarte apreciată, permițând ca cele mai mari aplicații să ruleze chiar și pe cele mai complexe configurații de PC. Tehnica a fost de a crea mai întâi cât mai multe UMB-uri posibil, inclusiv remaparea blocurilor de memorie alocate dar neutilizate, cum ar fi zona de afișare monocromă pe mașinile color. Apoi, mulți subcomponenți ai DOS au trebuit să fie încărcați în aceste UMB-uri în secvența corectă pentru a utiliza blocurile de memorie cât mai eficient posibil. Unele programe TSR au necesitat memorie suplimentară în timpul încărcării, care a fost eliberată din nou după finalizarea încărcării. Din fericire, existau puține dependențe între aceste module, astfel încât a fost posibil să le încărcați în aproape orice secvență. Excepțiile au fost că pentru a ascunde cu succes CD-ROM-urile, majoritatea cache-urilor de disc trebuiau încărcate după orice driver de CD-ROM și că modulele majorității stivelor de rețea trebuiau încărcate într-o anumită secvență, funcționând în mod progresiv în sus prin straturile Model OSI .

O metodă de bază, dar eficientă, utilizată pentru a optimiza memoria convențională a fost încărcarea HIMEM.SYS ca dispozitiv, ulterior încărcând EMM386.EXE ca dispozitiv cu opțiunea „RAM AUTO”, care permite accesul în UMA prin încărcarea driverelor de dispozitiv ca dispozitiv înalt. Această metodă încarcă în mod eficient administratorii de memorie fundamentali în memoria convențională și, ulterior, orice altceva în UMA. Programele convenționale de memorie cum ar fi MSCDEX ar putea fi, de asemenea, încărcate în UMA într-un mod similar, eliberând astfel o cantitate mare de memorie convențională.

Windows

Popularitatea crescândă a Windows 3.0 a făcut ca necesitatea zonei de memorie superioară să fie mai puțin relevantă, deoarece aplicațiile Windows nu au fost afectate direct de limitele de memorie de bază ale DOS, dar programele DOS care rulează sub Windows (Windows însuși acționând ca un manager de multitasking) erau încă astfel constrâns. Odată cu lansarea Windows 95 , a devenit încă mai puțin relevantă, deoarece această versiune de Windows oferă o mare parte din funcționalitatea driverelor de dispozitiv DOS pentru aplicațiile DOS care rulează sub Windows, cum ar fi suportul CD, rețea și sunet; harta de memorie a casetelor DOS Windows 95 a fost optimizată automat. Cu toate acestea, nu toate programele DOS ar putea executa în acest mediu. Mai exact, programele care au încercat să treacă direct de la modul real la modul protejat nu ar funcționa, deoarece acest lucru nu era permis în modul virtual 8086 în care se executa. Acest punct este acum abordat de tehnologiile de virtualizare x86 , cum ar fi Intel VT-x (Vanderpool ) și AMD-V (Pacifica). De asemenea, programele care au încercat să facă schimbarea folosind API-ul Virtual Control Program Interface (VCPI) (care a fost introdus pentru a permite programelor DOS care aveau nevoie de modul protejat să-l introducă din modul virtual 8086 configurat de un manager de memorie, așa cum este descris mai sus) Nu funcționează în Windows 95. Doar API-ul DOS Protected Mode Interface (DPMI) pentru trecerea la modul protejat a fost acceptat.

Implementare

Mod 8086 virtual

Blocurile de memorie superioare pot fi create prin maparea memoriei extinse în zona de memorie superioară atunci când rulează în modul virtual 8086 . Acest lucru este similar cu modul în care memoria extinsă poate fi emulată folosind memoria extinsă, astfel încât această metodă de furnizare a blocurilor de memorie superioară este de obicei furnizată de managerul de memorie extinsă (de exemplu EMM386 ). Interfața de programare a aplicațiilor pentru gestionarea blocurilor de memorie superioară este specificată în eXtended caietul de sarcini de memorie .

Umbra RAM

Pe multe sisteme, inclusiv cele moderne, este posibil să utilizați memoria rezervată pentru umbrirea ROM-ului cardului de expansiune ca memorie superioară. Multe chipset-uri rezervă până la 384 KB RAM în acest scop și întrucât această memorie RAM este în general neutilizată, aceasta poate fi utilizată ca memorie superioară în modul real cu un driver de dispozitiv personalizat, cum ar fi UMBPCI.

IBM XT

Pe computerele IBM XT , a fost posibil să adăugați mai multă memorie la placa de bază și să utilizați un decodor de adresă personalizat PROM pentru a face să apară în zona de memorie superioară. La fel ca în memoria superioară bazată pe 386 descrisă mai sus, memoria RAM suplimentară ar putea fi utilizată pentru a încărca fișiere TSR sau ca disc RAM .

AllCard , un add-on unitate de management de memorie pentru calculatoare XT-clasă, a permis memoria normală să fie mapat în intervalul de adrese 0xA0000-EFFFF, oferind până la 952 KB pentru programele DOS. Programe precum Lotus 1-2-3 , care au accesat direct memoria video, au trebuit corecționate pentru a gestiona acest aspect de memorie. Prin urmare, bariera de 640 KB a fost eliminată în detrimentul compatibilității software. Această utilizare a zonei de memorie superioară este diferită de utilizarea blocurilor de memorie superioare, care a fost utilizată pentru a elibera memoria convențională prin mutarea driverelor de dispozitiv și a TSR-urilor în 384 KB din spațiul de adrese de 1  MB , dar a lăsat cantitatea de memorie adresabilă (640 KB ) intact.

Vezi si

Referințe