Górny obszar pamięci - Upper memory area

Górny obszar pamięci znajduje się między 640 KB a 1024 KB.

W zarządzaniu pamięcią DOS , górny obszar pamięci ( UMA ) odnosi się do pamięci między adresami od 640  KB do 1024 KB ( 0x A0000–0xFFFFF) w komputerze IBM PC lub kompatybilnym. IBM zarezerwował najwyższe 384 KB z 1024 KB przestrzeni adresowej procesora 8088 dla BIOS ROM , Video BIOS , opcjonalnych pamięci ROM , wideo RAM, RAM na urządzeniach peryferyjnych, odwzorowane w pamięci I / O i przestarzały ROM BASIC .

Jednak nawet z pamięcią RAM wideo, BIOS ROM- em , BIOS-em wideo , opcjonalnymi pamięciami ROM i portami I / O dla urządzeń peryferyjnych, większość z 384 KB przestrzeni adresowej była niewykorzystana. Ponieważ ograniczenie pamięci do 640 KB stawało się coraz bardziej przeszkodą, odkryto techniki wypełniania pustych obszarów pamięcią RAM. Obszary te były określane jako górne bloki pamięci ( UMB ).

Stosowanie

Kolejnym etapem ewolucji DOS było wykorzystanie przez system operacyjny górnych bloków pamięci (UMB) i obszaru wysokiej pamięci (HMA). Nastąpiło to wraz z wydaniem DR DOS 5.0 w 1990 roku. Wbudowany menedżer pamięci DR DOS, EMM386.EXE , mógł wykonywać większość podstawowych funkcji QEMM i podobnych programów.

Zaletą DR DOS 5.0 nad kombinacją starszego DOS-a i QEMM było to, że samo jądro DR DOS i prawie wszystkie jego struktury danych można było załadować do dużej pamięci. To pozostawiło wolną praktycznie całą pamięć podstawową, umożliwiając konfiguracje z wolnymi do 620 KB z 640 KB.

Konfiguracja nie była automatyczna - wolne UMB musiały być identyfikowane ręcznie, ręcznie dołączane do linii ładującej EMM386 z CONFIG.SYS , a następnie sterowniki i tak dalej trzeba było ręcznie ładować do UMB z CONFIG.SYS i AUTOEXEC.BAT . Ta konfiguracja nie była prostym procesem. Ponieważ był w dużej mierze zautomatyzowany przez program instalacyjny QEMM, program ten przetrwał na rynku; w rzeczywistości działał dobrze z własnym wsparciem HMA i UMB DR DOS-a i stał się jednym z najlepiej sprzedających się narzędzi dla komputerów PC.

Ta funkcjonalność została skopiowana przez Microsoft wraz z wydaniem MS-DOS 5.0 w czerwcu 1991 roku. Ostatecznie jeszcze więcej struktur danych DOS zostało przeniesionych z pamięci konwencjonalnej, pozwalając na pozostawienie wolnych 631 KB z 640 KB. Począwszy od wersji 6.0 MS-DOS, Microsoft włączył nawet program o nazwie MEMMAKER, który był używany do automatycznej optymalizacji pamięci konwencjonalnej poprzez przenoszenie programów TSR do pamięci górnej.

Przez pewien okres na początku lat 90. ręczna optymalizacja mapy pamięci DOS stała się wysoko cenioną umiejętnością, pozwalającą na uruchamianie największych aplikacji nawet na najbardziej złożonych konfiguracjach komputerów PC. Technika polegała na utworzeniu jak największej liczby UMB, w tym na ponowne mapowanie przydzielonych, ale nieużywanych bloków pamięci, takich jak monochromatyczny obszar wyświetlania na komputerach kolorowych. Następnie wiele podskładników DOS musiało zostać załadowanych do tych UMB w odpowiedniej kolejności, aby wykorzystać bloki pamięci tak wydajnie, jak to możliwe. Niektóre programy TSR wymagały dodatkowej pamięci podczas ładowania, która została ponownie zwolniona po zakończeniu ładowania. Na szczęście było kilka zależności między tymi modułami, więc można było je załadować w niemal dowolnej kolejności. Wyjątkiem było to, że aby z powodzeniem buforować dyski CD-ROM, większość pamięci podręcznych dysku musiała być ładowana po jakimkolwiek sterowniku CD-ROM, a moduły większości stosów sieciowych musiały być ładowane w określonej kolejności, zasadniczo pracując stopniowo przez warstwy Model OSI .

