Смекни!
smekni.com

Огляд архітектури IBM PC-сумісного компютера (стр. 11 из 11)

Часто у подібних системах обмін інформацією між користувачами будується на базі сегментів. Тому сегменти є різними логічними одиницями інформації, які необхідно захищати, а саме на цьому рівні вводяться різні режими доступу до сегментів. Можна виділити 2 основні типи сегментів: програмні сегменти та сегменти даних (сегменти стека є частковим випадком сегментів даних). Оскільки спільні програми повинні мати властивість реєнтерабельності, то з програмних сегментів допускається тільки вибірка та читання констант. Запис у програмні сегменти може розглядатися як недопустима операція. Вибірка команд з сегментів даних також може вважатися недопустимою операцією та будь-який сегмент може бути захищеним від операцій по запису або по читанню.

Для реалізації сегментації було запропоновано декілька схем, котрі відрізняються деталями реалізації, але засновані на тих самих принципах.

У системах з сегментацією пам‘яті кожне слово у адресному просторі користувача визначається віртуальною адресою, що складається з 3 частин: старші розряди розглядаються як номер сегменту, середні як номер сторінки у сегменті, молодші – номер слова у сторінці.

Як і у випадку сторінкової організації, необхідно забезпечити перетворення віртуальної адреси у реальну фізичну адресу основної пам‘яті. З цією метою для кожного користувача операційна система повинна сформувати таблицю сегментів. Кожний елемент таблиці сегментів містить вказівник (дескриптор) сегменту. При відсутності сторінкової організації поле бази визначає адресу сегмента в основній пам‘яті, а границя – довжину сегмента. При наявності сторінкової організації поле бази визначає адресу початку таблиці сторінок даного сегменту, а границя – кількість сторінок у сегменті. Поле індикаторів доступу являє собою деяку комбінацію ознак блокування читання, запису та виконання.

Таблиці сегментів різних користувачів операційна система зберігає у основній пам‘яті. Для визначення розподілу таблиці сегментів виконуваної програми використовується спеціальний регістр захисту, який завантажується операційною системою перед початком її виконання. Цей регістр містить дескриптор таблиці сегментів ((базу і границю), причому база містить адресу початку таблиці сегментів виконуваної програми, а границя – довжину цієї таблиці сегментів. Розряди номера сегмента віртуальної адреси використовуються в якості індексу для пошуку у таблиці сегментів. Таким чином, наявність базово-граничних пар у дескрипторі таблиці сегментів та у елементах таблиці сегментів запобігає можливості звернення програми користувача до таблиць сегментів та сторінок, з якими вона не пов‘язана. Наявність у елементах таблиці сегментів індикаторів режиму доступу дозволяє реалізувати необхідний режим доступу з боку даної програми. Для підвищення ефективності схеми використовується асоціативна кеш-пам‘ять.