
- •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
- •Література
2.6. Буферизація і кешування
2.6.1. Поняття буферизації
Буферизацію в самому широкому сенсі можна визначити як таку організацію вводу / виводу, при якій дані не передаються безпосередньо з пристроя в задану область пам'яті (або з області пам'яті на пристрій), а попередньо направляються у допоміжну область пам'яті, звану буфером. Як правило, організовувані системою буфери невидимі для прикладного програміста, він отримує дані як готовий результат. Нерідко дані «по дорозі» проходять через кілька буферів різного призначення.
Існує кілька причин для використання буферизації, найважливіші з яких розглянуті нижче.
2.6.2. Згладжування нерівномірності швидкостей процесів
Досить часто в роботі ОС зустрічається ситуація, коли один процес породжує дані, які повинні оперативно оброблятися іншим процесом. В якості прикладу можна навести прийом по мережі даних, які повинні оброблятися браузером або інший прикладною програмою.
Швидкість прийому даних дуже нерівномірна: інтервали часу інтенсивного надходження даних перемежовуються з інтервалами простою. Обробка даних прикладною програмою теж не обов'язково йде з постійною швидкістю. В результаті, хоча середня швидкість обробки може бути цілком достатньої, не виключено, що в деякі моменти обробна програма буде «захлинатися» даними. Це може призвести до втрати частини даних, які не встигли пройти обробку.
Стандартним рішенням в цій ситуації є використання буфера, розмір якого досить великий, щоб вмістити всі дані, які очікують обробки. Чим більше буфер, тим менше ймовірність втрати даних через його переповнення.
2.6.3. Розпаралелювання введення та обробки
У багатьох обчислювальних системах є апаратні можливості поєднати в часі виконання операцій введення / виводу і обробку даних процесором. Щоб використовувати ці можливості, дані при введенні направляються в буфер. Після заповнення буфера його дані пересилаються в обробну програму, а їх обробка виконується паралельно з накопиченням наступної порції даних в буфері.
Ще більш ефективна схема роботи з двома перемикаються буферами. Поки в першому буфері накопичуються дані, що вводяться, попередня порція даних обробляється в другому буфері, без втрати часу на пересилку. Потім буфера міняються ролями: у першому буфері обробляється наступна введена порція даних, а другий буфер використовується для введення, і т.д.
Аналогічним чином буферизація може використовуватися і при виведенні даних.
У деяких випадках виявляється вигідно виконувати введення «з випередженням», тобто вводити ті дані, які поки не запитані оброблювальним процесом, але цілком ймовірно скоро знадобляться.
2.6.4. Узгодження розмірів логічної та фізичної записи
Логічної записом називають порцію даних, зазначену в операторі вводу / виводу. Розмір логічної запису визначається логікою роботи програми або, наприклад, логічною структурою бази даних.
При фактичному виконанні читання або запису на блоковий пристрій обробляється порція даних, звана фізичним записом або блоком. Розмір фізичного запису визначається особливостями пристрою (для диска це один сектор) і ніяк не пов'язаний з логікою програми.
На рис. 2-2 показана ситуація, коли логічна запис містить 100 байт, а фізична - 512 байт.
Рис. 2‑2
Припустимо, що логічні записи в послідовному порядку записуються у файл на диску. Якщо кожен оператор виводу логічного запису буде викликати негайний запис на диск, то видача перших п'яти логічних записів зажадає п'ять разів виконати послідовність операцій: «читання фізичного запису з диска - зміна 100 байт - запис зміненої запису на диск». На шостий раз вийде ще гірше, оскільки доведеться читати - змінювати - записувати не одну, а дві фізичних запису.
Використання буфера для накопичення даних до розміру фізичного запису дозволяє різко скоротити кількість операцій запису на диск і майже повністю виключити читання з диска.