- •Тема 1: Основні поняття обчислювальних систем Призначення та склад системного програмного забезпечення
- •Основні концепції операційних систем
- •Типи операційних систем
- •Основні етапи розвитку операційних систем
- •Функціональні компоненти операційних систем
- •Керування процесами й потоками
- •Керування ресурсами
- •Керування введенням-виведенням
- •Керування файлами та файлові системи
- •Мережна підтримка
- •Тема 2: Архітектура операційних систем Основні принципи побудови операційних систем
- •Принцип модульності
- •Принцип функціональної вибірковості
- •Принцип здатності до генерування
- •Принцип функціональної надмірності
- •Принцип віртуальності
- •Принцип незалежності програм від зовнішніх пристроїв
- •Принцип сумісності
- •Принцип відкритої і нарощуваної ос
- •Принцип мобільності (переносимості)
- •Принцип забезпечення безпеки обчислень
- •Базові поняття архітектури операційних систем
- •Ядро операційної системи
- •Монолітні системи
- •Багаторівневі системи
- •Системи з мікроядром
- •Концепція віртуальних машин
- •Засоби апаратної підтримки операційних систем
- •Інтерфейс прикладного програмування
- •Варіанти реалізації api
- •Особливості архітектури unix і Linux
- •Особливості побудови ос Linux
- •Особливості архітектури Windows xp
- •Компоненти режиму ядра
- •Компоненти режиму користувача
- •Об’єктна архітектура Windows xp
- •Тема 3: Процеси та потоки
- •Базові поняття процесів та потоків
- •Блок керування процесом
- •Операції над процесами
- •Обробка переривань
- •Алгоритми планування процесів
- •Витісняючі та невитісняючі алгоритми планування
- •Нитки, потоки (Thread)
- •Керування процесорами
- •Планування з переключення та без переключення
- •Лекція 4: Ядро операційної системи
- •Основні функції ядра
- •Асинхронні паралельні процеси
- •Взаємо-виключення
- •Семафори
- •Кільцевий буфер
- •Конвеєр (програмний канал)
- •Черги повідомлень (Queue)
- •Лекція 5. Керування ресурсами
- •Керування пам’яттю
- •Ієрархія пам’яті
- •Розподіл пам’яті
- •Зв’язний розподіл пам’яті для одного користувача
- •Мультипрограмування з фіксованими розділами
- •Мультипрограмування із змінними розділами
- •Боротьба з фрагментацією
- •Стратегії розміщення інформації в пам’яті
- •Системи з розподілом часу. Сторінкова організація пам’яті. Концепція віртуальної (уявної) пам’яті.
- •Принцип кешування даних
- •Лекція 6. Керування даними Файлова система
- •Функції файлової системи
- •Ієрархія даних
- •Об’єднання в блоки та буферизація
- •Організація файлів
- •Методи доступу
- •Характеристики файлів
- •Файлова система
- •Виділення та звільнення місця в пам’яті
- •Зв’язаний розподіл пам’яті
- •Незв’язаний розподіл пам’яті
- •1) Розподіл за допомогою списків секторів
- •2) Поблочний розподіл
- •Дескриптор файлу (file descriptor)
- •Матриця керування доступом
- •Керування доступом в залежності від класів користувачів
- •Копіювання та відновлення інформації
- •Планування роботи з дисковою пам’яттю
- •Призначення планування
- •Цільові характеристики принципів планування
- •Оптимізація пошуку циліндру
- •Оптимізація за часом очікування записів
- •Архітектура сучасних файлових систем
- •Лекція 8. Основи організації ms-dos
- •Будова та функції основних складових дос
- •Керування пам’яттю
- •Відображена пам’ять
- •Розширена пам’ять
- •Висока пам’ять
- •Верхня пам’ять
- •Драйвери верхньої та розширеної пам’яті
- •Завантажувані модулі com та exe – файли
- •Логічна структура диску в ms-dos
- •Формат елементів таблиці розділів
- •Запис завантаження (boot)
- •Використання boot-сектору
- •Визначення формату fat
- •Формат fat
- •Файли та каталоги
- •Недоліки ms-dos
- •Переваги які надає користувачам Windows
- •Windows як операційна оболонка
- •Обмін даними в Windows
- •Зв’язування чи вбудовування
- •Первинність повідомлень: механізм повідомлень
- •Незалежна (preemptive) багатозадачність
- •Взаємодія 32– та 16–розрядних кодів
- •Робота з 16–розрядними продуктами
- •Робота з dos–продуктами
- •Робота 32–розрядних Windows–продуктів
- •Вдосконалення розподілу системних ресурсів
- •Vcache – 32–розрядний дисковий кеш
- •Варіанти модифікацій ос Windows xp
- •Нові характеристики реалізовані в Windows xp
- •Продуктивність
- •Лекція 8. Ос unix
- •Ядро ос unix
- •Генерування ос
- •Процеси
- •Початкове завантаження. Процеси 0 та 1
- •Файлова система unix
- •Будова файлової системи unix
- •Каталоги
- •Тема 1: Основні поняття обчислювальних систем 1
- •Тема 2: Архітектура операційних систем 9
- •Тема 3: Процеси та потоки 25
Черги повідомлень (Queue)
Це складніший, в порівнянні з каналами, метод зв’язку між процесами. За допомогою черг можна організувати такий обмін, коли декілька процесів поставляють повідомлення деякій задачі-приймачу. При цьому тільки процес-приймач може читати та вилучати повідомлення з черги, а процеси-клієнти мають право тільки розміщати в чергу свої повідомлення. Таким чином черга працює тільки в одному напрямку. Якщо необхідний двосторонній зв’язок, то потрібно створити дві черги.
Черга та конвеєр мають наступні відмінності:
1) Черги повідомлень дають можливість реалізувати декілька дисциплін обробки:
FIFO – записано першим, прочитано першим;
LIFO – записано останнім, прочитано першим;
пріоритетний – повідомлення вичитуються з врахуванням їх пріоритетів;
довільний – повідомлення можна вичитувати в довільному порядку.
Канал забезпечує тільки дисципліну FIFO.
2) Прочитане з конвеєра повідомлення, вилучається з нього. При читанні з черги, повідомлення автоматично не вилучається з неї, тому при необхідності, може бути прочитане декілька разів.
3) У чергах знаходяться не самі повідомлення, тільки їх адреси в пам’яті та розмір. Ця інформація розміщується в загальному сегменті пам’яті доступній всім задачам, що спілкуються за допомогою черги.
Кожний процес, який використовує чергу, повинен попередньо отримати дозвіл на використання спільного сегменту пам’яті. Черга – це також системний ресурс.
Під час читання з черги задача-приймач користується наступною інформацією:
- ідентифікатором процесу (PID) передавача повідомлення;
- адресою та довжиною повідомлення;
- ознакою очікування, коли черга порожня;
- пріоритетом повідомлення;
- номером семафору, який звільняється коли повідомлення поміщається в чергу.
Тупики
У багатопрограмній системі процес знаходиться в стані тупику, дідлоку (deadlock) або клінчу (clinch), якщо він очікує деякої події, яка ніколи не відбудеться.
Системна тупикова ситуація, чи „зависання” системи – це ситуація, коли один чи кілька процесів знаходяться у стані тупику (клінчу).
Одна із основних функцій ОС – розподілення ресурсів. Коли ресурси розподіляються поміж багатьма користувачами, кожному з яких надається право виключного керування виділеними йому ресурсами, можливе виникнення тупиків, які не дають процесам деяких користувачів хоч коли-небудь завершитися.
У більшості випадків в ОС тупики виникають у результаті звичайної конкуренції за право мати в розпорядженні певні ресурси (як правило, це ресурси послідовного використання).
Розглянемо таку ситуацію. Двом процесам, що працюють в багато-задачній системі, для виконання своєї роботи потрібні два ресурси, наприклад Друкарка та Диск.
Нехай після того як процес А захопив Друкарку (встановив блокуючи змінну) він був перерваний. Керування отримав процес В, який спочатку захопив Диск, але при виконанні наступної команди (захоплення Друкарки) був заблокований, так як Друкарка вже захоплена процесом А. Керування знову повертається процесу А, який пробує захопити Диск та блокується, оскільки Диск вже виділений процесу В. І в такому стані процеси А та В можуть знаходитися безмежно довго.
Можливі такі варіанти уникнення тупику:
Тупикові ситуації треба відрізняти від звичайних черг, хоча і ті і інші виникають при сумісному використанні ресурсів і зовні виглядають подібно: процес призупиняється та очікує звільнення ресурсу. Але черга – це нормальне явище, ознака високого коефіцієнту використання ресурсів при випадковому надходженні запитів. Вона виникає тоді, коли ресурс є недоступним у біжучий момент, але через деякий час він звільниться і процес продовжить своє виконання.
Тупик, навпаки, в деякому розумінні є ситуацією, що не розв’язується. Звичайна тупикова ситуація. Кожен з процесів утримує ресурс, якого потребує інший процес. Причому ні один з процесів не хоче звільнити ресурс, що належить йому. Кожен з процесів очікує звільнення ресурсу іншим процесом.
Для виникнення тупику необхідні наступні умови:
1) процеси вимагають надання їм права монопольного керування ресурсами, що їм виділяються (умова взаємо-виключення);
2) процеси утримують за собою ресурси, які їм виділені, очікуючи в той же час виділення додаткових ресурсів (умова очікування ресурсів);
3) ресурси неможливо відібрати у процесів (які їх утримують) доки ці ресурси не будуть використані для завершення роботи (умова неможливості перерозподілу);
4) існує кільцевий ланцюг процесів, у якому кожен процес утримує за собою один чи декілька ресурсів, що погрібні наступному процесові з ланцюжка (умова кільцевого очікування);
Виникнення тупику неможливе, коли не виконується хоча б одна із перелічених чотирьох умов. Стратегія боротьби з тупиками полягає в тому, щоб усунути хоча б одну із зазначених умов існування тупику.
