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

UptoLike

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

105
положенные в самостоятельных сегментах, могут быть не задействова-
ны, а значит их можно и не загружать в ОП.
Во-вторых, некоторые программные модули, являющиеся сегмен-
тами, могут быть разделяемыми, поэтому относительно легко организо-
вать доступ к таким общим сегментам. Сегмент с разделяемым кодом
располагается в памяти в единственном экземпляре, а в нескольких таб-
лицах дескрипторов сегментов исполняющихся задач будут находиться
только указатели на такие разделяемые сегменты.
Однако у сегментного способа распределения памяти есть и недо-
статки. Согласно схеме доступа к искомой ячейке памяти, представлен-
ной на рис. 28, сначала необходимо найти и прочитать дескриптор сег-
мента, а уже потом, используя полученные данные о местонахождении
нужного сегмента, вычислить конечный физический адрес, что требует
времени. Для того чтобы уменьшить эти временные потери использует-
ся кэширование, то есть размещение в сверхоперативной памяти (специ-
альных регистрах, размещаемых в процессоре) тех дескрипторов, с ко-
торыми идет работа в текущий момент.
Пример использования. Примером использования сегментного
способа организации виртуальной памяти является ОС OS/2 первого по-
коления, которая была создана для персональных компьютеров на базе
процессора i80286. В этой ОС в полной мере использованы аппаратные
средства микропроцессора, который специально проектировался для
поддержки сегментного способа распределения памяти. Система OS/2
v.l поддерживала распределение памяти, при котором выделялись сег-
менты программы и сегменты данных. Система позволяла работать как с
именованными, так и с неименованными сегментами. Имена разделяе-
мых сегментов данных имели ту же форму, что и имена файлов. Про-
цессы получали доступ к именованным разделяемым сегментам, ис-
пользуя их имена в специальных системных вызовах. Операционная си-
стема OS/2 v.1 допускала разделение программных сегментов приложе-
ний и подсистем, а также глобальных сегментов данных подсистем. Во-
обще, вся концепция системы OS/2 была построена на понятии разделе-
ния памяти: процессы почти всегда разделяют сегменты с другими про-
цессами. В этом состояло существенное отличие системы OS/2 от си-
стем типа Unix, которые обычно разделяют только реентерабельные
программные модули между процессами.
Сегменты, которые активно не использовались, могли выгружаться
на жесткий диск. Система восстанавливала их, когда в этом возникала
необходимость. Учитывая то, что все области памяти, используемые
сегментом, должны были быть непрерывными, OS/2 перемещала в ос-
новной памяти сегменты таким образом, чтобы максимизировать объем
свободной физической памяти (осуществляла уплотнение памяти). Об-