- •Системне програмне забезпечення Конспект лекцій з дисципліни „Системне програмне забезпечення”
- •2 Концептуальні основи ос.....................................................................................16
- •2.4 Концепція віртуалізації....................................................................................28
- •2.5 Концепція переривань.....................................................................................30
- •5 Операційна система unix....................................................................................57
- •1 Операційні системи та середовища
- •Основні означення та терміни
- •Сучасні системи програмування
- •Віртуальний адресний простір
- •Операційні системи для персональних комп’ютерів
- •1.5 Принципи побудови ос
- •1.5.1 Модульність
- •1.5.2 Функціональна вибірковість
- •1.5.3 Генерованость ос
- •1.5.4 Функціональна надлишковість
- •1.5.5 Незалежність програм від зовнішніх пристроїв
- •1.5.7 Відкритість та нарощуваність ос
- •1.5.9 Забезпечення безпеки обчислень
- •1.5.10 Принципи проектування ос
- •2 Концептуальні основи ос
- •2.1 Процеси
- •2.1.1 Означення процесу та граф його існування
- •2.1.2 Класифікування процесів
- •2.2 Ресурс
- •2.2.1 Означення ресурсу
- •2.2.2 Властивості та класифікування ресурсів
- •2.3 Система керування процесами
- •2.3.1 Дворівнева система керування процесами
- •2.3.2 Дисципліни розподілу процесів
- •2.4 Концепція віртуалізації
- •2.5 Концепція переривань
- •3 Захищений режим 32-розрядних процесорів
- •3.1 Основні поняття захищеного режиму
- •3.2 Сегментний механізм віртуалізації пам’яті
- •3.3 Сторінковий механізм віртуалізації пам’яті
- •4 Архітектура операційних системWindows
- •4.1 Архітектура ос Windows 98se
- •4.1.1 Драйвери пристроїв
- •4.1.2 Диспетчер віртуальних машин
- •4.1.3 Встановлювані файлові системи
- •4.1.4 Диспетчер конфігурування
- •4.1.5 Диспетчер драйверів wdm
- •4.1.6 Ядро Windows 98se
- •4.1.8 Оболонка ос
- •4.1.9 Стандартні програми Windows 98se та додатки
- •4.2 Мережна підтримка ос Windows 98se
- •4.2.1 Взаємодія відкритих систем
- •4.2.2 Мережна архітектура Windows 98se
- •4.3 Апаратна підтримка захисту ос
- •4.4 Особливості розподілу оперативної пам’яті в ос Windows nt
- •4.5 Архітектура Windows 2000
- •5 Операційна система unix
- •5.1 Загальна характеристика ос сімейства unix
- •5.2 Архітектура операційної системи unix
- •5.3 Функціонування ос unix
- •5.3.1 Ядро системи
- •5.3.2 Файлова підсистема
- •5.3.3 Підсистема керування процесами та пам’яттю
- •5.3.4 Підсистема введення/виведення
- •5.3.5 Користувачі ос unix
- •5.4 Поняття процесу в ос unix
- •5.4.1 Компоненти процесу
- •5.4.2 Ідентифікатор процесу
- •5.4.2.1 Ідентифікатор батьківського процесу
- •5.4.2.2 Ідентифікатор користувача та групи
- •5.4.3 Стани процесу в unix
- •5.4.4 Керування процесами
- •5.5 Права доступу ос unix
- •5.5.1 Поняття прав доступу користувача
- •5.5.2 Основні біти доступу
- •5.5.3 Додаткові біти доступу
- •5.5.4 Сполучення бітів доступу
- •5.6 Мережні можливості ос unix
- •Список рекомендованої літератури:
3 Захищений режим 32-розрядних процесорів
3.1 Основні поняття захищеного режиму
Захищений режим (Protected Virtual Address Mode) – основний режим роботи 32-розрядних процесорів. У цьому режимі процесор використовує лінійну модель пам’яті й може адресувати 4 Гбайти фізичної пам’яті. При використанні ж віртуальної пам’яті для кожного процесу в захищеному режимі можна відбивати до 64 Тбайтів, а середньостатистична кількість одночасно присутніх в ОС завдань сягає 80. Врешті, режим віртуального процесора 8086 (v86) – це особливий стан задання віртуального режиму, в якому процесор функціонує як 8086 з можливістю використання 32-розрядних адрес та операндів.
Захищений режим призначено для забезпечення незалежності виконання кількох завдань, як ОС, так і додатків, що потребує захисту ресурсів одного завдання від впливу іншого. Головним ресурсом, який захищається, є пам’ять, в якій зберігаються коди, дані, системні таблиці, наприклад таблиця векторів переривань тощо. Захищати доводиться апаратуру, до якої є доступ через переривання та команди введення/виведення.
У захищеному режимі процесор апаратно зреалізовує безліч функцій захисту, необхідних для побудови супервізора багатозадачної ОС, в тому числі й віртуальної пам‘яті [1, 5].
3.2 Сегментний механізм віртуалізації пам’яті
У мікропроцесорах фірми Intel та ОС фірми Microsoft, орієнтованих на Intel-сумісні процесори, зорганізовування пам’яті грунтується на сегментуванні за максимального розміру сегмента 4 Гбайти. ОС надає завданням сегменти, але в реальному режимі кожне завдання може перевизначити сегментні регістри, які задають початок сегментів у пам’яті й, тим самим, увірватися до чужої область даних чи коду.
Наприклад, команда:
MOV ES: [BX],DX
надає таку нагоду.
У захищеному режимі сегменти також розподіляються ОС, але додаток може дістати дозвіл від неї лише на ті сегменти пам’яті, які мають дескриптори в таблицях дескрипторів сегментів. Наприклад, у фрагменті програми мовою асемблера:
START: MOV AX,DATA ; cуміщення
MOV DS,AX ; сегментів
MOV ES,AX ; даних
ОС сама замість символьної змінної DATA підставить значення початку сегментів у вільній області пам’яті. У сегментні регістри програмно завантажуються 16-розрядні селектори, за допомогою яких з таблиць будуть обиратися дескриптори (описувачі) сегментів.
Селектор має поля INDEX, TI та RPL.
15
0
INDEX вказує на дескриптор сегмента, що вміщує параметри: розташування у пам’яті, розмір, права доступу.
ТІ=1 вказує на локальну дескрипторну таблицю, а ТІ=0 – на глобальну.
Якщо сегментний регістр не використовується, то в нього завантажується нульовий селектор сегмента. Спроба звертання за таким сегментним регістром викликає програмне вилучення. При завантаженні нульового селектора у регістр CS або SS також виникає вилучення.
Поле RPL вказує на потрібний рівень привілеїв.
Захист пам’яті за допомогою сегментування не дозволяє:
використовувати сегменти не за призначенням, наприклад, трактувати коди інструкцій як дані й навпаки;
порушувати права доступу (намагатися змодифіковувати сегмент, призначений дише для читання, звертатися до сегмента без достатніх привілеїв тощо;
адресувати елементи, котрі виходять за межі сегмента;
змінювати вміст таблиць дескрипторів без достатніх привілеїв.
Якщо процес, перебуваючи в режимі завдання, спробує звернутись до сегмента, який належить ядру, процесор згенерує апаратне вилучення, а ядро відправить процесові відповідний сигнал.
Рисунок 3.1 – Транслювання адреси з використанням механізму сегментації
На рис. 3.1 подано сегментний спосіб транслювання адреси. LDT – локальна дескрипторна таблиця, забезпечує транслювання віртуальних адрес сегментів процесу; GDT – глобальна дескрипторна таблиця, забезпечує транслювання віртуальних адрес сегментів ядра, наприклад при опрацьовуванні системного виклику чи переривання. Для кожного процесу створюється власна LDT, а GDT використовується усіма процесами і створюється при завантаженні ОС.
Кожен запис до LDT чи GDT є дескриптором сегмента, який може бути кількох типів: коду, стека, даних. Дескриптори у GDT забезпечують багатозадачність, передавання керування від процесу до ядра (шлюзи). Заповнює таблиці дескрипторів ядро, а процесор виконує відбивання адрес на апаратному рівні.
Лінійна адреса обчислюється як сума базової адреси сегмента, що зберігається в дескрипторі з глобальної та локальної таблиць, та зміщення у віртуальній адресі; тлумачиться як фізична адреса й використовується для адресування фізичної пам’яті.
У кожній локальній дескрипторній таблиці є інформація про поточне розташування сегмента в оперативній пам’яті або на твердому диску, що ідентифікується за допомогою „біта присутності” (Present). Якщо біт встановлено, то в поле „адреса” рядка LDT диспетчер записує адресу, з якої сегмент розпочинається, а в полі „довжина сегмента” зазначається кількість адресованих комірок пам’яті. У спеціальних бітах встановлюються права доступу сегмента та позначення про звернення до даного сегмента.
Оскільки в оперативній пам’яті можна розміщувати лише ті сегменти, з якими даного часу працює ОС, загальний обсяг віртуального простору адрес є більший, аніж фізичний, і є можливе розміщення в пам‘яті більшої кількості завдань одночасно. Це призводить до збільшення коефіцієнта мультипрограмування і до більш ефективного використання ресурсів.
Реалізація віртуальної пам’яті на підставі лише сегментування не є гнучкою. Сегмент може або бути цілковито присутнім в оперативній пам’яті, або перебувати в зовнішній пам’яті, чи у виконуваному файлі. У багатозадачному режимі за великого розміру сегмента одночасне виконання кількох великих процесів зумовить конкуренцію за ресурси пам’яті та інтенсивний обмін даними поміж оперативною пам’яттю та твердим диском. Обмін сегментами різного розміру призведе до фрагментування та незначної ефективності використання пам’яті.