Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Обработка прерываний в защищенном режиме. Виды исключений. Формирование дескриптивный таблице прерываний

Элементы формата сектора, обеспечивающие битовую и байтовую синхронизацию при считывания информации с гибких дисков | Стандарт многоуровневого управления сетью (модель взаимодии открытых систем open system interconnection, osi). Понятие протокола, интерфейса, стек протоколов | Синхронные символьно-ориентированные и бит-ориентированные протоколы | Передача с установлением соединения и без установления соединения | Локальная сеть Ethernet. Топологии, стандарты, доступ к сети, структура кадров, расчет производительности, коллизии, домен коллизий и организация работы сети | Форматы кадров технологии Ethernet | Глобальные связи на основе сетей с коммутацией каналов | Отображение IP-адресов на локальные адреса | Протокол IP и его функции. Структура IP-пакета и его параметры. Маршрутизация в IP-сетях. Фрагментация IP-пакетов. Сборка фрагментов. | Тенденции развития микропроцессорная техника. Структура и режимы функционирования современных микропроцессоров |


Читайте также:
  1. II. Сбор и обработка персональных данных субъектов персональных данных
  2. MS PowerPoint. Создание слайда с диаграммой и таблицей
  3. Автоматизированная обработка снимков
  4. В Фокусе: формирование глобального рынка труда, кадровая безопасность
  5. Влияние налогов на формирование чистой прибыли.
  6. Внедрение центров финансового учета и ответственности на предприятии. Бюджетирование и формирование финансовой структуры организации
  7. Вопрос 44. Список в электронной таблице, его структура.

2.32. ОБРОБКА ПЕРЕРИВАНЬ В ЗАХИЩЕНОМУ РЕЖИМІ. ВИДИ ВИКЛЮЧЕНЬ. ФОРМУВАННЯ ДЕСКРИПТИВНОЇ ТАБЛИЦІ ПЕРЕРИВАНЬ.

Прерывания бывают программные (синхронные) и аппаратные (асинхронные).
Аппаратные прерывания делятся на внешние и внутренние (исключения).
Внешние прерывания бывают маскируемые и немаскируемые.

Исключения делятся на три группы:
1). Отказы (faults) – возникают при исполнении команд (например, деление на 0).
2). Ловушки (traps) – возникают после выполнения команд.
3). Выходы из режимов, процессов (abort) – не имеют точного места возникновения.

Механизм обработки прерываний микропроцессором:
1. Запоминает в стеке регистр флагов (EFLAGS), регистры CS и EIP.
2. Определяет номер прерывания по причине. Если прерывание внешнее – номер определяется по сигналу INTR путем обмена данными с контроллером прерываний. Если прерывание программное – номер определяется по команде.
3. Используя таблицу IDT, определяет адрес обработчика прерывания и загружает его в CS:EIP.
4. Выход из прерывания – по команде IRET.
При возникновении исключений № 8, 10-14, 17 микропроцессор заносит в стек 32-разрядный код ошибки.

Обработчики всех исключений, аппаратных и программных прерываний имеют свои дескрипторы, которые хранятся в IDT (Interrupt Descriptor Table).

Структура дескриптора IDT:

7              
Смещение обработчика прерывания (high) Байт доступа   Селектор обработчика прерывания Смещение обработчика прерывания (low)

Формирование таблицы IDT:

t_idt = record
off_l, {смещение обработчика прерывания – мл. часть}
sel: word; {селектор обработчика прерывания}
par, {параметры}
acc: byte; {байт доступа}
off_h: word; {смещение обработчика прерывания – ст. часть}
end;

idt: array [0..$30] of t_idt; {32 исключения + 16 внешних прерываний + 1 программное прерывание}
idt[0].off_l:= Ofs (exc_00);
idt[0].sel:= code_sel;
idt[0].par:= 0;
idt[0].acc:= $8F;
idt[0].off_h:= 0;

2.33. Розробка обробників зовнішніх апаратних переривань, виключень та програмних переривань

2.33. РОЗРОБКА ОБРОБНИКІВ ЗОВНІШНІХ АПАРАТНИХ ПЕРЕРИВАНЬ, ВИКЛЮЧЕНЬ ТА ПРОГРАМНИХ ПЕРЕРИВАНЬ.

5.9. Приклад обробки пеpеpивань в захищеному режимi

5.9.1. Опис програми P_INT

Як приклад обробки пеpеpивань в захищеному режимi в програмi P_INT розробленi процедури обробки виключень, зовнiшнiх апаратних пеpеpивань i програмних пеpеpивань, що працюють в захищеному режимi. При цьому програма P_INT виконує наступнi функцiї:


Розглянемо бiльш докладно роботу програми P_INT в захищеному режимi.

Пiсля переведення МП в захищений режим, завантаження сегментних регiстрiв вiдповiдними селекторами GDT i виведення на екран повiдомлення "Обробка пеpеpивань в захищеному режимi" програма P_INT органiзує очiкування зовнiшнiх апаратних пеpеpивань шляхом опитування значення змiнної-семафора semaf. Початкове значення змiнної semaf дорiвнює 0, i доки значення семафора не стане рiвним 1 буде тривати цикл очiкування (i обробки) пеpеpивань. Семафор встановлюється обpобником пеpеpивання вiд клавiатури пiсля натиснення клавiшi "ESC".

Обробка зовнiшнiх апаратних пеpеpивань виконується обpобниками timer, keyb, irq2_7 i irq8_15.

Обpобник пеpеpивання вiд клавiатури keyb здiйснює читання скан-коду клавiшi з порту 60h, виведення значення скан-коду натиснення клавiшi на екран i встановлення семафора semaf пiсля натиснення клавiшi "ESC" (скан-код натиснення цiєї клавiшi рiвний 1).
Обpобники iнших зовнiшнiх апаратних пеpеpивань є заглушками i виконують лише необхiдне для роботи системи скидання контролерiв пеpеpивань командами

mov al,$20
out $20,al { Скидання 1-го контpолеpа пеpеpивань }
mov al,$20
out $a0,al { Скидання 2-го контpолеpа пеpеpивань }

Оскiльки в захищеному режимi не можна використовувати функцiї DOS, для виведення iнформацiї на екран розроблений обpобник програмного пеpеpивання з номером 30h. Пеpеpивання 30h має чотири функцiї:
функцiя 1 встановлює маркер в задану точку екрана;
функцiя 2 виводить символ на екран;
функцiя 3 виводить значення байта у виглядi 2-х 16-рiчних символiв на екран;
функцiя 4 виводить на екран рядок символiв.
Функцiї 1 i 4 пеpеpивання 30h використовувались в програмi при виведеннi в задане мiсце екрана рядка "Обробка пеpеpивань в захищеному режимi", а функцiя 3 - при виведеннi обpобником пеpеpивання вiд клавiатури значень скан-кодiв клавіш.
Обpобники виключень exc_00 - exc_18, всiх зовнiшнiх пеpеpивань, а також програмного пеpеpивання 30h використовуються, окрiм програми P_INT, також в програмi P_MULTI i тому описанi в модулi PROT.

Програма P_INT здiйснює обробку всiх виключень МП за допомогою обpобникiв exc_00-exc_10, exc_0B i exc_12-exc_18. Всi обpобники виключень (окрiм обpобника виключення exc_0B) заносять в глобальну змiнну excep значення, рiвне номеру виниклого виключення, i здiйснюють повернення в реальний режим. Значення змiнної excep допомагає при налагоджуваннi визначити причину несанкціонованого завершення програми.

Обpобник виключення 11 ("Вiдсутнiсть сегмента в пам'ятi") в програмi P_INT iменується exc_0B i вiдрiзняється вiд обpобника-заглушки exc_11, описаного в модулi PROT.

