- •Лекція 1. Вступ до операційних систем.
- •1.Поняття про операційні системи та їх місце в загальній структурі комп’ютера.
- •2. Основні функції операційної системи : розширення можливостей комп’ютера та керування його ресурсами.
- •3. Історія операційних систем.
- •Лекція 2. Структура операційної системи.
- •Таблиця 2.1
- •Екзоядро
- •Модель клієнт-сервер
- •Лекція 3. Концепція процесу
- •Лекція 4. Потоки в операційних системах.
- •3. Міжпроцесна взаємодія.
- •4.Примітиви міжпроцесної взаємодії.
- •5.Семафори та їх використання.
- •6.Поняття м’ютекса.
- •7.Поняття моніторів.
- •8.Поняття про бар’єри.
- •9.Поняття про системи передачі повідомлень.
- •Лекція 5. Взаємоблокування.
- •2.Умови та моделювання взаємоблокувань.
- •3.Виявлення та усунення взаємоблокувань.
- •4.Уникнення взаємоблокувань при наявності декількох ресурсів кожного типу.
- •6. Уникнення взаємоблокувань.
- •7. Алгоритм банкіра для одного та декількох видів ресурсів.
- •8. Уникнення взаємоблокувань шляхом порушення умов їх здійснення
- •Лекція 6. Основні поняття керування пам’яттю.
- •1.Однозадачна система без підкачки на диск.
- •2.Багатозадачність з фіксованими розділами
- •3.Поняття про підкачку даних.
- •5.Віртуальна пам’ять. Основні поняття.
- •6.Віртуальна пам’ять. Сторінкова організація пам’яті.
- •7.Характеристика основних алгоритмів заміщення сторінок.
- •Лекція 7. Принципи роботи апаратури введення-виведення.
- •1.Пристрої введення-виведення.
- •2.Переривання персональної кс.
- •Лекція 8.
- •Лекція 9.
- •Лекція 10. Файли та їх властивості.
- •1.Поняття файлової системи.
- •2.Іменування файлів.
- •3.Структура файлу.
- •4.Типи файлів.
- •5.Доступ до файлів. Атрибути файла.
- •6.Файли, відображувані на адресній простір памяті.
- •7.Каталоги.
- •Лекція 11. Реалізація файлової системи.
- •1.Структура файлової системи.
- •2.Реалізація файлів.
- •3.Реалізація каталогів.
- •Лекція 12 Планування в системах з одним процесором.
- •1.Поняття про планування.
- •2.Типи планування процесора.
- •3.Планування вводу-виводу.
- •Лекція 13. Критерії планування.
- •1.Критерії короткотривалого планування.
- •2.Використання пріоритетів.
- •3.Альтернтитвні стратегії планування
- •Лекція 14. Стратегії планування.
- •1.Стратегія планування „першим прийшов – першим обслуговується”.
- •2.Стратегія”кругове планування” .
- •4.Вибір самого короткого процесу.
- •5.Стртегія найменшого часу, що залишився.
- •7.Зниження пріорітету.
- •Лекція 15. Багатопроцесорне планування і планування реального часу.
- •1. Класифікація багатопроцесорних систем.
- •3.Задачі планування в багатопроцесорній системі.
- •4. Планування процесів.
- •5.Планування потоків.
- •Лекція 16. Основні підходи до планування потоків.
- •1.Розділення навантаження.
- •2.Бригадне планування.
- •3.Призначення процесорів.
- •4.Динамічне планування.
- •Лекція 17. Планування реального часу.
- •Лекція 18.
- •4. Парадигми.
- •5. Реалізація операційної системи
- •Лекція 19. Операційні системи типу unix.
- •1.Історичні відомості про операційні системи типу unix.
- •2.Загальна архітектура системи unix.
- •3.Сучасні системи unix.
- •4.Історія виникнення операційної системи Linux.
- •5.Модульна структура операційної системи Linux.
- •6.Традиційне планування unix.
- •Лекція 20. Характеристики операційної системи Windows 2000.
- •1. Історія виникнення Windows.
- •Лекція 21. Особливості архітектури Windows xp.
- •1. Основні компоненти Windows xp.
7.Поняття моніторів.
Для того, щоб спростити написання програм в 1974 році Хоар і Брінг Хансен запропонували примітив синхронізації більш високого рівня – монітор. Монітор – це набір процедур, змінних і інших структур даних, об’єднаних в особливий модуль або пакет. Процеси можуть викликати процедури монітора, але в процедур, оголошених поза монітором нема прямого доступу до внутрішніх структур даних монітора. Монітори є структурним компонентом мови програмування, тому компілятор знає, що обробляти виклики процедур монітора потрібно інакше, ніж виклик решти процедур. Звичайно при виклику процедури монітора перші декілька команд процедури перевіряють чи нема в моніторі активного процесу. Якщо активний процес є, то викликаючому процесу потрібно почекати, в іншому випадку запит задовільняється.
Реалізація взаємного виключення залежить від компілятора, але звичайно використовується м’ютекс або бінарний семафор. В будь-якому випадку програміст, що пише код монітора, не повинен задумуватись над тим, який компілятор організовує взаємне виключення. Для цього досить знати, що забезпечивши попадання в критичні області через процедури монітора, можна не переживати за попадання в критичну область двох процесів одночасно.
Хоча монітори представляють простий спосіб реалізації взаємного виключення, цього не достатньо. У випадку проблеми виробника і споживача досить просто розмістити всі перевірки буфера на заповненність і порожність в процедури монітора, але як процес заблокується, виявивши повний буфер?
Розв’язок полягає у введенні змінних стану і двох операцій wait і signal. Коли процедура виявляє, що вона не в стані продовжувати роботу, то вона виконує операцію wait на якій-небудь змінній стану (наприклад full). Це призводить до блокування викликаючого процесу і дозволяє іншому процесу ввійти в монітор.
Другий процес, в нашому прикладі споживач може активізувати очікуючого напарника, наприклад, виконавши операцію signal на тій змінній стану, на якій він був заблокований.
Змінні стану не є лічильниками. На відмінну від семафорів вони не акумулюють сигнали, щоб в подальшому скористатися ними. Операції wait і signal подібні на sleep і wakeup, але з однією суттєвою відмінністю: невдачі застосування операції sleep і wakeup, пов’язані з тим, що процес пробував піти в стан очікування в той час, як інший процес пробував активізувати його. З моніторам такого відбутися не може.
Існує декілька мов програмування, які підтримують монітори, хоча і не завжди у відповідності з моделлю Хоара і Хансена. Одна з них – Java. Об’єктно-орієнтовна мова, що підтримує потоки на рівні користувача і дозволяє ґрупувати методи (процедури) в класи. Синхронізовані методи на мові Java відрізняються від стандартних моніторів відсутністю змінних стану.
8.Поняття про бар’єри.
Бар’єр – це механізм синхронізації, що використовується частіше для груп процесів, ніж для ситуацій з двома процесами. Деякі додатки поділяються на фази, і існує правило, що процес не може перейти в наступну фазу, поки до цього не готові всі інші процеси. Цього можна досягти, розмістивши в кінці кожної фази бар’єр. Коли процес доходить до бар’єра, він блокується, поки всі процеси не дійдуть до бар’єра.