Дескриптор сегменту

У обчислювальній системі, що підтримує односегментную модель, повинен існувати регістр дескриптора сегменту, вміст якого складається з двох полів: початкової (базового) адреси сегменту в реальній пам'яті і довжини сегменту. Коли процес розміщується в пам'яті, для виділеного йому сегменту формується дескриптор, який записується у вектор полягання в контексті процесу. При перемиканні контексту дескриптор сегменту завантажується в апаратний регістр дескриптора сегменту і служить тією "таблицею трансляції", по якій апаратура переводить віртуальні адреси в реальні. Сама трансляція адрес відбувається по простому алгоритму. Оскільки віртуальний адресний простір процесу є лінійною послідовністю адрес, що починається з 0, віртуальна адреса є простим зсувом відносно початку сегменту. Реальна адреса виходить складанням віртуальної адреси з базовою адресою, вибраною з дескриптора сегменту.

Багатосегментна модель

Віртуальний простір процесу розбивається на сегменти, які нумеруються від 0 до N-1. Віртуальна адреса, таким чином, складається з двох частин: номери сегменту і зсуву в сегменті. Ці частини можуть або представлятися окремо кожна, або упаковуватися в одне адресне слово, в якому певне число старших розрядів інтерпретуватиметься як номер сегменту, а частина, що залишилася, - як зсув. У першому випадку сегменти можуть розміщуватися довільним чином у віртуальному адресному просторі. У другому випадку створюється враження плоского адресного простору з адресами від 0 до максимально можливої при даній розрядності віртуальної адреси, але в цьому просторі можуть бути дірки - віртуальні адреси для процесу недоступні - через відсутність відповідних сегментів або із-за сегментів, довжина яких менше максимально можливою.

Таблиця дескрипторів

Глобальна таблиця дескрипторів - загальна для всіх процесів, і саме вона може використовуватися для доступу до спільно використовуваної пам'яті. Розміщення в загальних віртуальних адресах зручно для системних програм і динамічних бібліотек, до яких відбуваються часті звернення із застосувань: якщо ці компоненти ОС знаходяться в адресному просторі процесу, то звернення до них не вимагають перемикання контексту. Але з іншого боку, це знижує надійність: якщо системні компоненти доступні для застосування, то вони можуть бути їм зіпсовані. Тому така "розкіш" може бути допущена тільки в однопользовательских системах.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: