- •Еволюція спз.
- •Призначення та склад операційних систем.
- •Системне програмування.
- •Загальна схема трансляції
- •Основні принципи розробки системного програмного забезпечення.
- •Умови зміни станів процесу (з Рис.1.)
- •Властивості та класифікація процесу.
- •Визначення ресурсу та класифікації.
- •2. Дисципліни диспетчеризації.
- •3. Алгоритми в диспетчеризації з витісненням та без.
- •4. Способи забезпечення гарантованого обслуговування процесів.
- •5. Критерії порівняння алгоритмів диспетчеризації.
- •6. Вплив планування на ефективність обчислювальних систем.
- •7. Використання динамічних пріоритетів.
- •2. Види задач синхронізації паралельних процесів.
- •3. Синхронізація за допомогою блокування пам’яті.
- •4. Алгоритм Деккера.
- •5. Команда “перевірка” та “встановлення”.
- •6. Використання семафорів для синхронізації та впорядкування паралельних процесів.
- •7. Монітороподібні засоби синхронізації паралельних процесів.
- •8. Поштові ящики.
- •9. Конвеєри.
- •10. Черги повідомлень.
- •Неперервний розподіл оперативної пам’яті.
- •Розподіл з перекриттям.
- •Статичний розподіл пам’яті.
- •Динамічний розподіл пам’яті.
- •Розділи пам’яті з фіксованими розмірами.
- •Розділи пам’яті зі змінними розмірами.
- •Сегментна схема організації віртуальної пам’яті.
- •Сторінкова схема організації віртуальної пам’яті.
- •Сегментно - сторінкова схема організації віртуальної пам’яті..
- •Тема 7. Архітектурні особливості мікропроцесорів Intel 80x86.
- •Мал. 3.1 Схема визначення фізичної адреси для процесора 8086.
- •2. Нові системні регістри мікропроцесорів і80x86.
- •Мал. 7.2 Основні системні регістри мікропроцесорів і80x86.
- •3. Підтримка сегментного способу організації віртуальної пам'яті.
- •Мал. 7.3 Дескриптор сегменту.
- •Мал. 7.4. Селектор сегменту.
- •Мал. 7.5 Сегмент стану задачі (tss).
- •Мал. 7.6 Процес отримання лінійної адреси команди.
- •4. Підтримка сторінкового способу організації віртуальної пам'яті.
- •Мал. 7.7 Дескриптор сторінки.
- •Мал. 7.8 Трансляція лінійної адреси в мікропроцесорах і80x86.
- •5. Режим віртуальних машин для виконання додатків реального режиму.
- •6. Захист адресного простору задач.
- •Якщо цільовий сегмент є сегментом стека, то правило перевірки має вид
- •7. Механізм шлюзів для передачі керування на сегменти коду з іншими рівнями привілеїв.
- •Мал. 7.9 Механізм шлюзів для переходу на другий рівень привілеїв.
- •Мал. 7.10 Перехід на сегмент більш привілейованого коду.
- •Мал. 7.11 Формат дескриптора шлюзу.
- •Тема 8. Організація системи переривань 32-розрядних мікропроцесорів i80х80.
- •2. Типи переривань.
- •4. Узагальнена процедура обробки переривання.
- •5. Робота системи переривань у захищеному режимі роботи процесора.
- •Обробка переривань у контексті поточної задачі.
- •7. Обробка переривань з переключенням на нову задачу.
- •Тема 9. Керування вводом/виводом даних.
- •2. Режими керування вводом/виводом.
- •3. Закріплення пристроїв, загальні пристрої вводу/виводу.
- •4. Основні системні таблиці вводу/виводу.
- •Синхронний і асинхронний ввід/вивід.
- •6. Кешування операцій вводу/виводу при роботі з накопичувачами на магнітних дисках.
- •Тема 10.Організація файлових систем.
- •Тема 11. Файлові системи fat, vfat, fat32, hpfs.
- •Тема 12.Файлова система ntfs (Mew Technology File System)
- •Можливості файлової системи ntfs по обмеженню доступу до файлів і каталогів.
- •Інтерфейс прикладного програмування арі.
- •Реалізація функцій арі на рівні операційної системи.
- •Реалізація функцій арі на рівні системи програмування.
- •Реалізація функцій арі за допомогою зовнішніх бібліотек.
- •Posix інтерфейс.
- •Віртуальна машина.
- •Типи та інтерфейс користувачів.
- •Команди та командний інтерпретатор.
- •Процеси та їх виконання.
- •Підсистема вводу/виводу.
- •Структура файлової системи.
- •Засоби захисту файлів і даних.
- •Сигнали і семафори.
- •Програмні канали та черги повідомлень.
- •Розділювана пам’ять та виклики віддалених процедур.
Загальна схема трансляції
Програма, яка перетворює вихідний модуль в об’єктний на мові низького рівня або машинній мові називається транслятор.
В залежності від вхідної мови та порядку трансляції і виконання операторів програми всі транслятори поділяються на Асемблери, інтерпретатори, компілятори.
Асемблер – це транслятор з мови низького рівня. Вхідний модуль перетворюється Асемблером у об’єктний модуль, який є особливим записом об’єктної програми. Об’єктний модуль містить машинні команди та інформацію необхідну для об’єднання цього модуля з іншими незалежно – трансльованими модулями, а також і інформацію необхідну для розміщення цього модуля в оперативній пам’яті. Безпосередньо цей модуль не є виконуваною програмою – тому він потребує додаткової обробки компонувальниками.
Транслятор з мови високого рівня називається інтерпретатором або компілятором в залежності від порядку здійснення етапів трансляції і виконання операторів програми.
Схема інтерпретації програми
Схема компіляції програми
Інтерпретатор після трансляції кожного окремого оператора забезпечує його виконання. Тобто етапи трансляції і виконання почергово повторюються.
Компілятор транслює всі оператори програми, а виконання програми в цілому відбувається без його участі. Тобто етапи трансляції окремих операторів здійснюються безпосередньо один за одним і вони повністю ізольовані від процесу виконання програми.
Під час формування програми компілятор включає звернення до об’єктних модулів, які обчислюють значення математичних функцій, виконують операції вводу/виводу, тощо. Ці модулі зберігаються в бібліотеках підпрограм і автоматично вибираються з них компонувальником. Приклад звернення до об’єктного модуля з бібліотеки підпрограм в тексті програми:
uses crt;
#include <dos.h>
Компонувальник об’єднує декілька об’єктних модулів в один виконуваний (завантажувальний модуль), який готовий до безпосереднього виконання ЕОМ після його завантаження і розміщення в оперативній пам’яті (це файли з розширенням *.exe).
Схема компонування завантажуваного модуля
Необхідність об’єднання об’єктних модулів зумовлена наявністю майже в кожному модулі звертань до інших об’єктних модулів, які транслюються незалежно один від одного і зберігаються в бібліотеці підпрограми.
Компонувальник визначає в кожній машинній команді в кожному елементі даних певне місце в оперативній пам’яті і забезпечує об’єктним модулям можливість звернення між собою. Для того, щоб спростити і пришвидшити пошук і виправлення помилок в програмі, які складені користувачами, в системному програмуванні входять відлагоджувальники систем. Кожен відлагоджувальник орієнтований на сумісну роботу з програмою яка написана на певній мові програмування.
Відлагоджувальник надає засоби для перегляду на зміни значень змінних у програмі, оперативно керує ходом виконання програми, реалізує інші шляхи пошуку помилок в діалоговому режимі.
Основні принципи розробки системного програмного забезпечення.
Розглянемо 10 принципів побудови системних програм:
Частотний принцип.
Базується на розділенні програм і даних по частоті використання. Для операцій які часто використовуються створюються умови їх швидкого виконання. Найбільш часто виконувані операції створюються найкоротшими. До найбільш часто виконуваних даних забезпечується найшвидший доступ.
Принцип модульності.
Модуль – це функціональний елемент певної системи, який має певне оформлення, закінчення та наповнення в рамках даної системи, а також засоби взаємозв’язку з аналогічними модулями, з модулями більш високого рівня, або з модулями іншої системи. По своєму визначенню модуль вказує на легкий спосіб його заміни іншим при наявності певних програмних інтерфейсів. Системні програми розділяються на модулі по функціональному призначенню. Як правило, модулі впорядковані ієрархічно, що дозволяє значно спростити експлуатацію та розробку програм, зменшити кількість проектних та інших помилок.
Принцип функціональної вибраності.
Є логічним продовження попередніх двох принципів. Частина важливих модулів повинна бути постійно в активному стані з метою ефективної реалізації обчислювального процесу. Така частина модулів системної програми називається ядром. При формуванні ядра повинні бути забезпечені дві протилежності: з однієї сторони в склад ядра мають входити програми які використовуються найчастіше, з іншої сторони – розмір ядра повинен бути мінімальний.
Принцип генерованості.
Дозволяє настроювати системні програми, виходячи з конкретної апаратної конфігурації обчислювальної системи та певного кола вирішуваних задач. Цей принцип реалізується окремою програмою чи утилітою, в результаті чого отримається повна версія системної програми.
Принцип функціональної надлишковості.
Системна програма повинна мати можливість виконувати одну і ту ж саму дію різними способами.
Принцип по замовчуванню.
Полягає у зберіганні в складі системної програми певних базових описів модулів, конфігурацій, даних які визначають прогнозовані параметри апаратного та програмного забезпечення.
Принцип переміщуваності.
Полягає в проектуванні модулів системної програми таким чином, що їх виконання незалежить від їх розміщення в ОЗП. Налаштування модуля на конкретне розміщення в ОЗП відбувається перед виконанням програми і полягає у визначенні фактичних адрес команд програми, в залежності від типу використовуваної обчислювальної системи та моделі пам’яті.
Принцип захисту.
Визначається необхідністю розробки засобів, які захищають програми і дані користувача від ушкоджень та будь – якого впливу інших користувачів або інших програм. Програми повинні бути захищені як на етапі виконання, так і під час зберігання. Цей принцип в тій чи іншій мірі реалізований в кожній мультипрограмній ОС.
Принцип незалежності програм від зовнішніх пристроїв.
Дозволяє здійснювати управління та обмін даними із зовнішніми пристроями, незалежно від їх конкретних фізичних характеристик. Цей принцип в багатьох сучасних системах реалізований за допомогою механізму драйверів.
Принцип відкритості і нарощуваності.
Відкрита системна програма доступна для аналізу спеціаліста. Нарощувана програма дозволяє виконувати не лише принцип генерованості, але й дозволяє вводити в склад системи нові модулі і нарощувати існуючі.
Тема 2. Концептуальні основи системних програм
Визначення етапів та структури процесу.
Властивості та класифікація процесу.
Визначення ресурсу та класифікації.
Визначення етапів та структури процесу.
Процес – це система дій, яка реалізує певну функцію в обчислювальній системі і оформлена так, що керуюча програма обчислювальної системи може перерозподіляти ресурси цієї системи з метою забезпечення багатопрограмного режиму роботи.
Ця система дій може відбуватися по різному. Програмі в деякий момент часу може бути наданий процесор для виконання або можуть бути надані результати роботи інших процесів або інших ресурсів. Одним словом ходом виконання програми (процесу) необхідно керувати. Функція системних програм в загальному випадку, а операційної системи зокрема – забезпечення ефективного керування процесами, як по відношенню до кожного процесу, так і до їх сукупності.
Стани процесів:
Рис. 1.
При виконанні програм на процесорі обчислювальної системи визначають наступні стани процесора:
Passive – процес завантаження в пам’ять, але його виконання ще неініційоване.
Ready – процес готовий до виконання (очікує ресурс центрального процесора).
Run – процес виконується на центральному процесорі.
Wait – процес очікує звільнення необхідного ресурсу.
В залежності від типу очікуваного ресурсу розрізняють системи:
з обмеженням по вводу/виводу (в таких системах найбільший час очікування витрачається процесом при зверненні до підсистем вводу/виводу);
з обмеженням по швидкодії (найбільший час витрачається на доступ до процесора).
Будь – який процес може знаходитись в одному з перерахованих станів один раз в певний момент часу.