- •Лекція 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.
Лекція 18.
Особливості проектування операційних систем.
1.Постановка задачі проектування операційної системи.
Для універсальних операційних систем основними є такі питання:
1) Визначення абстракції;
2) Забезпечення ізоляції;
3) Керування апаратурою.
Найбільш складною задачею ОС є визначення правильних абстракцій. Деякі з них такі як процеси і файли вже використовуються досить давно, а інші такі як потоки виконання представляють собою більш нові поняття. Кожна абстракція може бути реалізована у вигляді конкретних структур даних. Користувачі можуть створювати процеси, семафори, файли та інше.
2. Причини ускладнення проектування операційних систем.
Закон Мура стверджує, що апаратне забезпечення комп’ютера збільшує свою продуктивність в 100 разів за кожні 10 років. Для програмного забезпечення таких законів ще немає. З точки зору надійності роботи сучасні ОС працюють гірше ніж наприклад Unix 7 ver. Основні причини це інерція і бажання зберегти зворотню сумісність.
3. Розробка інтерфейсу операційних систем.
ОС представляє собою набір служб, велику частину типів даних і множину операцій з ними. Разом вони формують інтерфейс для користувачів системи. В даному контексті користувачів ОС є програмісти, які пишуть програми з системними викликами, а не користувачі, які запускають прикладні програми. Крім основного інтерфейсу системних викликів в більшості ОС є додаткові інтерфейси. Наприклад, потрібно написати драйвер пристрою, щоб добавити його в ОС. Ці драйвери представляють певні функції і можуть звертатись до певних системних викликів. Функції і виклики визначають інтерфейс, який суттєво відрізняється від використовуваного прикладними програмами. Основні принципи, які використовуються при проектуванні інтерфейсу: 1. Простота (досконалість досягається не тоді коли вже не має більше чого добавити). 2. Повнота – інтерфейс повинен володіти повнотою. ОС повинна виконувати те що від неї вимагається але не більше того. 3. Ефективність (якщо яка-небудь функція чи системний виклик не можуть бути реалізовані ефективно то їх не слід реалізовувати.
4. Парадигми.
Після чіткого усвідомлення цілей розпочинають проектування. Одним з питань є таке, як буде виглядати система перед користувачами. Всі її функції повинні добре узгоджуватись одна з однією, тобто повинна бути архітектурна узгодженість. В ОС є 2 типи користувачів: ті що пишуть прикладні програми і ті що їх використовують. Початком розробки системи з графічного інтерфейсу користувача представляє собою проектування зверху вниз. Реалізація в першу чергу системних викликів представляє собою проектування знизу вверх. Багатьма інтерфейсами користувачів використовується парадигма WIMP (вікна, піктограми, меню, вказівними). Яка б парадигма не використовувалась важлива її використання всіма прикладними програмами. Кожна парадигма породжує власний стиль програмування.
5. Реалізація операційної системи
Першим рішенням при розробці операційної системи яке повинні прийняти розробники це – рішення про структуру системи.
Монолітно неструктуроване влаштування представляє собою невдалу ідею.
Добре зарекомендувала себе на протязі багатьох років багаторівнева система.
Є досить багато прихильників протилежного до багаторівневих структур погляду, який базується в тому, що якщо що-небудь повинно бути виконано самою програмою користувача, то перспективно виконувати це також і на нижньому рівні. Егзо-ядро представляє собою операційну систему, побудовану у відповідності з наскрізним аргументом.
Система клієнт-сервер. Компромісом між операційною системою, яка робить все і операційною системою, що не робить нічого, є операційна система, яка робить дещо. Результатом такого дизайну є схема мікро ядра, за якою більша частина операційних систем представляє собою серверні процеси, які працюють на рівні користувача. Таке влаштування володіє найбільшою модульністю і гнучкістю в порівнянні з іншими схемами. Межею гнучкості є те, щоб кожен драйвер пристрою також робив у вигляді користувацького процесу, повністю захищеного від ядра і інших драйверів. Видалення драйверів з ядра дозволяє усунути найбільше джерело нестабільності будь-якої операційної системи – це драйвери з помилками (написані третіми фірмами). Драйвери пристроїв, повинні отримувати доступ до апаратних регістрів, тому необхідним є певний механізм, який забезпечував би такий доступ.
Розширювані системи. Ідея використання клієнт-сервер полягає в тому, щоб винести за межі ядра стільки, скільки можливо. Протилежний підхід полягає в томі, щоб помістити більше модулів в ядро, але захищеним способом. Звичайно сама розширювана система не є методом структурування О. С. Але розпочавши з мінімальної системи, яка складається в основному з механізму захисту, і поступово додаючи потрібної функційності, можна створити систему для конкретного додатку.
Потоки ядра. Інколи буває зручним дозволити існувати потокам ядра окремо від користувацьких потоків.
Статичні і динамічні структури.
Статичні структури даних завжди простіші для розуміння, легше програмуються і швидші у використанні. Динамічні структури мають більшу гнучкість.