Expanded Memory Specification

EMS (ang. Expanded Memory Specification, EMS) – specyfikacja dostępu do pamięci poszerzonej (ang. expanded memory), czyli o adresach ponad 1 MB, w systemie operacyjnym DOS na komputerach wyposażonych w procesor 80286 lub nowszych.

Ilustracja mechanizmu EMS

Pamięć poszerzona (dodatkowa) była to pamięć o adresie fizycznym większym od 1MB, niedostępna wprost w przestrzeni adresowej w trybie rzeczywistym pracy procesora 80286. Dostęp do niej był realizowany przez mechanizm okna. Okno, o rozmiarze 64 kB, znajdowało się w przestrzeni adresowej procesora, w obszarze 640 kB - 1 MB, i był w nim odwzorowany fragment pamięci dodatkowej – program miał więc w danej chwili dostęp tylko do 64 kB tego typu pamięci. Okno nosiło też nazwę ramki stron z powodu tego, iż składało się z czterech 16 kB obszarów pamięci, w których można było niezależnie odwzorować strony pamięci poszerzonej bądź pozostawić je puste. Jednym z ograniczeń korzystania z pamięci EMS był fakt, że mogła być ona stosowana tylko do przechowywania danych, natomiast kod programu mógł być umieszczony wyłącznie w pamięci konwencjonalnej.

Aby w oknie został odwzorowany inny fragment pamięci EMS, program musiał odwołać się do sterownika, który zmieniał odwzorowanie stron. Ten zabieg pozwalał programom na wykorzystanie pamięci o wielkości większej od 1 MB do własnych celów.

Specyfikacja EMS, która powstała by ujednolicić interfejs programowy sterowników (dostęp do usług EMS jest realizowany przez przerwanie 67h), została ogłoszona w 1988 roku przez firmy Lotus, Intel i Microsoft – stąd też do określenia tego rodzaju pamięci często stosowany jest skrót LIM EMS.

W systemie MS-DOS, począwszy od wersji 5.00, dostarczany był standardowo sterownik o nazwie EMM386.EXE. Jego zadaniem była emulacja pamięci EMS w pamięci XMS, ponieważ w systemach komputerowych na bazie procesora 80386 możliwe było przejście do trybu chronionego procesora, dostęp do i wymiana stron pamięci w oknie oraz powrót do trybu rzeczywistego - w procesorze 80286 powrót do trybu rzeczywistego był możliwy tylko poprzez reset procesora.

Zobacz też edytuj