
- •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
- •Література
3.7.3. Доступ до даних в unix
UNIX надає в розпорядження прикладних програм набір системних викликів, що дозволяють виконувати основні операції з файлами та каталогами в цілому (створення, видалення, пошук, зміна власника і прав доступу), а також з даними, що зберігаються в файлах (відкриття та закриття файлу, читання і запис даних, переміщення покажчика у файлі).
В основі роботи з даними, як і для MS-DOS, лежить поняття хендл відкритого файлу. Програма отримує значення хендл при відкритті або створенні файлу, а потім використовує хендл для посилання на відкритий файл при зверненні до функцій читання, записи, переміщення покажчика і т.п.
UNIX не має коштів управління поділом доступу при відкритті файлу, тобто завжди дозволяє декільком процесам відкривати один і той же файл. Для забезпечення коректної роботи процеси можуть використовувати блокування фрагментів файлу. Можна встановити блокування для запису (ексклюзивну блокування, див. п. 3.5) або для читання (кооперативну блокування). За замовчуванням в UNIX використовуються рекомендаційні блокування. Це означає, що система не перешкоджає процесу звертатися до заблокованого фрагменту файлу. Процес повинен сам запитувати (якщо вважає за потрібне), чи не заблокований даний фрагмент. У більш пізніх версіях UNIX стало можливим і обов'язкове блокування, при якому спроба звернення до заблокованого фрагменту призводить до помилки.
Для реалізації доступу до файлу за значенням хендл в UNIX використовуються таблиці, аналогічні таблицям JFT і SFT в MS-DOS (див. п. 3.6.4.3). Однак, на відміну від MS-DOS, запис SFT не містить копії всіх атрибутів файлу. Замість цього UNIX зберігає в пам'яті окрему таблицю копій індексних дескрипторів (inode) всіх відкритих файлів. Запис SFT містить посилання на запис таблиці індексних дескрипторів, а понад те - ті параметри, яких немає в inode: режим доступу до відкритого файлу, положення покажчика у файлі, кількість хендл, що вказують на дану запис SFT. Якщо один і той же
файл був відкритий кілька разів, то створюється кілька записів SFT, що вказують на один і той же inode.
3.7.4. Розвиток файлових систем unix
Описана вище класична файлова система UNIX є по-своєму вельми стрункої і потужною, здатної задовольнити різноманітні вимоги користувачів. У той же час ця система давно вже піддавалася критиці за два істотні недоліки, що визначаються вибором описаних вище структур даних.
Ці недоліки наступні:
· Ненадійність;
· Низька продуктивність.
Поговоримо спочатку про ненадійність. Можна назвати такі небезпечні місця в структурі файлової системи UNIX.
· Широке використання зчеплених списковому структур для зберігання життєво важливої інформації про розміщення файлів і вільних блоків. Програмістам відомий основний недолік зчеплених списків: при мінімальному спотворенні хоча б одного з покажчиків втрачається, в кращому випадку, вся наступна частина списку. Можлива і втрата даних, що не входять в ушкоджений список. Спробуйте уявити собі, що станеться на диску, якщо в якості номера непрямого блоку внаслідок апаратного збою буде записано номер ні в чому не винного блоку даних із зовсім іншого файлу ...
· Інтенсивне використання суперблоку для зберігання часто змінюється інформації. Оскільки кожна операція запису пов'язана з можливістю спотворення даних, під загрозою виявляються життєво важливі параметри файлової системи, які теж зберігаються в суперблоці, але не вимагають частих змін: розміри всієї файлової системи і її частин, розмір блоку і т.п.
· Компактне розміщення на початку дискового тому найбільш важливих метаданих (суперблок, масив дескрипторів) призводить до того, що при механічному пошкодженні початкових доріжок диска втрачається можливість доступу до всіх даних на диску.
Давно відомі і фактори, що впливають на зниження продуктивності роботи:
· Використання непрямих блоків призводить до того, що для пошуку потрібного місця в великому файлі можуть знадобитися додаткові операції читання з диску.
· Використовувані алгоритми виділення і звільнення дискових блоків за принципом «останнім звільнився - першим зайнятий» сприяють фрагментації дискового простору, а це, як нам відомо, призводить до зниження швидкості доступу.
Не дивно, що в якості заміни системи s5fs були запропоновані різні більш надійні і продуктивні файлові системи. До їх числа відносяться, наприклад, система FFS, використовувана в версії UNIX 4BSD, а також система ext2, що поставляється з Linux. Всі ці системи підтримують звичну архітектуру UNIX, включаючи структуру каталогів, жорсткі та символічні зв'язки, типи файлів, набір атрибутів. Відмінності полягають в реалізують цю архітектуру структурах дискових даних і в алгоритмах роботи з ними.
Постараємося дати загальне уявлення про напрямки удосконалення файлових систем UNIX, не вдаючись у деталі конкретних систем.
· Дисковий тому розбивається на декілька груп циліндрів. Кожна група містить копію загального суперблоку, а також окремий масив дескрипторів і блоки даних. У разі пошкодження основного примірника суперблоку його вміст може бути відновлено за збереженої копії. Пошкодження метаданих в одній з груп циліндрів не веде до втрати інформації в інших групах.
· Дані про кількість та місцезнаходження вільних блоків винесені з суперблоку і зберігаються окремо в кожній групі циліндрів.
· Для зберігання даних про вільні блоках використовується не списковому структура, а бітова карта, в якій кожен блок з групи циліндрів позначається як вільний або зайнятий. Це зменшує тяжкість наслідків у разі пошкодження даних.
· Алгоритм розміщення файлів намагається по можливості розміщувати всі файли одного каталогу, а також їх дескриптори, у межах однієї групи циліндрів. Навпаки, підкаталоги по можливості не розміщуються в тій же групі циліндрів, що батьківський каталог. Таким способом зазвичай вдається зменшити кількість переміщень головок при роботі програми з файлами.
Потрібно відзначити, що в сучасних версіях UNIX, як і в інших сучасних ОС, підтримується одночасне використання різних файлових систем на різних дискових томах. Цій меті служить поняття віртуальної файлової системи (VFS). Вона дозволяє підключати до єдиного дереву каталогів файлові системи різних типів, у тому числі такі чужорідні для UNIX, як FAT або NTFS. Для роботи з файлами використовується єдиний набір файлових функцій, однак при їх виклик, в залежності від того, до якої файлової системи належить даний файл, будуть викликатися різні підпрограми.