
- •Операційні системи Конспект лекцій
- •1. Введення
- •1.1. Предмет і завдання курсу
- •1.2. Рекомендації по літературі
- •1.3. Короткий нарис історії ос
- •1.3.1. Передісторія ос
- •1.3.2. Пакетні ос
- •1.3.3. Ос з поділом часу
- •1.3.4. Однозадачні ос для пеом
- •1.3.5. Багатозадачні ос для пк з графічним інтерфейсом
- •1.4. Класифікація ос
- •1.5. Критерії оцінки ос
- •1.5.2. Ефективність
- •1.5.3. Зручність
- •1.5.4. Масштабованість
- •1.5.5. Здатність до розвитку
- •1.6. Основні функції і структура ос
- •1.7. Ос, що використовуються в подальшому викладі
- •1.7.2. Windows
- •1.7.3. Unix
- •2. Управління пристроями
- •2.1. Основні завдання управління пристроями
- •2.2. Класифікація периферійних пристроїв і їх архітектура
- •2.3. Переривання
- •2.4. Архітектура підсистеми вводу / виводу
- •2.5. Способи організації введення / виводу
- •2.5.1. Введення / висновок з опитування і по перериваннях
- •2.5.2. Активне і пасивне очікування
- •2.5.3. Синхронний і асинхронний ввід / вивід
- •2.6. Буферизація і кешування
- •2.6.1. Поняття буферизації
- •2.6.2. Згладжування нерівномірності швидкостей процесів
- •2.6.3. Розпаралелювання введення та обробки
- •2.6.4. Узгодження розмірів логічної та фізичної записи
- •2.6.5. Редагування при інтерактивному введенні
- •2.6.6. Кешування дисків
- •2.6.7. Випереджаюче читання.
- •2.7. Драйвери пристроїв
- •2.8. Управління пристроями в ms-dos
- •2.8.1. Рівні доступу до пристроїв
- •2.8.2. Драйвери пристроїв в ms-dos
- •2.8.3. Управління символьними пристроями
- •2.8.4. Управління блоковими пристроями
- •2.8.4.1. Структура диска
- •2.8.4.2. Розділи і логічні томи
- •2.8.4.3. Засоби доступу до дисків
- •2.9. Управління пристроями в Windows
- •2.9.1.1. Драйвери пристроїв в Windows
- •2.9.1.2. Доступ до пристроїв
- •2.10. Управління пристроями в unix
- •2.10.1. Драйвери пристроїв в unix
- •2.10.2. Пристрій як спеціальний файл
- •3. Управління даними
- •3.1. Основні завдання управління даними
- •3.2. Характеристики файлів та архітектура файлових систем
- •3.3. Розміщення файлів
- •3.4. Захист даних
- •3.5. Поділ файлів між процесами
- •3.6. Файлова система fat і управління даними в ms-dos
- •3.6.1. Загальна характеристика системи fat
- •3.6.2. Структури даних на диску
- •Структура записи каталога файловой системы fat
- •3.6.4. Робота з файлами в ms-dos
- •3.6.4.1. Системні функції
- •3.6.4.2. Доступ до даних
- •3.6.4.3. Структури даних у пам'яті
- •3.6.5. Нові версії системи fat
- •3.7. Файлові системи і управління даними в unix
- •3.7.1. Архітектура файлової системи unix
- •3.7.1.1. Жорсткі і символічні зв'язку
- •3.7.1.2. Монтовані томи
- •3.7.1.3. Типи і атрибути файлів
- •3.7.1.4. Управління доступом
- •3.7.2. Структури даних файлової системи unix
- •3.7.3. Доступ до даних в unix
- •3.7.4. Розвиток файлових систем unix
- •3.8. Файлова система ntfs і управління даними в Windows
- •3.8.1. Особливості файлової системи ntfs
- •3.8.2. Структури дискових даних
- •3.8.2.1. Головна таблиця файлів
- •3.8.2.2. Атрибути файлу
- •3.8.3. Доступ до даних
- •3.8.4. Захист даних
- •3.8.4.1. Аутентифікація користувача
- •3.8.4.2. Дескриптор захисту
- •4. Управління процесами
- •4.1. Основні завдання управління процесами
- •4.2. Реалізація багатозадачного режиму
- •4.2.1. Поняття процесу і ресурсу
- •4.2.2. Квазіпараллельний виконання процесів
- •4.2.3. Стану процесу
- •4.2.4. Невитісняючаі витісняюча багатозадачність
- •4.2.5. Дескриптор і контекст процесу
- •4.2.6. Реєнтерабельним системних функцій
- •4.2.7. Дисципліни диспетчеризації та пріоритети процесів
- •4.3. Проблеми взаємодії процесів
- •4.3.1. Ізоляція процесів та їх взаємодія
- •4.3.2. Проблема взаємного виключення процесів
- •4.3.3. Двійкові семафори Дейкстри
- •4.3.4. Засоби взаємодії процесів
- •4.3.4.1. Цілочисельні семафори
- •4.3.4.2. Семафори з множинним очікуванням
- •4.3.4.3. Сигнали
- •4.3.4.4. Повідомлення
- •4.3.4.5. Спільна пам'ять
- •4.3.4.6. Програмні канали
- •4.3.5. Проблема тупиків
- •4.4. Управління процесами в ms-dos
- •4.4.1. Процеси в ms-dos
- •4.4.2. Середа програми
- •4.4.3. Запуск програми
- •4.4.4. Завершення роботи програми
- •4.4.5. Перехоплення переривань і резидентні програми
- •4.5. Управління процесами в Windows
- •4.5.1. Поняття об'єкта у Windows
- •4.5.2. Процеси і нитки
- •4.5.3. Планувальник Windows
- •4.5.4. Процес і нитка як об'єкти
- •4.5.5. Синхронізація ниток
- •4.5.5.1. Способи синхронізації
- •4.5.5.2. Об'єкти синхронізації та функції очікування
- •4.5.5.3. Типи об'єктів синхронізації
- •4.5.5.4. Критичні секції
- •4.5.6. Повідомлення
- •4.6. Управління процесами в unix
- •4.6.1. Життєвий цикл процесу
- •4.6.2. Групи процесів
- •4.6.3. Програмні канали
- •4.6.4. Сигнали
- •4.6.5. Засоби взаємодії процесів в стандарті posix
- •4.6.6. Планування процесів
- •4.6.6.1. Стану процесів в unix
- •4.6.6.2. Пріоритети процесів
- •4.6.7. Інтерпретатор команд shell
- •5. Управління пам'яттю
- •5.1. Основні завдання управління пам'яттю
- •5.2. Віртуальні й фізичні адреси
- •5.3.1. Настроювання адрес
- •5.3.2. Розподіл з фіксованими розділами
- •5.3.3. Розподіл з динамічними розділами
- •5.4. Сегментна організація пам'яті
- •5.5. Сторінкова організація пам'яті
- •5.6. Порівняння сегментної і сторінкової організації
- •5.7. Управління пам'яттю в ms-dos
- •5.8. Управління пам'яттю в Windows
- •5.8.1. Структура адресного простору
- •5.8.3. Відображення виконуваних файлів
- •5.8.4. Файли, відображувані на пам'ять
- •5.8.5. Стеки і купи
- •5.9. Управління пам'яттю в unix
- •Література
4.2.7. Дисципліни диспетчеризації та пріоритети процесів
Коли планувальник процесів отримує управління, його основним завданням є вибір наступного процесу, який повинен отримати управління. Алгоритми, що лежать в основі цього вибору, визначають дисципліну диспетчеризації, прийняту в даній ОС.
Однією з найбільш очевидних дисциплін є проста кругова диспетчеризація (round robin scheduling). Її суть в наступному. Всі активні процеси вважаються рівноправними і утворюють кругову чергу. Кожен процес отримує від системи квант часу, після закінчення якого планувальник вибирає для виконання наступного процес з черги. Таким чином, якщо всі процеси залишаються активними, то система забезпечує їх рівномірне просування, що імітує паралельне виконання всіх процесів. Якщо поточний процес блокується, він випадає з кола і потрапляє в список сплячих процесів. Коли система активізує один з сплячих процесів, він включається в кругову чергу.
У певному сенсі протилежною дисципліною є фоново-оперативна диспетчеризація (foreground / background scheduling) - одна з найстаріших форм організації багатозадачного роботи. У найпростішому випадку вона включає два процеси: фоновий процес і оперативний процес (процес переднього плану). Фоновий процес виконується тільки тоді, коли спить оперативний процес. При активізації оперативного процесу відбувається негайне витіснення фонового, тобто оперативний процес має більш високий абсолютний пріоритет. Зазвичай при такій дисципліні передбачається, що активізація оперативного процесу не зажадає багато процесорного часу, так що виконання фонового процесу буде скоро відновлено. Одним із прикладів ефективного використання фоново-оперативної диспетчеризації є так звана «фонова друк», яку дозволяє виконати навіть однозадачная MS-DOS. При цьому процес виведення файлу на принтер розглядається як процес переднього плану, а звичайна діалогова робота з ОС - як фоновий процес. Оскільки обслуговування переривань від принтера займає лише долі відсотка процесорного часу, користувач не відчуває ніякого уповільнення роботи.
Між описаними двома крайнощами лежить велика різноманітність дисциплін пріоритетною диспетчеризації. Всі вони засновані на приписуванні кожному процесу при його створенні деякого числа - пріоритету. Більш високий пріоритет повинен давати процесу певні переваги перед низькопріоритетних процесами при роботі планувальника.
Призначення пріоритетів виконується користувачем або адміністратором системи, можливо також програмне зміна пріоритету процесу. На вибір оптимального рівня пріоритету впливають в основному два міркування:
· Важливість, відповідальність даного процесу або привілейоване становище запускає процес користувача;
· Кількість процесорного часу, на яке буде претендувати процес (як ми бачили в прикладі з фоновою печаткою, високий пріоритет процесу, мало завантажує процесор, майже не призводить до уповільнення роботи інших процесів).
Основний алгоритм пріоритетного планування нагадує просте кругове планування, проте кругова чергу активних процесів формується окремо для кожного рівня пріоритету. Поки є хоч один активний процес в черзі з найвищим пріоритетом, процеси з більш низькими пріоритетами не можуть отримати управління. Тільки коли всі процеси з вищим пріоритетом заблоковані або завершені, планувальник вибирає процес з черги з більш низьким пріоритетом.
Пріоритет, який присвоюється процесу при створенні, називається статичним пріоритетом. Дисципліна планування, що використовує тільки статичні пріоритети, має один істотний недолік: низькопріоритетні процеси можуть надовго опинитися повністю відлученими від процесора. Іноді це прийнятно (якщо високопріоритетні процеси незрівнянно важливіше, ніж низькопріоритетні), однак частіше хотілося б, щоб і на низькі пріоритети хоч що-небудь перепадало, нехай навіть рідше і в меншій кількості, ніж на високі. Для вирішення цього завдання запропоновано безліч різних алгоритмів планування процесів, заснованих на ідеї динамічного пріоритету.
Динамічний пріоритет процесу - це величина, автоматично розраховується системою на основі двох основних чинників: статичного пріоритету і ступеня попереднього використання процесора даним процесом. Загальна ідея наступна: якщо процес занадто довго не отримував процесорного часу, то його пріоритет слід підвищити, щоб дати процесові шанс на майбутнє. Навпаки, якщо процес занадто часто і довго працював, є сенс тимчасово знизити його пріоритет, щоб пропустити вперед зголоднілих конкурентів.
Можуть враховуватися й інші міркування, що впливають на динамічний пріоритет. Наприклад, якщо процес веде діалог з користувачем, то має сенс підвищити його пріоритет, щоб скоротити час реакції і уникнути прикрих затримок при натисканні клавіш. Якщо процес останнім часом часто блокувався, не використавши до кінця виділений йому квант часу, то це теж підстава для підвищення пріоритету: цілком можливо, процес і надалі буде так само невибагливий.