А. Робачевский - Операционная система UNIX (1114671), страница 39
Текст из файла (страница 39)
3.5. Селектор сегментаЕсли битравен 0, то селектор указывает на GDT, в противном случаеиспользуется LDT. Поле RPL задает уровень привилегий сегмента и явля!ется одним из механизмов обеспечения защиты сегментов. Например, еслипроцесс, находясь в режиме задачи, попытается обратиться к сегменту,принадлежащему ядру, процессор сгенерирует особую ситуацию, в ответна это ядро отправит процессу сигнал SIGSEGV.Каждая запись LDT или GDT является дескриптором сегмента. Определе!но несколько типов дескрипторов, используемых для сегментов кода, дан!ных и стека, а также ряд дескрипторов, с помощью которых обеспечивает!ся многозадачность и передача управления от непривилегированной зада!чи, например, процесса в режиме задачи, к привилегированной задаче,например, ядру.
Дескрипторы, используемые в последнем случае, называ!ются шлюзами.Дескрипторы сегментов (кода, данных, стека) имеют несколько полей:Базовый адресПределВ этом поле хранится 32%битный адрес начала сегмента. Процес%сор добавляет к нему смещение и получает 32%битный линейныйадрес.Это поле определяет размер сегмента. Если результирующийлинейный адрес выходит за пределы сегмента, процессор гене%рирует особую ситуацию. Границы сегмента позволяют процес%сору обнаруживать такие распространенные ошибки, как пере%полнение стека, неверные указатели, неверные адреса вызовов ипереходов.
В случае, когда операционная система считает, чтообращение за пределы сегмента не является ошибкой(например, при переполнении стека), она может расширить сег%мент путем выделения дополнительной памяти и запросить вы%полнение команды вновь.www.books-shop.comПринципы управления памятьюПривилегииЭто поле, имеющее название Descriptor Privilege Level (DPL), оп%ределяет уровень привилегий сегмента и используется совмест%но с полем RPL селектора для разрешения или запрещения дос%тупа к сегменту.
Для получения доступа к сегменту задача долж%на иметь по крайней мере такой же уровень привилегий, как исегмент, т. е. RPL DPL.Признак присутст% Этот бит обеспечивает один из механизмов реализации вирту%вияальной памяти. Если бит не установлен, при попытке обращенияк сегменту процессор генерирует особую ситуацию отсутствиясегмента, позволяя ядру подгрузить сегмент из вторичной памя%ти и вновь повторить инструкцию, не затрагивая при этом выпол%нение процесса. Однако в большинстве современных версийUNIX виртуальная память основана на страничном механизме,при котором сегмент всегда присутствует в памяти, а обмен ме%жду оперативной и вторичной памятью происходит на уровнестраниц.ТипЭто поле определяет тип сегмента.
Процессор проверяет типсегмента на соответствие исполняемой команде. Это, в частно%сти, не позволяет интерпретировать информацию сегмента дан%ных как инструкции процессора.Права доступаЭто поле определяет права доступа, ограничивающие множествоопераций, которые можно производить с сегментом.
Например,сегмент кода обычно отмечается как исполняемый и читаемый.Сегменты данных могут иметь право доступа только для чтения,или для чтения и записи.Комбинация селектора и смещения образует логический адрес. Блок управ!ления памятью процессора использует селектор для определения соответст!вующего ему дескриптора. Складывая базовый адрес сегмента, хранящийся вдескрипторе, со смещением, процессор создает линейный адрес (рис.
3.6).Рис. 3.6. Трансляция адреса с использованием механизма сегментацииwww.books-shop.com202Глава 3.управления процессамиЕсли страничный механизм не используется, полученный линейный адресявляется физическим, используемым для непосредственного доступа коперативной памяти. Однако реализация виртуальной памяти, основаннаятолько на сегментах, не обладает достаточной гибкостью и не используетсяв современных версияхУправление памятью в большинстве системосновано на страничном механизме.
Сегменты используются ядром дляразмещения кода, данных и стека процесса, причем каждый из них имеетнулевой базовый адрес и предел — 3 Гбайт, т. е. всю адресуемую вирту!альную память за вычетом 1 Гбайт, занимаемых ядром системы.
Распреде!ление виртуального адресного пространства между ядром и процессамирассмотрено в разделе "Адресное пространство процесса".Страничный механизмПри реализации виртуальной памяти, основанной только на сегментации,весь сегмент целиком может либо присутствовать в оперативной памяти,либо отсутствовать (точнее, находиться во вторичной памяти или в испол!няемом файле процесса). Поскольку размер сегмента может быть доста!точно велик, одновременное выполнение нескольких больших процессоввызовет серьезную конкуренцию за ресурсы памяти, что в свою очередьприведет к интенсивному обмену данными между оперативной и вторич!ной памятью. К тому же обмен областями переменного размера, каковымиявляются сегменты, достаточно сложен и, хотя фрагментация памяти приэтом будет невелика, приведет к низкой эффективности ее использования,оставляя большое количество неиспользуемого пространства.Страничный механизм обеспечивает гораздо большую гибкость.
В этом слу!чае все виртуальное адресное пространство (4 Гбайт для процессоров Intel)разделено на блоки одинакового размера, называемые страницами. Боль!шинство процессоров Intel работает со страницами размером 4 Кбайт. Также как и в случае сегментации, страница может либо присутствовать в опе!ративной памяти, либо находиться в области свопинга или исполняемомфайле процесса. Основное преимущество такой схемы заключается в том,что система управления памятью оперирует областями достаточно малогоразмера для обеспечения эффективного распределения ресурсов памяти ме!жду процессами.
Страничный механизм допускает, чтобы часть сегментанаходилась в оперативной памяти, а часть отсутствовала. Это дает ядру воз!можность разместить в памяти только те страницы, которые в данное времяиспользуются процессом, тем самым значительно освобождая оперативнуюпамять. Еще одним преимуществом является то, что страницы сегмента мо!гут располагаться в физической памяти в произвольном месте и порядке,что позволяет эффективно использовать свободноеДанный подход напоминает схему хранения файлов на диске — каждый файл состоит изразличного числа блоков хранения данных, которые могут располагаться в любых свобод!ных участках дискового накопителя.
Это ведет к значительной фрагментации, но сущест!венно повышает эффективность использования дискового пространства.www.books-shop.comПринципы управления памятью203При использовании страничного механизма линейный адрес, полученныйв результате сложения базового адреса сегмента и смещения также являет!ся логическим адресом, который дополнительно обрабатывается блокомстраничной трансляции процессора. В этом случае линейный адрес рас!сматривается процессором как состоящий из трех частей, показанных нарис. 3.7.Рис.
3.7. Трансляция адреса с использованием страничного механизмаПервое поле адреса, с 22 по 31 бит, указывает на элемент каталога таблицстраниц (Page Directory Entry, PDE). Каталог таблиц страниц имеет длину,равную одной странице, и содержит до 1024 указателей на таблицы стра!ниц (page table). Таким образом, первое поле адресует определенную таб!лицу страниц. Второе поле, занимающее с 12 по 21 бит, указывает на эле!ментстраниц (Page Table Entry, РТЕ). Таблицы страниц такжеимеют длину 4 Кбайт, а элементы таблицы адресуют в совокупности 1024страниц.
Другими словами, второе поле адресует определенную страницу.Наконец, смещение на странице определяется третьим полем, занимаю!щим младшие 12 бит линейного адреса. Таким образом, с помощью од!ного каталога таблиц процесс может адресовать= 4 Гбайтфизической памяти.На рис. 3.7 показано, как блок страничной адресации процессора транс!лирует линейный адрес в физический.использует поле PDEадреса (старшие 10 бит) в качестве индекса в каталоге таблиц.элемент содержит адрес таблицы страниц. Второе поле линейного адреса,www.books-shop.comГлава 3.управления процессамиРТЕ, позволяет процессору выбрать нужный элемент таблицы, адресую!щий физическую страницу. Складывая адрес начала страницы со смеще!нием, хранящимся в третьем поле, процессор получает 32!битный физиче!скийКаждый элемент таблицы страниц содержит несколько полей (табл.
3.2),описывающих различные характеристики страницы.Таблица 3.2. Поля РТЕРПризнак присутствия в оперативной памяти. Доступ к странице, отсутст%вующей в памяти (Р=0) вызывает страничную ошибку, особую ситуацию,о чем процессор информирует ядро, которое обрабатывает ее соответст%вующим образом.Права только на чтение страницыили на чтение и записьU/SПривилегии доступа.
Если U/S = 0, только привилегированные задачи(ядро) имеют доступ к адресам страницы. В противном случае, доступ кстранице имеют все задачи.Физический адрес начала страницы (адрес базы).АдресАдресное пространство процессаАдресное пространство ядра обычно совпадает с адресным пространствомвыполняющегося в данный момент процесса. В этом случае говорят, чтоядро расположено в том же контексте, что и процесс. Каждый раз, когдапроцессу передаются вычислительные ресурсы, система восстанавливаетконтекст задачи этого процесса, включающий значения регистров общегоназначения, сегментных регистров, а также указатели на таблицы страниц,отображающие виртуальную память процесса в режиме задачи.
При этомсистемный контекст остается неизменным для всех процессов. Вид адрес!ного пространства процесса представлен на рис. 3.8.Специальный регистр (CR3 для Intel) указывает на расположение каталогатаблиц страниц в памяти. В SCO UNIX используется только один каталог,независимо от выполняющегося процесса, таким образом значение реги!стра CR3 не меняется на протяжении жизни системы. Поскольку ядро(код и данные) является частью выполняющегося процесса, таблицы стра!ниц, отображающие старший 1 Гбайт виртуальной памяти, принадлежа!щей ядру системы, не изменяются при переключении между процессами.Для отображения ядра используются старшие 256 элементов каталога.Следует отметить, что большинство современныхи, в частности, процессорысемейства Intel, помещают данные о нескольких последних использовавшихся ими стра!ницах в сверхоперативный кэш.
Только когда процессор не находит требуемой страницыв этом кэше, он обращается к каталогу и таблицам страниц. Как правило,ных ссылок попадают в кэш,требуя для трансляции адреса обращения кпамяти, где расположены каталог и таблицы.www.books-shop.com205Принципы управления памятью•ФизическаяКаталог таблицстраницВиртуальноеадресноепространствоядрагаОхСОООООООВиртуальноеадресноепространствопроцесса0x00000000Рис. 3.8. Адресное пространство в режимах ядра и задачиПри переключении между процессами, однако, изменяется адресное про!странство режима задачи, что вызывает необходимость изменения остав!шихся 768 элементов каталога. В совокупности они отображают 3 Гбайтвиртуального адресного пространства процесса в режиме задачи.