Обpобник exc_0B iмiтує режим свопiнга (swapping): при формуваннi дескриптора сегмента даних бiт P байта доступу встановлюється рiвним 0, тобто iмiтується вiдсутнiсть даного сегмента в пам'ятi. Коли виконується команда звернення до цього сегмента, виникає виключення 11 i обpобник цього виключення по прочитаному в стекi коду помилки визначає номер дескриптора в GDT того сегмента, якого немає в пам'ятi, тобто сегмента даних, i присвоює бiту P дескриптора цього сегмента значення 1 ("Сегмент в пам'ятi"). Оскiльки пiсля обробки цього виключення управлiння передається знову до команди звернення до сегмента даних, то вiдбувається нормальне звернення до цього сегмента.
Таким чином це виключення виявилося непомітним (прозорим) для команди, що зверталася до сегмента. При своппiнгi вiдсутнiй в пам'ятi сегмент завантажується з магнiтного диска в пам'ять теж непомітно для програми користувача.

Програма P_INT має особливостi реалiзацiї повернення мiкpопpоцесоpа в реальний режим за командою MOV (cpu_type > 2) у порiвняннi з програмою P_MODE (див. роздiл 4). Програма P_INT при поверненнi в реальний режим виконує всi пункти, означенi в пiдроздiлi 5.6, окрiм пункту "б" (сегмент коду вже має розмiр 64 кбайти):

2. 34 Защита памяти. Уровни привилегий. Особенности защиты сегментов данных, стеки, кода и устройств ввода / вывода

2. 34 ЗАХИСТ ПАМ’ЯТІ. РІВНІ ПРИВІЛЕЇВ. ОСОБЛИВОСТІ ЗАХИСТУ СЕГМЕНТІВ ДАНИХ, СТЕКУ, КОДУ ТА ПРИСТРОЇВ ВВЕДЕННЯ/ВИВЕДЕННЯ.

Под защитой памяти понимается система правил, которые на аппаратном уровне регламентируют доступ к данным и командам в памяти в зависимости от их уровня защищенности и уровня привилегированности.

В микропроцессоре реализовано 4 уровня привилегий:

-0 - высший;
-1;
-2;
-3 - низший.

 

Защита памяти имеет дело с такими понятиями:

DPL (Descriptor Privilege Level) – уровень привилегированности сегмента. Находится в байте доступа дескриптора сегмента (биты 5-6).
RPL (Request Privilege Level) – запрашиваемый уровень привилегий. Находится в сегментном регистре (биты 0-1).
CPL (Current Privilege Level) – текущий уровень привилегий. Хранится в поле RPL регистра сегмента кода (CS).

 

Правила зашиты памяти:

1. Доступ к сегментам данных:
max (CPL, DPL) <= DPL.
Если принять CPL=RPL, то CPL <= DPL.
Т.е. уровень привилегий текущей задачи должен быть не ниже уровня привилегий необходимого сегмента данных.

2. Доступ к сегментам стека:
CPL=RPL=DPL.
Т.е. можно обращаться только к стеку с таким же уровнем привилегий, как и у текущей задачи.

3. Доступ к сегментам кода:
Для доступа к сегментам кода используются межсегментные команды JMP, CALL, RET.
а). Всегда одна программа может вызвать другую, если они находятся в одном кольце защиты.
б). Никогда программа с более высоким уровнем привилегий не может вызвать программу с более низким уровнем привилегий. Только в многозадачном режиме программа любого уровня может вызвать программу любого другого уровня.
в). Кроме двух описанных ниже случаев, программа с более низким уровнем привилегий не может вызвать программу с более высоким уровнем привилегий:
- вызов подчиненных программ (т.е. программ, которые имеют бит С=1 в байте доступа). Поле CPL не меняется.
- вызов программ через шлюз вызова. Допускается доступ не ко всей программе, а только к определенной разрешенной точке программы. Эта точка называется шлюзом. При этом программа будет работать на более высоком уровне привилегий.

 

Правила доступа для шлюзов:

Max (CPL, RPL) <= DPL шлюза.
Но CPL >= DPL вызываемой программы.


Дата добавления: 2015-11-16; просмотров: 46 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Сегментация памяти в защищенном режиме. Разработка дескрипторов сегментов формирование линейной адреса при обращении к памяти| Аппаратные средства поддержки многозадачной работы микропроцессора. Структура таблици состояния задач. Алгоритмы и механизмы переключения задач

mybiblioteka.su - 2015-2024 год. (0.008 сек.)