Программа может управлять аппаратными средствами EMS— платы, в частности, она может связывать окно с различными участками отображаемой памяти. Таким образом, для использования отображаемой памяти программа должна указать, какую именно часть EMS— памяти связать с окном, и затем работать с данными по адресам отображаемого окна, т.е. по адресам выше 640 Кбайт (но, разумеется, ниже 1 Мбайт): при каждом обращении к окну аппаратура EMS— платы «подставляет» вместо несуществующей базовой памяти с этими адресами нужный участок отображаемой памяти.
Отображаемое окно использует EMS— память порциями по 16 Кбайт. Эти порции называются страницами. Одновременно в окне может отображаться от одной до четырех страниц. Таким образом, максимальная емкость окна не может превышать 64 Кбайт, в то время как максимальная емкость EMS— памяти составляет 32 Мбайт (2048 страниц).
Еще раз подчеркну, что наличие на Вашем ПК памяти за границей 1 Мбайт (обычно это легко выявляется в ходе автотестирования сразу после включения компьютера) еще не означает, что эта память — отображаемая. Главное отличие отображаемой памяти от дополнительной заключается в том, что первая может отображаться в адресное пространство до 1 Мбайта, а вторая — не может. Отображение реализуется аппаратным способом, поэтому для доступа к EMS— памяти компьютер, использующий процессор 80286 или более ранний (8088, 8086, V20 и т.п.), должен оснащаться специальной платой. Начиная с версии 4.0, операционная система MS-DOS поставляется с драйвером отображаемой памяти XMA2EMS.SYS и эмулятором EMM386.SYS. Последний на ПК с микропроцессорами 80386/80486 обеспечивает эмуляцию отображаемой памяти, т.е. программно реализует функции EMS— платы и преобразует дополнительную память в отображаемую.
5.2. ФУНКЦИИ ДРАЙВЕРА ОТОБРАЖАЕМОЙ ПАМЯТИ
Работа EMS— платы управляется специальным драйвером, который называется EMM (Expanded Memory Manager — администратор отображаемой памяти). Существует несколько версий EMM. В этом разделе описываются функции драйвера отображаемой памяти так, как они реализованы в EMM версии 4.0. Однако перед тем как рассматривать функции EMM, полезно обсудить некоторые подробности его работы.
Как уже говорилось, отображаемая память выделяется программе страницами по 16 Кбайт каждая. Эти страницы отображаются в окне, имеющем размеры 64 Кбайта, т.е. окно способно отобразить до четырех страниц одновременно. Условимся в дальнейшем называть страницы окна физическими, а страницы EMS— памяти логическими.
Поскольку логических страниц может быть гораздо больше физических, необходимо каким—то образом управлять процессом отображения в окне, т.е. устанавливать связи между окном и отображаемой памятью. Эта задача в EMM решается следующим образом. Для использования EMS— памяти программа должна создать так называемый дескриптор EMM. С дескриптором связывается одна или несколько (до 2048) логических