Автор: Пользователь скрыл имя, 30 Марта 2013 в 12:01, реферат
Апаратне забезпечення засобів захисту
Керування пам'яттю: віртуальна пам'ять і трансляція адрес
Захист сегментів і сторінок пам'яті
Керування процесами (задачами)
Реалізація функцій захисту в процесорах Intel х86
Апаратне забезпечення засобів захисту
10.1. Завдання апаратного захисту
До апаратного забезпечення засобів захисту (АЗЗЗ) належать засоби підтримки функцій захисту операційних систем, які вбудовано у процесор та (або) в мікросхеми системної плати. Ці засоби визначаються архітектурою процесора і обчислювальної системи. їх може бути реалізовано частково апаратно та частково програмно. Деякі з таких програм жорстко «зашиті» у систему та не можуть бути модифікованими (наприклад, мікропрограми процесора), а деякі розташовані у постійній нам'яті, що піддається перепрограмуванню (наприклад, функції BIOS).
Необхідно враховувати, що операційна система може використовувати або ігнорувати деякі функції АЗЗЗ, а також замінювати їх своїми програмними модулями (наприклад, встановлювати власні оброблювачі переривань замість оброблювачів переривань BIOS).
За усталеною термінологією [91], до АЗЗЗ долучають засоби не за ознакою їх апаратної реалізації, а за колом завдань, що вони вирішують:
З цього переліку видно, що АЗЗЗ не забезпечує виконання завдань повністю, а лише надає необхідну підтримку. Як правило, АЗЗЗ виконує функції доступу до об'єктів, перевірки, переключення, реалізація ж складних алгоритмів, що здійснює планування таких функцій, виноситься за межі апаратних засобів.
Слід зауважити, що в цьому контексті у складі АЗЗЗ не розглядають апаратні модулі, що виконують певні функції із захисту інформації, які не підтримує ОС, наприклад апаратні модулі шифрування.
10.2. Підтримка керування пам'яттю
Основними завданнями розподілу пам'яті є такі [92]:
10.2.1. Віртуальні адреси
У програмах використовують різні типи адрес команд і операндів, які під час ви конання програмного коду процесором перетворюються на фізичні адреси, тобто на номери комірок фізичної пам'яті комп'ютера. Програміст, створюючи програму, використовує символьні імена (ідентифікатори, мітки). Компілятор під час трансляції програми заміняє їх віртуальними адресами. Якщо програмний код не компілюється, а виконується інтерпретатором, то він перетворює символьні імена на віртуальні адреси під час виконання програми.
Віртуальні адреси дають змогу однозначно адресувати команду або дані у ви
діленому програмі (процесу) адресному просторі. Основна вимога до віртуальних адрес — це наявність можливості їх трансляції задля забезпечення коректної адресації незалежно від розташування програми (або навіть конкретного екземпляра програми) в оперативній пам'яті комп'ютера.
Найтиповішим варіантом є використання відносних адрес, тобто зміщення від деякої базової адреси. Якщо кожному процесу виділяється єдина безперервна послідовність віртуальних адрес, зміщення дає змогу однозначно вказати на розташування даних або команди в адресному просторі цього процесу. Таку модель пам'яті називають пласкою (Flat).
Альтернативною моделлю є сегментна модель пам'яті. Адресний простір процесу поділяється на окремі частини, які називають сегментами (іноді секціями чи областями). У такому випадку віртуальна адреса задається парою чисел (п, т), де n позначає сегмент, a m — зміщення в ньому.
10.2.2. Віртуальна пам'ять
Слід розрізняти поняття «віртуальна адреса» і «віртуальна пам'ять». Під віртуальною пам'яттю розуміють комплекс апаратних і програмних засобів, які дають змогу процесам використовувати адресний простір, що перевищує обсяг фізичної пам'яті в комп'ютері.
Оскільки в типових сучасних комп'ютерних системах адресний простір перевищує обсяг фізичної пам'яті, використання віртуальної пам'яті є не лише ефективним, а й необхідним. Щоб забезпечити зберігання тих частин віртуального адресного простору, які не вмістились у фізичну пам'ять, ОС записує їх
у запам'ятовуючий пристрій більшого об'єму, тобто на жорсткий диск. Для тимчасового зберігання частин віртуального адресного простору процесів па диску створюється спеціальний розділ (як в UNIX-системах) або спеціальний файл. Залежно від того, якими саме частинами ОС переміщує дані між диском і оперативною пам'яттю, розрізняють сегментний, сторінковий і сегментно-сторінковий розподіл пам'яті.
Сегмент — це безперервна область віртуального адресного простору довільного розміру, виділена з урахуванням типу даних, які в ній знаходяться. Сторінка —
це безперервна область віртуального адресного простору фіксованого розміру (переважно невеликого), виділена без урахування типу розташованих у ній даних.
У разі сегментного розподілу пам'яті віртуальний адресний простір процесу складається з окремих сегментів, розмір кожного з яких обмежується розрядністю адресації. Наприклад, за 16-розрядної адресації максимальний розмір сегмента становить 64 Кбайт, а за 32-розрядної — 4 Гбайт (якщо адресуються байти; в деяких архітектурах адресуються «машинні слова», розмір яких перевищує 1 байт). Адреса в сегменті відраховується від його початку, тобто є зміщенням, а повна віртуальна адреса задається парою чисел — номером сегмента і зміщенням у сегменті. Інформацію про сегменти оформлено як таблицю (рис. 10.1), кожний рядок якої містить відомості про окремий сегмент. Це може бути:
♦ ознака наявності сегмента в оперативній пам'яті;
Таку структуру даних називають дескриптором сегмента, а таблицю, відповідно, — таблицею дескрипторів. Як правило, для кожного процесу створюється окрема таблиця дескрипторів. Сегментний розподіл пам'яті передбачає можливість повного перенесення деяких сегментів з оперативної пам'яті на жорсткий диск, тоді в дескрипторі встановлюється відповідний прапорець. Після звернення до такого сегмента виникає переривання і керування передається на оброблювач цього переривання, який має завантажити сегмент у пам'ять (для цього доведеться визначити місце завантаження сегмента і звільнити його витисканням іншого сегмента (або сегментів) на диск). Переривання виникає також, якщо здійснюється звернення до сегмента, що не відповідає встановленим правилам. Ці засоби є надійною основою для створення систем розмежування доступу до областей адресного простору різних процесів [91].
Альтернативним способом розподілу пам'яті є сторінковий (рис. 10.2). Хоча за використання сторінок, так само як і сегментів, застосовують дескриптори, вони мають простішу структуру. Відомості про сторінку містять:
Рис. 10.2. Сторінковий розподіл пам'яті
можна просто «затерти» за потреби звільнити пам'ять);
кандидатів для витискання на диск).
Рис. 10.1. Сегментний розподіл пам'яті
Оскільки сторінки мають порівняно невеликий розмір (типовим є, наприклад, використання 4-кілобайтових сторінок), кожний процес може мати велику їх кількість. Для того щоб уникнути постійного зберігання в пам'яті величезної таблиці сторінок, віртуальний адресний простір поділяють на розділи однакового розміру і для кожного з них формують свою окрему таблицю сторінок. Розмір розділу обирають таким чином, щоб таблиця сторінок кожного розділу займала рівно одну сторінку. Таблиці сторінок витискаються на диск разом із відповідними розділами. За допомогою дескрипторів таблиць сторінок, які є абсолютно аналогічними дескрипторам звичайних сторінок, формують окрему таблицю, яку ще називають таблицею розділів або каталогом сторінок.
Як бачимо, сегментний
і сторінковий розподіли пам'
10.2.3. Трансляція адрес
Трансляцію віртуальних адрес у фізичні може бути виконано в кілька етапів; це залежить від того, яку модель використання пам'яті підтримують апаратні засоби і ОС [92]. Є принципово різні способи трансляції адрес.
Один із них передбачає одноразову трансляцію адрес у момент початкового завантаження програми в пам'ять, після чого у програмі використовуються не віртуальні, а фізичні адреси. Перевага цього способу полягає у тому, що програми виконуються набагато швидше; недоліком є унеможливлення перенесення програмного коду і даних з одного місця фізичної пам'яті в інше.
Інший спосіб — динамічна трансляція адрес. У програмному коді залишаються віртуальні адреси, які транслюються у фізичні під час кожного звернення до оперативної пам'яті. Завдяки динамічній трансляції під час виконання програми програмний код можна перемістити з одного місця фізичної пам'яті в інше.
Рис. 10.4. Трансляція віртуальної адреси у разі дворівневої сторінкової організації пам'яті (зміщення у фізичній сторінці збігається із зміщенням у віртуальній сторінці)
Нa рис. 10.3 показано схему трансляції віртуальної адреси у фізичну для сегментного розподілу пам'яті.
Розглянемо
схему трансляції адрес для сегментно-
Віртуальна адреса
На рис. 10.4 показано трансляцію віртуальної адреси у фізичну для сторінкового розподілу пам'яті. Слід звернути увагу на легкість формування фізичної адреси: старші розряди адреси — це номер фізичної сторінки, а молодші розряди зміщення, яке автоматично переноситься з віртуальної адреси, позаяк розміри і межі віртуальних і фізичних сторінок збігаються.
Рис. 10.3. Трансляція віртуальної адреси у разі, сегментної організації пам'яті (фізична адреса обчислюється додаванням зміщення до базової адреси сегмента)
10.3. Підтримка керування процесами
Сучасні ОС виконують такі завдання з керування процесами (задачами) [92, 93]: