TURBO PASCAL |
Новости
|
8.2.3. Виртуальная память и перемещение сегментовВ описывающих сегменты дескрипторах имеется признак того, находится ли сегмент в данный момент в оперативной памяти. Если программа обращается к сегменту, который не загружен в память, возникает аппаратное прерывание и управление передается резидентному ядру операционной системы, которая может загрузить образ этого сегмента с диска. Так реализуется механизм виртуальной памяти. Виртуальная память работает подобно оверлею и делает ненужным его использование в защищенном режиме. При загрузке дискового сегмента ОС проверяет наличие свободного пространства памяти. Если памяти недостаточно, ОС выгружает часть сегментов на диск1 и/или перемещает сегменты так, чтобы освободить требуемый объем. При перемещении сегмента соответствующим образом изменяется связанный с ним дескриптор, однако владеющая сегментом программа обычно не замечает этого изменения, т.к. для доступа к сегменту она использует селектор, указывающий на нужный дескриптор, а содержимое селектора не меняется. Если программа хочет получить доступ к конкретному физическому пространству памяти, она должна предварительно дать знать об этом ОС, которая в этом случае помечает сегмент как неперемещаемый. Такая процедура называется фиксацией сегмента. Фиксация обычно необходима при работе с кучей, т.к. только в этом случае связанный с кучей указатель может использоваться в качестве физического адреса. После завершения обмена данными с сегментом, программа должна снять фиксацию (разблокировать) сегмент, чтобы ОС смогла при необходимости его переместить или выгрузить на диск. ' Выгружаются на диск только сегменты данных. Д?ш сегментов кода вместо выгрузки операционная система помечает сегмент как свободный и использует его пространство для размещения дисковой памяти. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |