Составители:
33
поле базового адреса указывается не начальный физический адрес сегмента,
отведенный ему в результате загрузки в оперативную память, а начальный
линейный виртуальный адрес сегмента в пространстве виртуальных адресов (на
рис. 5.20 базовые физические адреса обозначены SI, S2, S3, а базовые виртуальные
адреса — fl, f2, f3).
Наличие базового виртуального адреса сегмента в дескрипторе позволяет
однозначно преобразовать адрес, заданный в виде пары (номер сегмента,
смещение в сегменте), в линейный виртуальный адрес байта, который затем
преобразуется в физический адрес страничным механизмом.
Деление общего линейного виртуального адресного пространства процесса и
физической памяти на страницы осуществляется так же, как это делается при
страничной организации памяти. Размер страниц выбирается равным степени
двойки, что упрощает механизм преобразования виртуальных адресов в
физические. Виртуальные страницы нумеруются в пределах виртуального
адресного пространства каждого процесса, а физические страницы — в пределах
оперативной памяти. При создании процесса в память загружается только часть
страниц, остальные загружаются по мере необходимости. Время от времени
система выгружает уже ненужные страницы, освобождая память для новых
страниц. ОС ведет для каждого процесса таблицу страниц, в которой указывается
соответствие виртуальных страниц физическим.
Базовые адреса таблицы сегментов и таблицы страниц процесса являются
частью его контекста. При активизации процесса эти адреса загружаются в
специальные регистры процессора и используются механизмом преобразования
адресов.
Преобразование виртуального адреса в физический происходит в два этапа
(рисунок 15):
1. На первом этапе работает механизм сегментации. Исходный виртуальный
адрес, заданный в виде пары (номер сегмента, смещение), преобразуется в
линейный виртуальный адрес. Для этого на основании базового адреса
таблицы сегментов и номера сегмента вычисляется адрес дескриптора
сегмента. Анализируются поля дескриптора и выполняется проверка
возможности выполнения заданной операции. Если доступ к сегменту
разрешен, то вычисляется линейный виртуальный адрес путем сложения
базового адреса сегмента, извлеченного из дескриптора, и смещения,
заданного в исходном виртуальном адресе.
2. На втором этапе работает страничный механизм. Полученный линейный
виртуальный адрес преобразуется в искомый физический адрес. В
результате преобразования линейный виртуальный адрес представляется в
том виде, в котором он используется при страничной организации памяти, а
именно в виде пары (номер страницы, смещение в странице). Благодаря
тому что размер страницы выбран равным степени двойки, эта задача
решается простым отделением некоторого количества младших двоичных
разрядов. При этом в старших разрядах содержится номер виртуальной
страницы, а в младших — смещение искомого элемента относительно
начала страницы. Так, если размер страницы равен 2k, то смещением
поле базового адреса указывается не начальный физический адрес сегмента,
отведенный ему в результате загрузки в оперативную память, а начальный
линейный виртуальный адрес сегмента в пространстве виртуальных адресов (на
рис. 5.20 базовые физические адреса обозначены SI, S2, S3, а базовые виртуальные
адреса — fl, f2, f3).
Наличие базового виртуального адреса сегмента в дескрипторе позволяет
однозначно преобразовать адрес, заданный в виде пары (номер сегмента,
смещение в сегменте), в линейный виртуальный адрес байта, который затем
преобразуется в физический адрес страничным механизмом.
Деление общего линейного виртуального адресного пространства процесса и
физической памяти на страницы осуществляется так же, как это делается при
страничной организации памяти. Размер страниц выбирается равным степени
двойки, что упрощает механизм преобразования виртуальных адресов в
физические. Виртуальные страницы нумеруются в пределах виртуального
адресного пространства каждого процесса, а физические страницы — в пределах
оперативной памяти. При создании процесса в память загружается только часть
страниц, остальные загружаются по мере необходимости. Время от времени
система выгружает уже ненужные страницы, освобождая память для новых
страниц. ОС ведет для каждого процесса таблицу страниц, в которой указывается
соответствие виртуальных страниц физическим.
Базовые адреса таблицы сегментов и таблицы страниц процесса являются
частью его контекста. При активизации процесса эти адреса загружаются в
специальные регистры процессора и используются механизмом преобразования
адресов.
Преобразование виртуального адреса в физический происходит в два этапа
(рисунок 15):
1. На первом этапе работает механизм сегментации. Исходный виртуальный
адрес, заданный в виде пары (номер сегмента, смещение), преобразуется в
линейный виртуальный адрес. Для этого на основании базового адреса
таблицы сегментов и номера сегмента вычисляется адрес дескриптора
сегмента. Анализируются поля дескриптора и выполняется проверка
возможности выполнения заданной операции. Если доступ к сегменту
разрешен, то вычисляется линейный виртуальный адрес путем сложения
базового адреса сегмента, извлеченного из дескриптора, и смещения,
заданного в исходном виртуальном адресе.
2. На втором этапе работает страничный механизм. Полученный линейный
виртуальный адрес преобразуется в искомый физический адрес. В
результате преобразования линейный виртуальный адрес представляется в
том виде, в котором он используется при страничной организации памяти, а
именно в виде пары (номер страницы, смещение в странице). Благодаря
тому что размер страницы выбран равным степени двойки, эта задача
решается простым отделением некоторого количества младших двоичных
разрядов. При этом в старших разрядах содержится номер виртуальной
страницы, а в младших — смещение искомого элемента относительно
начала страницы. Так, если размер страницы равен 2k, то смещением
33
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »
