МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Керiвництво программиста

    є. Містити до 8192 дескрипторів.

    Звертання до необхідного дескриптору здійснюється з допомогою

    селектора, що міститься в відповідному сегментном регістрі. Селектор подає

    собою 16-разрядный покажчик, що має три поля (рисунок 1.13.).

    Поле RPL (біти 1-0) визначає рівень привілей запитання. Це

    двухрозрядний код, що вказує допустимий рівень захисту сегменту, що може

    бути вибраний з допомогою даного селектора.

    Поле TI (біт 2) служить індикатором таблиці. Його значення вказує

    таблицю, що вибирається: GDT при TI=0, LDT при TI=1.

    Поле ІНДЕКС (біти 15-3) служить індексом для вибору одного з 8192

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

    Селектор з нульовим значенням називається нуль-індикатором. Він

    забезпечує звертання до першого дескриптору в таблиці GDT. Цей дескриптор

    не використовується при роботі процесора, тому при його вибірці виконується

    переривання.

    Кожна з таблиць має відповідний регістр: GDTR, LDTR, IDTR. Регістр GDTR

    містить 48 розрядів (40 в 80286), з яких 32 (24 в 80386) задають базову

    адресу таблиці, а 16 розрядів вказують її обсяг в байтах мінус 1. Якщо

    подставити в молодші 3 розряду селектора нулі, то отримається зміщення

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

    якщо зміщення виходить за межі таблиці, виробляється виключення. Якщо

    порушення межі немає, зміщення підсумовується з базовою адресою таблиці, в

    результаті утвориться лінійна адреса дескриптора. Дана перевірка і наступне

    формування адреси справедливі для всіх таблиць.

    Регістр LDTR містить 16-разрядный покажчик, що визначає розміщення в

    GDT дескриптора таблиці, що використається LDT. Дескриптор LDT містить 32-

    розрядний (24-розрядний в 80286) базову адресу таблиці і її 16-розрядний

    розмір, що при завантаженні регістру LDTR вибираються з GDT і зберігаються

    в внутрішніх програмно недосяжних регістрах процесора.

    Після вибору відповідного дескриптора формування лінійної адреси

    здійснюється шляхом додавання базової адреси, що міститься в дескрипторі, і

    відносної адреси, що утвориться в відповідності з що використаються засобом

    адресації.

    Окрім базової адреси і розміру сегменту дескриптора визначають ряд

    інших важливих його атрибутів. В загальному вигляді формат дескриптора

    уявлений на рисунку 1.14.

    В процесорі 80286 біти 63-48 зарезервовані і повинні бути рівним нулю.

    В поле “доп. Атрибути” присутнє 4 біти:

    . Біт дрібності G (біт 55) вказує, в яких одиницях заданий розмір сегменту:

    в байтах при G=0 або сторінках обсягом по 4 Кб при G=1. Таким чином, в

    процесорах 80386+ сегмент може мати розмір до 220*4Кб= 4Гб;

    . Біт розрядність D (біт 54). Даний біт має сенс тільки для сегментів коду

    і стека. Для сегменту коду він задає розрядність операндів і адреси за

    замовчанням. Для сегменту стека він задає розрядність осередків стека,

    при D=1 для стекових операцій використовується регістр ESP, і осередок

    стека має 32 розряди, т. є. Навіть при вталкуванні в стек 16-розрядного

    слова ESP зменшиться на 4;

    . Біт 53 передвизначений для майбутніх розширеннь і повинен містити 0;

    . Біт 52 не використовується.

    Байт доступу дескриптора визначає права доступу до сегменту ,що

    вибирається. В залежності від вмісту сегменту байт доступу має різноманітні

    формати (малюнок 1.15), хоча призначення ряду полів залишається однаковим.

    Однакове призначення мають наступні поля:

    . Біт присутності Р визначає наявність відповідного сегменту в пам'яті.

    Якщо Р=0 (сегмент буде відстуній), те даний дескриптор не

    використовується для формування адрес. В цьому випадку вміст інших

    розрядів дескриптора може бути довільним. Якщо в регістр сегменту

    надходить селектор дескриптора, що є Р=0, те процесор генерує виключення

    “відсутність сегменту”. Обработчик даного виключення може підвантажити

    необхідний сегмент з диску;

    . Поле DPL вказує рівень привілей дескриптора. В залежності від

    співвідношення значень DPL, CPL (поточний рівень привілей) і RPL, що

    задається в молодших бітах селектора, дозволяється або забороняється

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

    вимагається захисту сегменту;

    . Системний біт S визначає роль що вибирається дескриптора в системі. При

    S=1 дескриптор забезпечує звертання до сегментів кодів або даних.

    Дескрипторы, що є S=0, служать для звертання до таблиць LDT, сегментів

    TSS, або шлюзів для входу в інші задачі або програми, включаючи

    обработчики перериваннь. Такі дескриптори називаються системними.

    Поле типу системного дескриптора визначає його тип. Типи системних

    дескрипторов наведені в таблиці 1.1.

    Таблиця 1.1 Типи системних дескрипторов.

    |Тип |Визначення |Тип |Визначення |

    |0 |Не використовується |8 |Не використовується |

    |1 |Доступний TSS 286 |9 |Доступний TSS 386+ |

    |2 |Таблиця LDT |A |Зарезервирован |

    |3 |Зайнятий TSS 286 |B |Зайнятий TSS 386+ |

    |4 |Шлюз виклика 286 |C |Шлюз виклика 386+ |

    |5 |Шлюз задачі |D |Зарезервирован |

    |6 |Шлюз перериваннь 286 |E |Шлюз перериваннь 386+ |

    |7 |Шлюз ловушки 286 |F |Шлюз ловушки 386+ |

    В процесорі 80286 доступні тільки типи з 0 по 7.

    Можна виділити три основних класу системних дескрипторів.

    Дескриптори таблиць LDT (тип 2) забезпечують звертання до локальної

    таблиці дескрипторів для вибору сегментів.

    Дескрипторы сегментів TSS (типи 1 3 9 В) використовуються при

    переключенні задач в багатозадачному режимі. Біт 1 в байті доступу сегменту

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

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

    виконує виклик задачі, і скидається в нуль при виконанні повернення до

    попередньої задачі. Б зайнятості використовується для запобігання

    повторного виклика вже працюючої задачі. Переключення на зайняту задачу

    наводить до генерації виключення 13.

    Відзначимо, що дескриптори LDT і TSS завжди повинні мати значення біта

    розрядності D=0.

    Дескриптори шлюзів (типи 4-7, C, E, F) використовуються для звертання

    до програм і задач, а також при обробці перериваннь і ловушек.

    Формати байта доступу для дескрипторів кодів і даних (S=1) показані на

    рисунку 1.15. Вони відрізняються значеннями б виконавчості Е: Е=1 для

    сегментів кодів і Е=0 для сегментів даних і стека.

    Біт звертання А встановлюється в одиницю у разі звертання до сегменту

    т. є. При завантаженні відповідного дескриптора в сегментний регістр. Цей

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

    пам'ять, що таким чином виявляє незапитані сегменти, що є А=0. Сегменти,

    довгий час що залишаються незапитаними, виводяться з оперативної пам'яті на

    диск, звільняючи місце для інших сегментів.

    Біт дозволу читання R вводиться для сегменту кодів і дозволяє при R=1

    виробляти читання його вмісту. При R=0 допускається тільки вибірка вмісту

    цього сегменту для виконання через регістр CS. Спроба читання в цьому

    випадку викличе виключення 13. Відзначимо, що виключення цього типу виникне

    також при спробі запису в сегмент програм незалежно від значення біту R.

    Біт підпорядкування З визначає додаткові правила звертання, що

    забезпечують захист сегментів програм.

    Біт дозволу запису W вводиться для сегментів даних. Дозволяє при W=1

    або забороняє при W=0 зміна вмісту цих сегментів. Читання з сегментів даних

    розв'язане завжди.

    Біт направлення розширення ED визначає розміщення сегменту даних

    відносно базової адреси. При ED=0 (розширення вверх) дані в сегменті

    розміщуються в направленні зростання адрес від базової адреси до межі. При

    ED=1 (розширення вниз) дані в сегменті розташуються в направленні зменшення

    адрес. Таким чином, при розширенні вверх відносна адреса осередка сегменту

    повинна бути менш або рівна значенню розміру сегменту, при розширенні вниз

    відносна адреса повинна бути більше розміру сегменту.

    Захист пам'яті.

    Процесор має спеціальні засоби, що забезпечують в захищеному режимі

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

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

    регулює доступ до того або іншого сегменту в залежності від рівня його

    захищеності і від ступеню важливості запитання. В процесорі встановлені

    чотири рівня привілей PL, що задаються номерами від 0 до 3. Найбільш

    привілейованим є рівень з меншим номером. Ступінь захищеності сегменту

    також має чотири рівня, що схематичні подаються в вигляді вкладених колець

    захисту (малюнок 1.16).

    Відповідні рівні захищеності ілюструються на прикладі сегментів кодів.

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

    номером 3. Рівні з 0 по 2 відводяться для системних програм.

    В відповідності з рівнями привілей і захищеності встановлені наступні

    правила доступу для сегментів кодів і даних.

    1. Дані з сегменту, що є рівень захисту PL можуть бути вибрані програмою,

    що є такий же або більш високий рівень привілей.

    2. Сегмент кодів (процедура), рівень ,що є захисту PL, може бути викликаний

    програмою, що є такий же або більш низький рівень привілей.

    Необхідно відзначити, що правило 2 не виконується при викликові

    сегментів кодів, що є встановлений біт підпорядкованості С=1 в байті

    доступу дескриптора.

    Рівні захисту і привілей визначаються двома бітами, значення яких

    вказує номер кільця захисту. В залежності від місця розміщення біти мають

    різноманітне призначення.

    Рівень привілей дескриптора DPL задається бітами 5 і 6 в байті доступу

    дескриптора. Значення DPL вказує рівень захищеності сегменту, т. є. Номер

    кільця захисту, до якого він відноситься.

    Рівень привілей запитання RPL задається бітами 0 і 1 селектора.

    Значення RPL визначає рівень привілей, ініціатора запитання-звертання до

    сегменту. Ініціатором є програма або влаштування, що з допомогою селектора

    буде в обігу до пам'яті системи.

    Поточний рівень привілей CPL задається бітами 0 і 1 селектора,

    розміщеного в регістрі CS. Визначає рівень привілей в нинішній момент

    сегменту ,що виконується програми.

    Процесор має спеціальну команду ARPL, що використається для корекції

    значення RPL селектора. При цьому селектор служить першим операндом

    команди. В якості другого операнда в регістр завантажується поточне

    значення CS. При виконанні команди порівнюються значення двох молодших

    бітів операндів, що містять RPL і CPL. Поле RPL селектора приймає

    максимальне з значень RPL і CPL, т. Е. Встановлюється мінімальний рівень

    привілей запитання. Якщо значення RPL при цьому змінилося, те

    встановлюється ознака ZF.

    Звертання до сегментів кодів і даних в захищеному режимі виробляється з

    урахуванням описаної вище системи привілей. При цьому правила залежать від

    типу сегменту.

    Звертання до сегментів даних виробляється з допомогою селекторів, що

    завантажуються в регістри DS, ES, FS, GS. При звертанні аналізується

    значення RPL селектора і CPL програми. Ефективний рівень привілей (EPL) для

    запитання даних в цьому випадку визначається як максимальне з значень RPL і

    CPL. Звертання до сегменту ,що запрошується даних дозволяється, якщо його

    рівень захисту DPL і EPL. Порушення цього правила викликає прерывание типу

    13.

    Звертання до сегментів кодів, т. є. Передача керування реалізується при

    виконанні команд міжсегментних переходів. Правила звертання до сегментів

    кодів залежать від значення біта підпорядкованості в байті доступу

    дескриптора.

    Звертання до підлеглих сегментів допускається тільки з програм, що є

    такий же або більш низький рівень привілей. Таким чином, в програмах з

    поточним рівнем привілей CPL можуть виконуватися міжсегментні команди JMP,

    CALL з передачею керування підлеглому сегменту, що є DPL і CPL. При такій

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

    Звертання до непідлеглих сегментів з допомогою команд JMP і CALL

    допускається тільки в випадку, якщо значення CPL поточної програми рівно

    DPL сегменту. Крім того, команда CALL може викликати сегменти програм з

    більш високим рівнем привілей, використовуючи механізм шлюзів (або

    вентилів).

    Менш привілейована процедура може викликати більш привілейовану, будучи

    в обігу до неї через дескриптор шлюзу виклика, що визначає доступну крапку

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

    системи. Формат дескриптора шлюзу виклика уявлений на рисунку 1.17.

    В процесорі 80286 бвти з 48 по 63 не використовуються і повинні бути

    рівні 0.

    П'ятибайтове поле WC вказує кількість параметрів, що переносяться в

    стек нової програми. Параметри подають собою 16-разрядные слова для 16-

    разрядных програм (в тому числі і для процесора 80286) і 32-разрядные слова

    для 32-разрядных програм.

    При викликові програм через шлюз повинні виконуватися наступні правила.

    Значення RPL селектора шлюзу і CPL викликаючої програми повинні бути менш

    або рівним значенню DPL в байті доступу шлюзу.

    Якщо програма, що викликається має інший (більш високий) рівень

    привілей для неї створюється новий стек. При цьому в регістри SS і (E)SP з

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

    нового стека. В цей стек послідовно вводяться старі значення SS і (E) SP;

    параметри, переносимі з старого стека; старі значення CS і (E) IP. Число

    переносимих параметрів визначається полем WC, причому вибираються останні з

    завантажених в старий стек параметрів. Стать команді RET виробляється

    відновлення з стека старого вмісту регістрів SS, (E)SP і CS, (E)IP.

    Реалізація введення-виведення в захищеному режимі виробляється з

    урахуванням CPL програми, що виконується. Величина CPL порівнюється зі

    значенням поля IOPL в регістрі (E)FLAGS. Введення-виведення виробляється

    тільки при виконанні умови CPL менш або рівно IOPL.

    Багатозадачність.

    Багатозадачністю називається такий засіб організації роботи системи,

    при якому в її пам'яті водночас містяться програми і дані для виконання

    декількох процесів обробки інформації (задач). При цьому повинен

    забезпечуватися взаємний захист програм і даних, стосовних до різноманітних

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

    (переключення задач). Процесори починаючи з 80286 мають ефективні засоби

    підтримки багатозадачного режиму. В якості таких засобів використовується

    структура даних, організована в вигляді сегменту, що називається сегментом

    стану задачі TSS. Апаратними засобами для підтримки багатозадачности

    служить регістр задачі TR, в що з GDT може бути завантажений дескриптор

    задачі.

    Кожна задача має свій сегмент TSS, структура якого перебує з двох

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

    рішення даної задачі. Додаткова частина може містити яку-або інформацію про

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

    допустимі адреси приладів введення/висновку (тільки 80386+) і бітовую карту

    віртуальних перериваннь (тільки Pentium+). Розглянемо утримання

    обов'язкової частини TSS (таблиці 1.2 і 1.3).

    Перші два байта використовуються для зберігання селектора TSS

    попередньої задачі, при виконанні якої відбувся виклик даної задачі. В це

    поле заноситься вміст регістру TR для попередньої задачі, якщо

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

    сегментных регістрів, регістрів загального призначення, регістру прапорів і

    покажчика команд. При переключенні задач вміст означених полів з

    викликаного TSS завантажується в відповідні регістри. При наступному

    переключенні поточний вміст регістрів заноситься в TSS даної задачі, після

    чого виробляється завантаження регістрів з TSS нової задачі.

    Поля SS0, (E) SP0, SS1, (E) SP1, SS2, (E) SP2 служать джерелом нового

    покажчика стека при зміні поточного рівня привілей (передачі керування).

    Біт ловушки T в TSS викликає при Т=1 переривання типу 1 при

    переключенні на дану задачу. Це переривання використовується при отладке

    програмного забезпечення.

    Бітова карта перенаправлення перериваннь БКПП забезпечує можливість

    автоматичного перенаправлення програмного переривання в віртуальном режимі.

    Бітова карта введення-виведення БКВВ забезпечує індивідуальний захист

    кожного порту введення-виведення. При записі в біті БКВВ нуля дозволяє при

    CPL>IOPL звертання до відповідного порту. За останнім байтом БКВВ повинен

    слідувати заключний байт, що містить 1 в усіх розрядах. Адреса цього байта

    повинна відповідати межі сегменту.

    Дескриптор TSS повинен зберігатися тільки в GDT. Тому звертання до

    дескриптору TSS з допомогою селектора, що є біт TI=1, викликає виключення

    10.

    Для переключення задач процесор використає звичайні команди

    міжсегментного переходу JMP, виклика CALL і повернення IRET. Якщо селектор

    команди JMP або CALL вибирає з таблиці GDT системний дескриптор, у якого

    поле типу рівно 1 (для 80286) або 9 (для 80386+), виконується переключення

    задач. При цьому селектор заноситься в TR. Слідує відзначити, що команди

    передачі керування містять зміщення. Однак при переключенні задач воно

    ігнорується.

    При переключенні задач з допомогою команд JMP або CALL повинні

    Страницы: 1, 2, 3, 4, 5, 6


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.