T: Mapa pamięci dla programów DOS.

Pierwszy IBM PC dysponował pamięcią o pojemności 64 KB (niektóre źródła podają 16 KB).

Pamięć operacyjna komputera podzielona jest na kilka obszarów. Wyróżniamy następujące obszary pamięci:

Głównym celem organizacji pamięci jest pozostawienie jak najwięcej wolnej pamięci podstawowej (conventional memory).

T: Programy do zarządzania pamięcią.

HIMEM.SYS - jest programem do obsługi pamięci operacyjnej, pozwalającym przenosić inne programy do pamięci rozszerzonej, w celu zwolnienia pamięci podstawowej. Program konfiguruje pamięć powyżej pierwszego MB w taki sposób, aby spełniała specyfikację XMS. Również udostępnia pierwsze 64 KB drugiego MB pamięci jako obszar pamięci wysokiej (HMA). Program uruchamiamy z pliku config.sys poprzez następujący wpis:

EMM386.EXE - program do organizacji pamięci w komputerach 386 i 486. Mapuje pamięć XMS (z pamięci zarządzanej przez himem.sys) w niewykorzystane fragmenty obszaru adresowego UMA. Dzięki temu do UMA ładowane są programy DOS (pracujące w trybie rzeczywistym). Wywoływany w drugiej linii, z pamięci operacyjnej wydzielone zostaną 2 MB pamięci rozszerzonej. Program uruchamiamy z pliku config.sys poprzez następujący wpis:

Programy systemu MS-DOS wymagają pewnej ilości pamięci konwencjonalnej nawet po uruchomieniu w systemie Windows. Uruchomiony program systemu MS-DOS, który wymaga więcej pamięci konwencjonalnej niż dostępna aktualnie w komputerze, może działać niepoprawnie lub w ogóle nie działać albo wyświetlić komunikat o błędzie sygnalizujący, że nie ma wystarczającej ilości pamięci do jego uruchomienia. W takim wypadku trzeba ponownie skonfigurować komputer, aby udostępnić więcej pamięci konwencjonalnej.

Zadanie:
Odwiedź następującą witrynę internetową:

Aby określić ilość pamięci konwencjonalnej, która jest aktualnie dostępna dla programów systemu MS-DOS, należy wpisać poniższe polecenie w wierszu polecenia, nacisnąć klawisz ENTER, a następnie odczytać wartość z wiersza Rozmiar największego wykonywalnego programu:

Jeśli wartość w wierszu Rozmiar największego wykonywalnego programu jest mniejsza od ilości pamięci konwencjonalnej wymaganej przez program systemu MS-DOS, który należy uruchomić, program może nie działać poprawnie lub w ogóle nie działać do momentu zmiany konfiguracji komputera. Aby określić ilość pamięci konwencjonalnej wymaganej przez określony program systemu MS-DOS, zajrzyj do dokumentacji dołączonej do programu lub skontaktuj się z jego producentem.

Ładowanie sterowników i programów do pamięci górnej
Aby załadować sterowniki i programy rezydentne z pliku config.sys lub autoexec.bat do pamięci górnej, należy upewnić się, że plik config.sys zawiera wiersze podobne do poniższych (w podanej kolejności):

Następnie należy spróbować załadować sterowniki urządzeń w pliku config.sys za pomocą polecenia DEVICEHIGH zamiast polecenia DEVICE. Trzeba także spróbować załadować programy rezydentne w pliku Autoexec.bat przy użyciu polecenia LOADHIGH.

UWAGA!
Jeżeli komputer jest tak skonfigurowany, że dostępna jest pamięć rozszerzona typu expanded, a plik Mscdex.exe jest ładowany z pliku autoexec.bat, można załadować część pliku Mscdex.exe do pamięci rozszerzonej typu expanded, wykorzystując przełącznik /E wiersza polecenia programu Mscdex.exe.

Procesory 8086 i 8088, w które były wyposażone komputery IBM PC i PC/XT, dysponowały 20-bitową magistralą adresową. Cała fizyczna przestrzeń adresowa była wykorzystana - 640 KiB na pamięć RAM, 320 KiB na dodatkowe obszary pamięci kart rozszerzających (w tym bufor ramki) i 64 KiB na pamięć ROM.

Rozszerzona (ang. extended) pamięć dostępna była wyłącznie w nadzorowanym (chronionym, ang. protected) trybie pracy mikroprocesora, niezgodnym z 8086. Tryb zgodności, nazwany rzeczywistym (ang. real), obarczony był megabajtowym limitem fizycznej przestrzeni adresowej.

Bardzo często odnosząc się do słowa maszynowego nowoczesnego komputera odnosi się także do wirtualnych adresów pamięci. Na przykład, komputer, o którym mówi się "32-bitowy" traktuje pamięć jako zestaw wartości 32-bitowych; Komputer adresujący bajtowo mogąc na jeden adres przeznaczyć 32-bity może mieć przestrzeń adresową wielkości 232 = 4294967296 bajtów, czyli 4 gigabajty. Starsze komputery często obsługiwały adresy większe od ich słowa maszynowego, W przeciwnym razie ich pamięć byłaby nierozsądnie mała. Na przykład 8-bitowy 6502 obsługuje adresy 16-bitowe. W przeciwnym wypadku pamięć miałaby rozmiar 256 bajtów. Podobnie, 16-bitowy Intel 8086 obsługuje adresy 20-bitowe mogąc zaadresować 1 megabajt, a nie 64 kilobajty. Komputer 64-bitowy może zaadresować 264 bajtów (16 exabajtów), ilość pamięci uważana za praktycznie nieskończoną.