
- •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.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.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.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.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
- •Література
1.5. Критерії оцінки ос
При порівняльному розгляді різних ОС в цілому або їх окремих підсистем виникає вічне питання - яка з них краще і чому, яка архітектура системи переважніше, який з алгоритмів ефективніше, яка структура даних зручніше і т.п.
Дуже рідко можна дати однозначну відповідь на подібні питання, якщо мова йде про практично використовуваних системах. Система або її частина, яка гірша за інших систем у всіх відносинах, просто не мала б права на існування. Насправді має місце типова багатокритеріальна задача: є декілька важливих критеріїв якості, і система, яка випереджає інші за одним критерієм, звичайно поступається по іншому. Порівняльна важливість критеріїв залежить від призначення системи і умов її роботи.
1.5.1. Надійність
Цей критерій взагалі прийнято вважати найважливішим при оцінці програмного забезпечення, і у відношенні ОС його дійсно беруть до уваги в першу чергу.
Що розуміється під надійністю ОС?
Перш за все, її живучість, тобто здатність зберігати хоча б мінімальну працездатність в умовах апаратних збоїв та програмних помилок. Висока живучість особливо важлива для ОС комп'ютерів, вбудованих в апаратуру, коли втручання людини утруднено, а відмова комп'ютерної системи може мати тяжкі наслідки.
По-друге, здатність, як мінімум, діагностувати, а як максимум, компенсувати хоча б деякі типи апаратних збоїв. Для цього зазвичай вводиться надмірність зберігання найбільш важливих даних системи.
По-третє, ОС не повинна містити власних (внутрішніх) помилок. Ця вимога рідко буває здійсненно в повному обсязі (програмісти давно зуміли довести своїм замовникам, що в будь-якій великій програмі завжди є помилки, і це в порядку речей), проте слід хоча б домогтися, щоб основні, часто використовувані або найбільш відповідальні частини ОС були вільні від помилок.
Нарешті, до надійності системи слід віднести її здатність протидіяти явно нерозумним діям користувача. Звичайний користувач повинен мати доступ тільки до тих можливостей системи, які необхідні для його роботи. Якщо ж користувач, навіть діючи в рамках своїх повноважень, намагається зробити щось дуже дивне (наприклад, відформатувати системний диск), то найменше, що повинна зробити ОС, це перепитати користувача, чи впевнений він у правильності своїх дій.
1.5.2. Ефективність
Як відомо, ефективність будь-якої програми визначається двома групами показників, які можна узагальнено назвати «час» і «пам'ять». При розробці системи доводиться приймати багато непростих рішень, пов'язаних з оптимальним балансом цих показників.
Найважливішим показником временнóй ефективності є продуктивність системи, тобто усереднена кількість корисної обчислювальної роботи, виконуваної в одиницю часу. З іншого боку, для діалогових ОС не менш важливо час реакції системи на дії користувача. Ці показники можуть в деякій мірі суперечити один одному. Наприклад, в системах поділу часу збільшення кванта часу підвищує продуктивність (за рахунок скорочення числа перемикань процесів), але погіршує час реакції.
У програмуванні відома аксіома: виграш у часі досягається за рахунок програшу в пам'яті, і навпаки. Це повною мірою відноситься до ОС, розробникам яких постійно доводиться шукати баланс між витратами часу і пам'яті.
Турбота від ефективності довгий час стояла не першому місці при розробці програмного забезпечення, і особливо ОС. На жаль, зворотним боком стрімкого збільшення потужності комп'ютерів стало ослаблення інтересу до ефективності програм. В даний час ефективність є першорядним вимогою хіба що відносно систем реального часу.