The design of the UNIX Operating System 47 страница



 

Программисты, пишущие на языках низкого уровня, должны иметь представление о сегментной органи-зации, явным образом меняя значения сегментных регистров (это хорошо видно по текстам программ, написанных на Ассемблере ). Логическое адресное пространство – набор сегментов. Каждый сегмент имеет имя , размер и другие параметры (уровень привилегий, разрешенные виды обращений, флаги при-сутствия). В отличие от страничной схемы, где пользователь задает только один адрес, который разбива-ется на номер страницы и смещение прозрачным для программиста образом , в сегментной схеме пользо-ватель специфицирует каждый адрес двумя величинами: именем сегмента и смещением.

 

Каждый сегмент – линейная последовательность адресов, начинающаяся с 0. Максимальный размер сег-мента определяется разрядностью процессора (при 32-разрядной адресации это 232 байт или 4 Гбайт). Размер сегмента может меняться динамически (например, сегмент стека). В элементе таблицы сегментов помимо физического адреса начала сегмента обычно содержится и длина сегмента. Если размер смеще-ния в виртуальном адресе выходит за пределы размера сегмента, возникает исключительная ситуация.

 

Логический адрес – упорядоченная пара v=(s,d), номер сегмента и смещение внутри сегмента.

 

В системах, где сегменты поддерживаются аппаратно, эти параметры обычно хранятся в таблице деск - рипторов сегментов, а программа обращается к этим дескрипторам по номерам-селекторам. При этом в контекст каждого процесса входит набор сегментных регистров, содержащих селекторы текущих сегмен - тов кода, стека, данных и т. д. и определяющих, какие сегменты будут использоваться при разных видах обращений к памяти. Это позволяет процессору уже на аппаратном уровне определять допустимость об - ращений к памяти, упрощая реализацию защиты информации от повреждения и несанкционированного доступа.

 

 

Рис. 8.8. Преобразование логического адреса при сегментной организации памяти

 

Аппаратная поддержка сегментов распространена мало (главным образом на процессорах Intel). В боль-шинстве ОС сегментация реализуется на уровне, не зависящем от аппаратуры.


Основы операционных систем 81

Хранить в памяти сегменты большого размера целиком так же неудобно, как и хранить процесс непре-рывным блоком. Напрашивается идея разбиения сегментов на страницы. При сегментно-страничной ор-ганизации памяти происходит двухуровневая трансляция виртуального адреса в физический. В этом слу-чае логический адрес состоит из трех полей: номера сегмента логической памяти, номера страницы внутри сегмента и смещения внутри страницы. Соответственно, используются две таблицы отображения

 

– таблица сегментов, связывающая номер сегмента с таблицей страниц, и отдельная таблица страниц для каждого сегмента.

 

 

Рис. 8.9. Упрощенная схема формирования физического адресапри сегментно-страничной организации памяти

 

Сегментно-страничная и страничная организация памяти позволяет легко организовать совместное ис-пользование одних и тех же данных и программного кода разными задачами. Для этого различные логи-ческие блоки памяти разных процессов отображают в один и тот же блок физической памяти, где разме-щается разделяемый фрагмент кода или данных.

 

Заключение

 

В настоящей лекции описаны простейшие способы управления памятью в ОС. Физическая память ком-пьютера имеет иерархическую структуру. Программа представляет собой набор сегментов в логическом адресном пространстве. ОС осуществляет связывание логических и физических адресных пространств. В последующих лекциях будут рассматриваться современные решения, связанные с поддержкой виртуаль-ной памяти.


Дата добавления: 2021-01-21; просмотров: 97; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!