Podstawową, ale skuteczną metodą optymalizacji pamięci konwencjonalnej było załadowanie HIMEM.SYS jako urządzenia, a następnie załadowanie EMM386.EXE jako urządzenia z opcją „RAM AUTO”, która umożliwia dostęp do UMA poprzez załadowanie sterowników urządzeń jako devicehigh. Ta metoda skutecznie ładuje podstawowe menedżery pamięci do pamięci konwencjonalnej, a następnie wszystko inne do UMA. Konwencjonalne programy żarłoczne pamięci, takie jak MSCDEX, można również załadować do UMA w podobny sposób, uwalniając w ten sposób dużą ilość pamięci konwencjonalnej.

Windows

Rosnąca popularność systemu Windows 3.0 sprawiła, że ​​konieczność górnego obszaru pamięci była mniej istotna, ponieważ limity pamięci podstawowej DOS nie miały bezpośredniego wpływu na aplikacje Windows, ale programy DOS działające w systemie Windows (z samym systemem Windows działającym jako menedżer wielozadaniowości) nadal były w ten sposób ograniczony. Wraz z wydaniem systemu Windows 95 stało się to jeszcze mniej istotne, ponieważ ta wersja systemu Windows udostępnia wiele funkcji sterowników urządzeń DOS aplikacjom DOS działającym w systemie Windows, takich jak obsługa dysków CD, sieci i dźwięku; mapa pamięci skrzynek Windows 95 DOS została automatycznie zoptymalizowana. Jednak nie wszystkie programy DOS mogą działać w tym środowisku. W szczególności programy, które próbowały bezpośrednio przełączyć się z trybu rzeczywistego na tryb chroniony nie działałyby, ponieważ było to niedozwolone w wirtualnym trybie 8086, w którym były uruchomione. Ten punkt jest obecnie rozpatrywany przez technologie wirtualizacji x86 , takie jak Intel VT-x (Vanderpool ) i AMD-V (Pacifica). Ponadto programy, które próbowały dokonać przełączenia za pomocą interfejsu API Virtual Control Program Interface (VCPI) (które zostało wprowadzone, aby umożliwić programom DOS, które wymagały trybu chronionego, wejście do niego z wirtualnego trybu 8086 skonfigurowanego przez menedżera pamięci, jak opisano powyżej). Nie działa w systemie Windows 95. Obsługiwany był tylko interfejs API trybu chronionego DOS (DPMI) do przełączania w tryb chroniony.

Realizacja

Wirtualny tryb 8086

Górne bloki pamięci można tworzyć, mapując pamięć rozszerzoną do górnego obszaru pamięci podczas pracy w trybie wirtualnym 8086 . Jest to podobne do tego, jak rozszerzona pamięć może być emulowane stosując rozszerzoną pamięć więc ta metoda dostarczania górne bloki pamięci są zazwyczaj dostarczane przez menedżera pamięci rozszerzonej (na przykład EMM386 ). Interfejs programowania aplikacji do zarządzania górne bloki pamięci jest określony w eXtended Memory Specification .

Cień RAM

W wielu systemach, w tym nowoczesnych, możliwe jest użycie pamięci zarezerwowanej dla shadowania ROM karty rozszerzeń jako pamięci górnej. Wiele chipsetów rezerwuje w tym celu do 384 KB pamięci RAM, a ponieważ ta pamięć RAM jest generalnie nieużywana, może być używana jako pamięć górna trybu rzeczywistego z niestandardowym sterownikiem urządzenia, takim jak UMBPCI.

IBM XT

Na komputerach IBM XT można było dodać więcej pamięci do płyty głównej i użyć niestandardowego dekodera adresu PROM, aby pojawił się w górnym obszarze pamięci. Podobnie jak w przypadku opisanej powyżej górnej pamięci opartej na 386, dodatkowa pamięć RAM może być używana do ładowania plików TSR lub jako dysk RAM .

AllCard , dodatek jednostka zarządzania pamięcią dla komputerów XT-klasowych dozwolone normalną pamięć być odwzorowany w zakresie adresów 0xA0000-EFFFF, dając maksymalnie 952 KB dla programów DOS. Programy takie jak Lotus 1-2-3 , które uzyskiwały bezpośredni dostęp do pamięci wideo, wymagały zastosowania poprawek, aby obsłużyć ten układ pamięci. Dlatego bariera 640 KB została usunięta kosztem kompatybilności oprogramowania. To użycie górnego obszaru pamięci różni się od użycia górnych bloków pamięci, które były używane do zwalniania pamięci konwencjonalnej poprzez przenoszenie sterowników urządzeń i TSR do górnych 384 KB przestrzeni adresowej 1  MB , ale pozostawiały ilość pamięci adresowalnej (640 KB ) nienaruszone.

Zobacz też

Bibliografia