Защищенный режим процессоров Intel


Виртуальная память в процессоре i80286 - часть 2


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

Процессор может оказать помощь операционной системе в определении тех сегментов, к которым было обращение. Для этих сегментов бит обращения A устанавливается процессором в 1. Сбросить бит обращения можно только из программы, поэтому такая работа возлагается на саму операционную систему.

Реально описанная выше схема реализации виртуальной памяти со свопингом сегментов используется в операционной системе OS/2 версий от 1.0 до 1.3 включительно.

Однако у этой схемы есть один серьёзный недостаток. Так как все сегменты имеют разные размеры, и все они подкачиваются по очереди (и по несколько штук) в одну область физической памяти, возможно возникновение фрагментации физической памяти. Например, был удалён сегмент размером в 10 килобайт, и образовался свободный участок физической памяти такого же размера. Новый сегмент, который требуется закачать в память, имеет размер 15 килобайт, и он не поместится на место старого.

Операционная система может выполнить перемещение сегментов в физической памяти, изменив соответствующим образом 24-битовые базовые адреса сегментов в таблицах дескрипторов. После перемещения сегментов можно объединить все свободные участки памяти в один и использовать этот участок для загрузки нового сегмента. Так как программы защищённого режима не знают физических адресов памяти (они работают только с селекторами), перемещение сегментов никак не отразится на их работе.

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

Все эти возможности имеются только в процессорах i80386 и i80486. Только эти процессоры позволяют эффективно реализовать механизм виртуальной памяти.




Начало  Назад  Вперед



Книжный магазин