
- •Лабораторна робота n7
- •Зміст роботи.
- •Довідкові дані.
- •Суть захищеного режиму
- •Захист від взаємного впливу програм.
- •Елементи організації захищеного режиму
- •Елементи системи привілеїв
- •Переривання в захищеному режимі.
- •Етап 1. Переключення в захищений режим та повернення в режим реальних адрес.
- •Перевірка поточного режиму процесора
- •Підготовка системних структур даних для роботи в захищеному режимі
- •Переключення процесора в захищений режим
- •Виведення повідомлення на екран
- •Послідовність дій для переводу процесора в режим реальних адрес.
- •Переформувати дескриптори сегментів даних і стека згідно вимог:
- •Завантажити селектори обновлених дескрипторів
- •Переключення в режим реальних адрес, вихід в dos, (припускаємо, що логічний сегмент нашої програми - code)
- •Int 21h ; чекать введення з клавіатури
- •Int 10h ; переключить відеоконтролер
- •Етап 2. Підготовка системних структур даних для забезпечення функціонування механізму переривань
- •Формування процедур обробки переривань
- •Розміщення та формування дескриптора сегмента Int_code в gdt.
- •Формування таблиці векторів переривань (idt)
- •Формування та запис вказівника таблиці векторів переривань.
- •Відновлення стандартної таблиці переривань при переключенні в реальний режим
- •Завдання на лабораторну роботу
- •Ускладнені завдання.
- •Питання для перевірки.
Завдання на лабораторну роботу
Кожний студент повинен виконати не менше трьох експериментів по активізації захисту. Перелік експериментів:
.Перевірка захисту від виходу за межі сегменту даних.
.Перевірка захисту від запису в заборонений для запису сегмент даних.
Перевірка захисту від читання із сегменту кодів.
Перевірка захисту від запису в сегмент кодів.
Перевірка захисту від виходу за межі сегменту кодів.
Перевірка захисту від виходу за межі сегменту стека.
Перевірка присутності сегменту.
Перевірка захисту від завантаження в сегментний регістр селектора дескриптора сегмента іншого типу.
Перевірка захисту від завантаження сегментний регістр селектора неіснуючого або некоректного дескриптора.
Перевірити захист від порушення превілей.
В дескрипторі сегменту даних встановити поле Limit=0, а біт G=1. Експериментально визначити розмір сегменту.
Створити додатковий сегмент даних з DPL=0. Завантажити в регістр GS селектор цього сегменту з RPL=1. Експерементально установити значення DPL в дескрипторі та втіноьвій частині GS
Створити додатковий сегмент кодів з DPL=0. Викликати процедуру з цього сегменту кодів при RPL=1 та RPL=0
Перевірити запис 1 в біт A
Експерементально пересвідчитись, що зміна полів дескриптора в пам'яті без перезаваннтаження селектора не змінює властивостей діючого сегмента.
Для перевірки необхідно після переключення в захищений режим задати команду (або послідовність команд), яка приведе до відповідного порушення правил використання сегментів. При необхідності, правила використання сегментів змінюються шляхом зміни вмісту дескрипторів. Зміну вмісту дескрипторів виконати в захищеному режимі.
Перелік варіантів
№ варіанта |
№ експерименту |
||||
1 |
1 |
7 |
4 |
15 |
|
2 |
3 |
8 |
7 |
14 |
|
3 |
2 |
10 |
9 |
11 |
|
4 |
8 |
1 |
6 |
12 |
|
5 |
4 |
2 |
10 |
15 |
|
6 |
5 |
3 |
9 |
13 |
|
7 |
7 |
8 |
1 |
12 |
|
8 |
2 |
5 |
9 |
11 |
|
9 |
9 |
7 |
2 |
12 |
|
10 |
3 |
6 |
10 |
13 |
|
11 |
1 |
9 |
5 |
14 |
|
12 |
7 |
2 |
11 |
15 |
|
13 |
3 |
5 |
9 |
11 |
|
14 |
7 |
1 |
4 |
12 |
|
15 |
5 |
6 |
11 |
13 |
|
16 |
8 |
2 |
4 |
14 |
|
17 |
7 |
4 |
10 |
15 |
|
18 |
8 |
5 |
2 |
11 |
|
19 |
9 |
6 |
3 |
12 |
|
20 |
10 |
7 |
4 |
13 |
|
21 |
1 |
8 |
7 |
14 |
|
22 |
2 |
9 |
8 |
15 |
|
23 |
3 |
10 |
9 |
11 |
|
24 |
4 |
1 |
10 |
12 |
|
25 |
5 |
2 |
1 |
13 |
|
26 |
6 |
3 |
2 |
14 |
|
27 |
7 |
4 |
3 |
15 |
|
28 |
8 |
5 |
4 |
13 |
|
29 |
9 |
6 |
5 |
11 |
|
30 |
10 |
7 |
6 |
12 |
|