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

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

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

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

♦    підтримка взаємодії між процесами.

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

  • визначення часу, коли буде змінено процес, що виконується;
  • вибирання з черги готових процесів наступного процесу для виконання.


Рис. 10.5. Трансляція віртуальної адреси у разі сегментно-сторінкового розподілу пам'яті




 

 

 

 

 

 

 

 

 

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

Виконання всіх цих завдань суттєво впливає  на певні аспекти безпеки:

 ♦    надійність і стабільність роботи ОС;

  • гарантованість забезпечення процесів необхідними ресурсами;
  • здатність ОС протистояти некоректним діям з боку окремих процесів, на приклад, спроб:
  • несанкціонованого доступу до системних ресурсів;

♦   захоплення великих об'ємів ресурсів або їх монополізації;

  • несанкціонованого запуску нових процесів;
  • несанкціонованого доступу до ресурсів інших процесів (програмного коду, пам'яті).

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

Дескриптор процесу — це структура даних, яка містить необхідну для планування процесів інформацію. Операційна система заносить у дескриптор (різні oпeраційні системи підтримують різні формати цієї структури), зокрема, такі дані:

  • ідентифікатор процесу;
  • відомості про розташування виконуваного модуля в оперативній пам'яті;
  • інформацію щодо привілейованості процесу;
  • дані про пріоритет процесу;

♦    інформацію щодо прав доступу до процесу.

Приклади дескрипторів процесів: у системі UNIX — структура ргос, у систем і Windows — object-process (об'єкт-процес), у системі OS/2 — РСВ (Process Con

trol Block — блок керування процесом), OS/360 — ТСВ (Task Control Block блок керування задачею).

Контекст процесу — це структура даних, яка містить інформацію, необхідну для диспетчеризації процесів. Основним призначенням контексту є збереження всієї інформації, необхідної для поновлення виконання процесу після його переривання. Це, по-перше, стан компонентів комп'ютера в момент переривання процесу, зокрема, вміст регістрів процесора, режим його роботи, прапорці, маски переривань, значення лічильника команд і, по-друге, параметри операційного середовища, а саме: посилання на відкриті файли, дані про незавершені операції введення-виведення, коди помилок системних викликів, що виконуються процесом, тощо. Приклади контекстів процесів: у системі UNIX — структура user, у системі Windows — TSS (Task State Segment).

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

♦ контроль за виділенням процесам процесорного часу з метою запобігання перевищенню квот або монополізації процесора;

 ♦ контроль за викликами одними процесами інших задля забезпечення встановлених правил доступу.

 

 

 

 

 

Здійснювати контроль за викликами  процесів можна, застосовуючи дискреційні та мандатні принципи керування доступом. У першому випадку в дескрипторі процесу має бути передбачена область даних, яка визначає права доступу інших процесів на запуск, зміну стану і пріоритету, знищення цього процесу або інші дії, що можуть бути виконані над дескриптором процесу, коли сам процес не виконується (тобто знаходиться у стані готовності або очікування). Права доступу можуть визначатися за допомогою списку керування доступом. Слід зауважити, що список керування доступом є досить великою структурою, і роботу з ним складно (хоча й можливо) організувати на апаратному рівні.

Набагато легше  реалізувати мандатне керування  доступом. Така реалізація значно ефективніша, легко досягається апаратними засобами, тому не лише швидка, але й надійна, через що її частіше застосовують. Кожному процесу надається певний рівень виконання, який позначається цілим числом. У найпростішому випадку процеси з нижчим рівнем виконання не зможуть викликати програмний код, якому присвоєний вищий рівень, а також отримати доступ до пов'язаних з ним структур даних. Таким чином утворюються так звані кільця захисту. Коли їх реалізують апаратно, максимальна кількість кілець захисту визначається за допомогою апаратури (центрального процесора), але ОС може і не використовувати ці можливості повною мірою. Більшість RISC- процесорів підтримують лише два рівні виконання процесів, тобто два кільця захисту, — рівень ядра (Kernel Mode) і рівень користувача (User Mode), або рівень прикладних програм. Відповідно й ОС, розроблені для таких процесорів (різні версії UNIX і Windows), підтримують лише два рівні виконання процесів. Популярні процесори Intel х86 (починаючи з 80286) підтримують чотири кільця захисту. Є такі ОС, що повністю використовують цю властивість процесорів (найпопулярнішою з них була OS/2).

Захист дескрипторів і контекстів процесів від несанкціонованого  доступу здійснюється засобами контролю доступу до областей оперативної пам'яті, оскільки ці структури переважно розташовані саме в системній області оперативної пам'яті.

10.4. Особливості архітектури процесорів Intel х86

У цьому підрозділі мова йтиме про 32-розрядні процесори Intel, здатні працювати в захищеному режимі: 80386, 80486, різні процесори Pentium і Celeron. Ці процесори підтримують зворотну сумісність і мають багато спільних рис. Саме під час проектування процесора 80386 близько 20 років тому компанія Intel розробила програмну модель процесора, яку використовують і дотепер. Кожна нова модель процесора має суттєві відмінності, які здебільшого стосуються розширення його можливостей завдяки додаванню нових наборів команд, арифметичних пристроїв, груп регістрів. Ці процесори можуть мати кардинально змінену внутрішню будову, що дає змогу з більшими швидкістю та інтелектом виконувати задану послідовність команд, але мало торкаються зовнішньої, доступної програмісту структури процесора, яка, власне, і становить його програмну модель. У цьому розділі ми розглянемо лише ті функції процесорів х86, які забезпечують захист областей пам'яті та підтримують ізоляцію процесів під час їх квазіпаралельного

 

 

 

Таблиця 10.1.

Регістри  процесорів Intel х86

Позначення

Назва

Особливості використання

Регістри  загального призначення

 

cax/ax/ah/al

Акумулятор

(Accumulator

register)

Основний  регістр для зберігання операндів  арифметичних і логічних команд; у  деяких командах адресується неявно, тому його використання обов'язкове

ebx/bx/bh/bl

Базовий регістр (Base register)

Використовується  для зберігання базової адреси деякого  об'єкта в пам'яті

ecx/cx/ch/cl

Лічильник (Counter register)

Використовується  в командах, які виконують дії, що повторюються, наприклад для організації циклів (команда loop); такі команди можуть аналізувати значення есх (есх=0 — умова виходу з циклу) і автоматично зменшувати есх на одиницю за кожного проходження



виконання, а також наведемо необхідні для  їх розуміння відомості, що стосуються набору і структури регістрів  процесора. Детальнішу інформацію про  процесори Intel х86 можна знайти, наприклад, у [63, 92, 94].

 

10.4.1. Регістри процесорів х86

Сучасні процесори Pentium, як відомо, мають потужне «серце» з усіма ознаками 
архітектури RISC: великим регістровим файлом із 40 універсальними регістрами, 
механізмом перевпорядкування команд і перейменування регістрів. Арифметичні та логічні виконуючі пристрої процесора фактично працюють зовсім з іншою 
системою команд — це мікрокоманди, на які спеціальні пристрої декодування 
«розбирають» вихідний програмний код. Але все це недоступне ззовні, а програм 
на модель процесора визначає набір команд, що має типові ознаки архітектури CISC, зокрема, порівняно невелику кількість доступних програмісту регістрі и 
процесора, багато способів адресації операндів і команди, що поєднують арифметичні та логічні операції з адресацією операндів у пам'яті.

Регістри  процесора х86 поділено на групи, і майже кожен із них має своє

специфічне  призначення. Далі перелічено основні  такі групи:

  • регістри загального призначення;
  • покажчик інструкцій (або програмний лічильник) і регістр прапорців; 
    ♦  регістри сегментів;
  • регістри системних адрес;
  • регістри керування;
  • регістри налагодження і тестування;
  • регістри математичного сопроцесора;
  • регістри розширень (ММХ, ХММ).

У табл. 10.1 наведено основні відомості про деякі з регістрів [63, 94].



 

 

 

 

 

 

 

Таблиця 10.1 (продовження)

Позначення

Назва

Особливості використання

cdx/dx/dh/dl

Регістр даних

Використовується  разом із акумулятором для

 

(Data register)

зберігання  операндів; у деяких командах його використання обов'язкове, позаяк адресація може здійснюватися неявно

esi/si

Індекс  джерела

Ці  два регістри використовуються в так званих

 

(Source Index

ланцюгових  операціях, коли здійснюється

 

register)

послідовне  оброблення елементів, що утворюють

cdi/di

Індекс  одержувача (Destination Index register)

ланцюг  або неперервний ряд (наприклад, копіювання рядка символів або масиву значень

 

з одної  області пам'яті до іншої); при  цьому початкова адреса області-джерела  заноситься в esi, початкова адреса області-одержувача — в edi, а кількість елементів, що копіюються — в есх

esp/sp

Покажчик  стека

Показує вершину стека в поточному  сегменті стека;

 

(Stack Pointer

значення  цього регістра автоматично змінюється

 

register)

після виконання операцій записування  у стек і зчитування із стеку (push/pushf/pop/popf)

ebp/bp

Покажчик  бази

Може  показувати на довільні дані всередині  стека

 

(Base Pointer

й активно  використовується для передавання  даних

 

register)

через стек, наприклад під час виклику  процедури; ebp може також показувати на будь-які дані, зокрема в сегменті даних (в останньому випадку його часто використовують разом з ebx)

Покажчик інструкцій і регістр прапорців

еір/ір

Покажчик

Вказує  на команду, яку процесор має виконати

 

інструкцій

наступною (точніше, яку він наступною має

 

(Instruction

завантажити на конвеєр оброблення). Заміна вмісту

 

Pointer register)

цього регістра викликає переключення процесора на іншу команду або послідовність команд. Таку заміну не можна виконувати явно, проте її може бути здійснено автоматично після виконання деяких команд: команд переходу jmp (а також численних команд умовних переходів), команд виклику процедур call, команд організації циклів loop. Залежно від того, яку адресацію використано у програмі — 32- або 16-розрядну — процесор працює з 32-розрядним регістром еір або з його молодшою половиною ір, сумісною із програмним кодом для процесорів 8086

eflags/ flags

Регістр прапорців

Окремі  біти цього регістра — прапорці — мають

 

(Flag register)

певне функціональне призначення. Вони апаратно встановлюються в результаті виконання  певних команд та (або) умов. Значення прапорців  перевіряються під час виконання майже всіх команд і можуть впливати як на результат їх виконання, так і на режим роботи процесора. Молодша половина регістра eflags повністю аналогічна регістру flags процесора 8086




 

 

 

 

 

Таблиця 10.1 (продовження)

Позначення

Назва

Особливості використання

Регістри  сегментів

 

CS

Сегмент коду

Адресує сегмент коду, який виконується

 

(Code Segment

процесором. Для переходу в інший сегмент  коду

 

register)

необхідно завантажити нове значення в регістр cs, причому явних команд для цього не існує: це здійснюється автоматично під час виконання процесором команд jmp або call

SS

Сегмент стека

Адресує сегмент стека, з яким у поточний момент

 

(Stack Segment

працює  процесор. Для організації іншого стека

 

register)

необхідно завантажити в ss нове значення, при

 

цьому потрібно зберегти поточне значення ss, щоб мати змогу повернутися назад

ds

Сегмент даних

Адресує дані в оперативній пам'яті, з  якими працює

 

(Data Segment

процесор; сегмент ds є основним і адресується

 

register)

неявно

es, gs, fs

Додаткові

Адресують дані в оперативній пам'яті, з  якими

 

сегменти  даних

працює  процесор; ці сегменти даних потребують

 

(Extension Data

явної адресації за допомогою спеціальних  префіксів)

 

Segment register)

у командах

Регістри  системних адрес

 

gdtr

Регістр глобальної

Має 48 розрядів, з-поміж яких 32 старших розряди

 

таблиці

становлять  лінійну базову адресу глобальної таблиці

 

дескрипторів

дескрипторів  у пам'яті, а 16 молодших розрядів

 

(Global Descriptor

задають розмір таблиці

 

Table Register)"

 

Idtr

Регістр локальної

16-розрядний  регістр, що містить селектор, який

 

таблиці

вказує  на дескриптор у глобальній таблиці, що

 

дескрипторів

описує  спеціальний сегмент (локальну таблицю

 

(Local Descriptor

дескрипторів  процесу), який виконується в даний

 

Table Register)

момент

idtr

Регістр таблиці

48-розрядний  регістр, за будовою аналогічний

 

дескрипторів

регістру gdtr

 

переривань

 
 

(Interrupt

 
 

Descriptor Table

 
 

Register)

 

tr

Регістр задачі

16-розрядний  регістр, що містить селектор, який

 

(Task Register)

вказує  на дескриптор у глобальній таблиці, що описує спеціальний сегмент (сегмент  стану задачі (TSS)), який містить контекст поточного процесу

Регістри  керування

 

cr0

 

Містить прапорці, які суттєво впливають  на роботу процесора і відображають глобальні (не залежні від конкретної задачі) ознаки його функціонування. Деякі важливі системні прапорці з цього регістра: ре (Protect Enable), біт 0 — вмикає захищений режим роботи процесора; cd (Cache Disable), біт 30 — вмикає використання внутрішньої кеш-пам'яті (кеш першого рівня); pg (Paging), біт 31 — вмикає сторінкову трансляцію адрес

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