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

UptoLike

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

Координаты байта в виртуальном адресном пространстве при
сегментно-страничной организации можно задать двумя способами:
- Во-первых, линейным виртуальным адресом, который равен сдвигу
данного байта относительно границы общего линейного
виртуального пространства,
- во-вторых, парой чисел, одно из которых является номером
сегмента, а другое смещением относительно начала сегмента.
При этом в отличие от сегментной модели, для однозначного
задания виртуального адреса вторым способом необходимо каким-
то образом указать также начальный виртуальный адрес сегмента с
данным номером.
Системы виртуальной памяти ОС с сегментно-страничной
организацией используют второй способ, так как он позволяет
непосредственно определить принадлежность адреса некоторому сегменту и
проверить права доступа процесса к нему.
Для каждого процесса операционная система создает отдельную
таблицу сегментов, в которой содержатся описатели (дескрипторы) всех
сегментов процесса. Описание сегмента включает назначенные ему права
доступа и другие характеристики, подобные тем, которые содержатся в
дескрипторах сегментов при сегментной организации памяти. Однако
имеется и принципиальное отличие. В поле базового адреса указывается не
начальный физический адрес сегмента, отведенный ему в результате
загрузки в оперативную память, а начальный линейный виртуальный адрес
сегмента в пространстве виртуальных адресов (на рис. 3.16 базовые
физические адреса обозначены SI, S2, S3, а базовые виртуальные адреса — fl,
f2, f3).
Наличие базового виртуального адреса сегмента в дескрипторе
позволяет однозначно преобразовать адрес, заданный в виде пары (номер
сегмента, смещение в сегменте), в линейный виртуальный адрес байта,
который затем преобразуется в физический адрес страничным механизмом.
Преобразование виртуального адреса в физический происходит в два
этапа (рис. 3.17):
1. На первом этапе работает механизм сегментации. Исходный
виртуальный адрес, заданный в виде пары (номер сегмента,
смещение), преобразуется в линейный виртуальный адрес. Для
этого на основании базового адреса таблицы сегментов и номера
сегмента вычисляется адрес дескриптора сегмента. Анализируются
поля дескриптора и выполняется проверка возможности выполнения
заданной операции. Если доступ к сегменту разрешен, то
вычисляется линейный виртуальный адрес путем сложения базового
64
     Координаты байта в виртуальном адресном пространстве при
сегментно-страничной организации можно задать двумя способами:
     - Во-первых, линейным виртуальным адресом, который равен сдвигу
       данного байта относительно границы общего линейного
       виртуального пространства,
     - во-вторых, парой чисел, одно из которых является номером
       сегмента, а другое — смещением относительно начала сегмента.
       При этом в отличие от сегментной модели, для однозначного
       задания виртуального адреса вторым способом необходимо каким-
       то образом указать также начальный виртуальный адрес сегмента с
       данным номером.
     Системы виртуальной памяти ОС с сегментно-страничной
организацией используют второй способ, так как он позволяет
непосредственно определить принадлежность адреса некоторому сегменту и
проверить права доступа процесса к нему.
       Для каждого процесса операционная система создает отдельную
таблицу сегментов, в которой содержатся описатели (дескрипторы) всех
сегментов процесса. Описание сегмента включает назначенные ему права
доступа и другие характеристики, подобные тем, которые содержатся в
дескрипторах сегментов при сегментной организации памяти. Однако
имеется и принципиальное отличие. В поле базового адреса указывается не
начальный физический адрес сегмента, отведенный ему в результате
загрузки в оперативную память, а начальный линейный виртуальный адрес
сегмента в пространстве виртуальных адресов (на рис. 3.16 базовые
физические адреса обозначены SI, S2, S3, а базовые виртуальные адреса — fl,
f2, f3).
     Наличие базового виртуального адреса сегмента в дескрипторе
позволяет однозначно преобразовать адрес, заданный в виде пары (номер
сегмента, смещение в сегменте), в линейный виртуальный адрес байта,
который затем преобразуется в физический адрес страничным механизмом.
      Преобразование виртуального адреса в физический происходит в два
этапа (рис. 3.17):
     1. На первом этапе работает механизм сегментации. Исходный
        виртуальный адрес, заданный в виде пары (номер сегмента,
        смещение), преобразуется в линейный виртуальный адрес. Для
        этого на основании базового адреса таблицы сегментов и номера
        сегмента вычисляется адрес дескриптора сегмента. Анализируются
        поля дескриптора и выполняется проверка возможности выполнения
        заданной операции. Если доступ к сегменту разрешен, то
        вычисляется линейный виртуальный адрес путем сложения базового



                                    64