Апаратне забезпечення засобів захисту

Автор: Пользователь скрыл имя, 30 Марта 2013 в 12:01, реферат

Описание работы

Апаратне забезпечення засобів захисту
Керування пам'яттю: віртуальна пам'ять і трансляція адрес
Захист сегментів і сторінок пам'яті
Керування процесами (задачами)
Реалізація функцій захисту в процесорах Intel х86

Работа содержит 1 файл

Апаратне забезпечення засобів захисту.doc

— 1.12 Мб (Скачать)

Апаратне  забезпечення засобів захисту

  • Керування пам'яттю: віртуальна пам'ять і трансляція адрес
  • Захист сегментів і сторінок пам'яті
  • Керування процесами (задачами)
  • Реалізація функцій захисту в процесорах 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 показано схему трансляції віртуальної адреси у фізичну для сегментного розподілу пам'яті.



Розглянемо  схему трансляції адрес для сегментно-сторінкового розподілу, яку широко застосовують на практиці, зокрема у процесорах Intel х86 (рис. 10.5). Як видно з наведеної на рисунку схеми, трансляція відбувається у два етапи. Спочатку за схемою сегментного розподілу, обчислюється лінійна віртуальна адреса, яка потім транслюється у фізичну адресу за схемою сторінкового розподілу.



Віртуальна  адреса


На  рис. 10.4 показано трансляцію віртуальної адреси у фізичну для сторінкового розподілу пам'яті. Слід звернути увагу на легкість формування фізичної адреси: старші розряди адреси — це номер фізичної сторінки, а молодші розряди зміщення, яке автоматично переноситься з віртуальної адреси, позаяк розміри і межі віртуальних і фізичних сторінок збігаються.


Рис. 10.3. Трансляція віртуальної адреси у разі, сегментної організації пам'яті (фізична адреса обчислюється додаванням зміщення до базової адреси сегмента)




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10.3. Підтримка керування процесами

Сучасні ОС виконують такі завдання з керування  процесами (задачами) [92, 93]:

  • створення і знищення процесів;
  • забезпечення процесів необхідними ресурсами;
  • планування і диспетчеризація процесів (розподіл процесорного часу між процесами);

Информация о работе Апаратне забезпечення засобів захисту