Операционная система Microsoft Windows 3.1 для программиста -том 3

       

Модели памяти


Для приложений Windows вы можете выбрать одну из четырех моделей памяти: small, medium, compact или large.

Все приложения, рассмотренные нами ранее, были подготовлены в модели памяти small. Для этой модели при загрузке приложения в память создается два сегмента - сегмент кода и автоматический сегмент данных. Перед тем как передать управление приложению, Windows записывает адрес сегмента кода в регистр CS, адрес автоматического сегмента данных - в регистры DS и SS. Таким образом, в этой модели памяти для стека и автоматического сегмента данных используется один и тот же сегмент.

Сегмент кода, так же как и сегмент данных, может быть перемещаемым и удаляемым. Соответствующие атрибуты указываются в файле определения модуля при помощи операторов CODE и DATA:

CODE preload moveable discardable DATA preload moveable multiple

Удаляемые сегменты кода при необходимости автоматически загружаются из соответствующего файла приложения, так что программисту не надо самостоятельно восстанавливать сегмент кода после того как он был удален операционной системой.

Для сложных приложений Windows удобно использовать модель памяти medium, в которой создается один сегмент данных и несколько сегментов кода. Однако вызов дальней функции (а в модели памяти medium все функции вызываются как дальние) выполняется дольше, чем в MS-DOS. Это связано с наличием в Windows механизма перемещения сегментов.

Чаще, однако, работают со смешанными моделями памяти, используя при описании функций и данных ключевые слова FAR и NEAR. Заметим, что даже если ваше приложение было подготовлено в модели памяти small, оно на самом деле пользуется смешанной моделью памяти, так как все функции программного интерфейса Windows определены как дальние.

Вы можете также использовать модели памяти compact (один сегмент кода и несколько сегментов данных) и large (несколько сегментов кода и несколько сегментов данных). Но для этих моделей есть одно существенное ограничение - можно запускать только одну копию приложения, созданного с использованием таких моделей памяти.

Содержание раздела