Операционные системы. Теория и практика. Замятин А.В. - 104 стр.

UptoLike

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

104
зовании сегментов.
При использовании дисциплины FIFO с каждым сегментом связы-
вается очередность его размещения в памяти. Для замещения выбирает-
ся сегмент, первым попавший в память. Каждый вновь размещаемый в
памяти сегмент добавляется в хвост этой очереди. В этом случае учиты-
вается только время нахождения сегмента в памяти, но не учитывается
фактическое использование сегментов. Например, первые загруженные
сегменты программы могут содержать переменные, требующиеся на
протяжении всей ее работы. Это приводит к немедленному возвраще-
нию к только что замещенному сегменту.
Для реализации дисциплин LRU и LFU необходимо, чтобы процес-
сор имел дополнительные аппаратные средства, обеспечивающие под-
держку реализации этих дисциплин. Минимальные требования доста-
точно, чтобы при обращении к дескриптору сегмента для получения фи-
зического адреса, с которого сегмент начинает располагаться в памяти,
соответствующий бит обращения менял свое значение (скажем, с нуле-
вого, которое устанавливает ОС, в единичное). Тогда диспетчер памяти
может время от времени просматривать таблицы дескрипторов испол-
няющихся задач и собирать для соответствующей обработки статисти-
ческую информацию об обращениях к сегментам. В результате можно
составить список, упорядоченный либо по длительности простоя ля
дисциплины LRU), либо по частоте использования (для дисциплины
LFU).
Защита памяти. Важнейшей проблемой, которая возникает при
организации мультипрограммного режима, является защита памяти. Для
того чтобы выполняющиеся приложения не смогли испортить саму ОС
и другие вычислительные процессы, необходимо, чтобы доступ к таб-
лицам сегментов с целью их модификации был обеспечен только для
кода самой ОС. Для этого код ОС должен выполняться в некотором
привилегированном режиме, из которого можно осуществлять манипу-
ляции дескрипторами сегментов, тогда как выход за пределы сегмента в
обычной прикладной программе должен вызывать прерывание по защи-
те памяти. Каждая прикладная задача должна иметь возможность обра-
щаться только к собственным и к общим сегментам.
При сегментном способе организации виртуальной памяти появля-
ется несколько интересных возможностей по оптимизации управления
памятью.
Во-первых, при загрузке программы на исполнение можно разме-
щать ее в памяти не целиком, а «по мере необходимости». Действитель-
но, поскольку в подавляющем большинстве случаев алгоритм, по кото-
рому работает код программы, является разветвленным, а не линейным,
то в зависимости от исходных данных некоторые части программы, рас-