Extended Memory Specification

XMS (ang. Extended Memory Specification) – specyfikacja dostępu do pamięci rozszerzonej (ang. extended memory, znajdującej się powyżej 1 MB) w programach pracujących w systemie operacyjnym DOS na komputerach wyposażonych w procesor 80286 lub wyższy. XMS definiował również dostęp do pamięci HMA, w tym umożliwiał sterowanie linią adresową A20 - więcej na ten temat w artykule Tryb rzeczywisty.

Aby program mógł wykorzystywać pamięć rozszerzoną wymagana jest obecność sterownika, który będzie realizował żądania programu (np. przydział bloku pamięci, zwolnienie bloku pamięci itp.). Dostęp do funkcji sterownika jest możliwy przez przerwanie programowe o numerze 2Fh. Z systemem MS-DOS, począwszy od wersji 4.00, dostarczany był standardowo sterownik o nazwie HIMEM.SYS, który był ładowany do pamięci poprzez wpis w pliku systemowym CONFIG.SYS. Wiele programów napisanych dla systemu MS-DOS korzystało ze sterownika pamięci rozszerzonej, były to między innymi programy użytkowe, gry, a nawet systemy operacyjne Microsoft Windows w wersjach 2.1 - Me. Te ostatnie przydzielały sobie całą dostępna pamięć rozszerzoną, by same nią zarządzać i alokować dla procesów uruchamianych w tychże środowiskach graficznych.

Wersja druga tej specyfikacji została przedstawiona w roku 1988 przez grupę firm: Microsoft, Lotus, Intel oraz AST Research. Wersja trzecia specyfikacji została opublikowana w roku 1991. Głównymi zmianami było dodanie funkcji obsługujących 32-bitową przestrzeń adresową procesora 80386, gdyż wcześniej można było zaadresować jedynie 64 MB pamięci rozszerzonej.

Specyfikacja XMS miała za zadanie, podobnie jak specyfikacja EMS, udostępnić więcej pamięci dla programów uruchamianych w systemie DOS. Przy czym w systemach z procesorem 80386 i nowszych można było emulować pamięć EMS w pamięci XMS wykorzystując do tego celu sterownik EMM386.EXE. Istnieją jednak pewne różnice w zarządzaniu pamięcią XMS przez sterowniki HIMEM.SYS i EMM386.EXE. Do najważniejszych z nich należą możliwości, przez pierwszy z wymienionych sterowników, alokowania bloków pamięci o różnych rozmiarach, kopiowania bloków między pamięcią konwencjonalną (od prawie dowolnego adresu) a rozszerzoną, zwalniania bloków pamięci i redefiniowania ich rozmiarów.

Zobacz też

edytuj

Linki zewnętrzne

edytuj