Операционные системы, среды и оболочки. Макаренко С.И. - 60 стр.

UptoLike

Составители: 

состоянии готовности. Параллельно программа обработки страничного
прерывания находит на диске требуемую виртуальную страницу (для этого
операционная система должна помнить положение вытесненной страницы в
страничном файле диска) и пытается загрузить ее в оперативную память.
Если в памяти имеется свободная физическая страница, то загрузка
выполняется немедленно, если же свободных страниц нет, то на основании
принятой в данной системе стратегии замещения страниц решается вопрос о
том, какую страницу следует выгрузить из оперативной памяти.
После того как выбрана страница, которая должна покинуть
оперативную память, обнуляется ее бит присутствия и анализируется ее
признак модификации. Если выталкиваемая страница за время последнего
пребывания в оперативной памяти была модифицирована, то ее новая версия
должна быть переписана на диск. Если нет, то принимается во внимание, что
на диске уже имеется предыдущая копия этой виртуальной страницы, и
никакой записи на диск не производится. Физическая страница объявляется
свободной. Из соображений безопасности в некоторых системах
освобождаемая страница обнуляется, с тем чтобы невозможно было
использовать содержимое выгруженной страницы.
3.5.2.2 Сегментное распределение
При страничной организации виртуальное адресное пространство
процесса делится на равные части механически, без учета смыслового
значения данных. Такой подход не позволяет обеспечить
дифференцированный доступ к разным частям программы, а это свойство
могло бы быть очень полезным во многих случаях. Кроме того, разбиение
виртуального адресного пространства на «осмысленные» части делает
возможным совместное использование фрагментов программ разными
процессами. При отображении в физическую память сегменты,
содержащие коды подпрограммы из обоих виртуальных пространств,
проецируются на одну и ту же область физической памяти. Таким образом
оба процесса получат доступ к одной и той же копии подпрограммы
(рис. 3.13).
Итак, виртуальное адресное пространство процесса делится на
части сегменты, размер которых определяется с учетом смыслового
значения содержащейся в них информации. Отдельный сегмент может
представлять собой подпрограмму, массив данных и т. п. Деление
виртуального адресного пространства на сегменты осуществляется
компилятором на основе указаний программиста или по умолчанию, в
соответствии с принятыми в системе соглашениями.
Максимальный размер сегмента определяется разрядностью
виртуального адреса. Сегменты не упорядочиваются друг относительно
друга, так что общего для сегментов линейного виртуального адреса не
60
состоянии готовности. Параллельно программа обработки страничного
прерывания находит на диске требуемую виртуальную страницу (для этого
операционная система должна помнить положение вытесненной страницы в
страничном файле диска) и пытается загрузить ее в оперативную память.
Если в памяти имеется свободная физическая страница, то загрузка
выполняется немедленно, если же свободных страниц нет, то на основании
принятой в данной системе стратегии замещения страниц решается вопрос о
том, какую страницу следует выгрузить из оперативной памяти.
     После того как выбрана страница, которая должна покинуть
оперативную память, обнуляется ее бит присутствия и анализируется ее
признак модификации. Если выталкиваемая страница за время последнего
пребывания в оперативной памяти была модифицирована, то ее новая версия
должна быть переписана на диск. Если нет, то принимается во внимание, что
на диске уже имеется предыдущая копия этой виртуальной страницы, и
никакой записи на диск не производится. Физическая страница объявляется
свободной. Из соображений безопасности в некоторых системах
освобождаемая страница обнуляется, с тем чтобы невозможно было
использовать содержимое выгруженной страницы.

                   3.5.2.2 Сегментное распределение

       При страничной организации виртуальное адресное пространство
процесса делится на равные части механически, без учета смыслового
значения     данных.   Такой   подход    не    позволяет    обеспечить
дифференцированный доступ к разным частям программы, а это свойство
могло бы быть очень полезным во многих случаях. Кроме того, разбиение
виртуального адресного пространства на «осмысленные» части делает
возможным совместное использование фрагментов программ разными
процессами. При отображении в физическую память сегменты,
содержащие коды подпрограммы из обоих виртуальных пространств,
проецируются на одну и ту же область физической памяти. Таким образом
оба процесса получат доступ к одной и той же копии подпрограммы
(рис. 3.13).
      Итак, виртуальное адресное пространство процесса делится на
части — сегменты, размер которых определяется с учетом смыслового
значения содержащейся в них информации. Отдельный сегмент может
представлять собой подпрограмму, массив данных и т. п. Деление
виртуального адресного пространства на сегменты осуществляется
компилятором на основе указаний программиста или по умолчанию, в
соответствии с принятыми в системе соглашениями.
      Максимальный размер сегмента определяется разрядностью
виртуального адреса. Сегменты не упорядочиваются друг относительно
друга, так что общего для сегментов линейного виртуального адреса не


                                   60