Односегментна модель
Нам невідомі ОС, що підтримують односегментную модель "в чистому вигляді", але її розгляд полегшить розуміння складніших моделей.
Зовні (з погляду програміста) ця модель дуже схожа на модель з фіксованими розділами: програма-процес готується в плоскому віртуальному адресному просторі. Процес займає безперервний простір віртуальної пам'яті, і в реальну пам'ять він також завантажується в один безперервний розділ (сегмент). Сегмент може починатися з будь-якої адреси реальної пам'яті і мати будь-який розділ, що не перевищує, проте, розміру реальної пам'яті. Істотна відмінність сегментної моделі полягає в тому, що вона використовує апаратну динамічну трансляцію адрес. Завантажений в реальну пам'ять і процес, що виконується, продовжує звертатися до пам'яті, використовуючи віртуальні адреси, і лише при кожному конкретному зверненні віртуальна адреса апаратний переводиться в реальний. У обчислювальній системі, що підтримує односегментную модель, повинен існувати регістр дескриптора сегменту, вміст якого складається з двох полів: початкової (базового) адреси сегменту в реальній пам'яті і довжини сегменту. Коли процес розміщується в пам'яті, для виділеного йому сегменту формується дескриптор, який записується у вектор полягання в контексті процесу. При перемиканні контексту дескриптор сегменту завантажується в апаратний регістр дескриптора сегменту і служить тією "таблицею трансляції", по якій апаратура переводить віртуальні адреси в реальні. Сама трансляція адрес відбувається по простому алгоритму. Оскільки віртуальний адресний простір процесу є лінійною послідовністю адрес, що починається з 0, віртуальна адреса є простим зсувом відносно початку сегменту. Реальна адреса виходить складанням віртуальної адреси з базовою адресою, вибраною з дескриптора сегменту, як показано на Малюнку 3.4. Єдиний шлях для виходу процесу за межі свого віртуального адресного простору - завдання віртуальної адреси, більшої, ніж розмір сегменту. Цей шлях легко може бути перекритий, якщо апаратура при трансляції адрес порівнюватиме віртуальну адресу з довжиною сегменту і виконуватиме переривання-пастку, якщо віртуальна адреса більша.
Ріс.3.4. Односегментная модель |
Та обставина, що процес працює у віртуальних адресах, робить можливим переміщення сегментів в реальній пам'яті. Перемістивши процес в іншу область реальної пам'яті, ОС просто змінює поле базової адреси в дескрипторі його сегменту. Оскільки, як і в моделі з фіксованими розділами, реальна пам'ять розподіляється безперервними блоками змінної довжини, тут застосовуються ті ж стратегії розміщення. Але можливе тут переміщення сегментів є ефективним способом боротьби із зовнішніми дірками. Сегменти переписуються в реальній пам'яті так, щоб вільних місць між ними не залишалося, весь вільний простір зливається в один великий вільний блок і, таким чином, виявляється доступним для подальшого розподілу.
Дата добавления: 2016-07-27; просмотров: 1268;