
- •Операційні системи Конспект лекцій
- •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
- •Література
3.6.5. Нові версії системи fat
Структури даних файлової системи є однією з найбільш консервативних, погано піддаються змінам характеристик ОС. Проблема полягає в тому, що при змінах структур даних важко зберегти сумісність з більш ранніми версіями. Було б катастрофою, якби всі безліч накопичених у світі файлів в системі FAT раптом перестало читатися в новій версії системи. Тим не менш, деякі цікаві зміни все ж вдалося ввести при випуску версій Windows 95 і 98.
У Windows 95 було подолано прикре обмеження довжини імені файлу - знамените правило «8 + 3». Здавалося б, при розмірі записі каталогу в 32 байта важко сподіватися на довгі імена файлів. Тим не менш, було знайдено забавне рішення цієї проблеми.
Розробники з Microsoft звернули увагу, що ті записи каталогу, в яких зустрічається безглузда комбінація бітових атрибутів «прихований + системний + тільки читання + мітка тому», просто-напросто ігноруються як системними програмами MS-DOS, так і поширеними утилітами інших розробників. Це дало можливість використовувати записи з такою комбінацією для зберігання довгого імені файлу. Як і раніше для кожного файлу в каталозі є основна запис у звичайному, старому форматі, що містить атрибути файлу, номер першого кластера і обов'язкове «короткий» ім'я. Однак якщо користувач при створенні файлу вказує ім'я, яке не вкладається в стандарт «8 + 3» або містить малі літери, то перед основною записом буде вставлено потрібну кількість додаткових записів з розбитим на шматочки «довгим ім'ям» в кодуванні UNICODE (по 2 байти на символ , що дозволяє використовувати будь-який відомий алфавіт). Довжина імені, згідно з документацією, може досягати 255 символів (насправді, трохи менше).
Починаючи з Windows 98, з'явилася можливість використовувати новий різновид файлової системи - FAT-32. Її відмінність від FAT-12 і FAT-16 полягає не тільки в більшої розрядності номера кластера (хоча і це дуже важливо для великих дисків), але і в тому, що Microsoft нарешті зважилася використовувати 10-байтовий резерв, який невідомо для яких цілей зберігався незайнятим в кожному записі каталогу. Завдяки цьому з'явилася можливість додати до дати / часу
останньої модифікації файлу ще два тимчасових штампа: дату / час створення (насправді, це дата / час останньої зміни каталожної записи) і дату останнього доступу до файлу.
3.7. Файлові системи і управління даними в unix
3.7.1. Архітектура файлової системи unix
Тут розглядається класична файлова система UNIX, звана іноді системою s5fs і підтримувана всіма версіями UNIX. Сучасні удосконалення файлової системи будуть розглянуті в п. 3.7.4.
3.7.1.1. Жорсткі і символічні зв'язку
Структуру каталогів файлової системи UNIX називають іноді мережевий, щоб підкреслити її відмінність від строго ієрархічної (деревної) структури каталогів таких систем, як, наприклад, FAT. Відмінність ця полягає в поняттях жорстких і символічних зв'язків файлу.
Жорстка зв'язок означає зв'язок між ім'ям файлу і самим файлом. Особливість UNIX в тому, що будь-який файл може мати декілька (точніше, необмежена кількість) жорстких зв'язків, тобто необмежену кількість імен. Це можуть бути різні імена в одному каталозі або навіть ім'я, збережене в різних каталогах одного дискового тому.
Чи є якась користь від кількох імен одного файлу? Безумовно, є. Припустимо, користувач часто використовує якусь системну програму або файл даних, що лежить десь глибоко в одній з гілок дерева каталогів. Замість того, щоб кожного разу вказувати довгий шлях до потрібного файлу, користувач може просто створити нову жорстку зв'язок, тобто дати файлу зручне ім'я і помістити це ім'я у свій особистий каталог. UNIX надає для цього команду link, яка створює нове ім'я для зазначеного файлу.
Що станеться, якщо один з користувачів видалить ім'я файлу з каталогу? Відбудеться тільки обрив однієї з жорстких зв'язків. Поки у даного файлу залишаються інші імена, файл продовжує існувати. Тільки після того, як видалені всі імена файла, система розуміє, що файл перестав бути доступний будь-кому, і видаляє сам файл.
Всі жорсткі зв'язку (імена) одного файлу абсолютно рівноправні, серед них можна виділити якесь «основне» ім'я.
Дещо іншим чином працює символічна зв'язок. Такий зв'язок являє собою файл, який містить тільки повне ім'я іншого файлу. Важливо при цьому те, що файл позначений в системі саме як символічний зв'язок, а не просто текстовий файл, випадково зберігає ім'я файлу. Коли файл символічної зв'язку використовується як аргумент системної команди або функції, UNIX автоматично підставляє замість нього той файл, на який вказує зв'язок.
Можна коротко сказати, що жорстка зв'язок вказує на сам файл, а символічна - на ім'я файлу. Обидва типи зв'язків проілюстровані на рис. 3-4.
Рис. 1‑13
У прикладі на малюнку показаний файл даних, для якого є три жорсткі зв'язки, тобто три імені в каталогах системи, позначені як «Ім'я 1», «Ім'я 2» і «Ім'я 3». Крім того, в системі є файл типу «символічний зв'язок», який містить одне з імен файлу даних. Файл символічної зв'язку, як і будь-який інший файл, доступний по імені і в даному випадку має два імені (дві жорстких зв'язку): «Ім'я
4» і «Ім'я 5». Таким чином, використання будь-якого з п'яти імен в якості, наприклад, імені файлу, що відкривається приведе до відкриття одного і того ж файлу.
Припустимо, адміністратор системи вирішив замінити деякий файл його більш свіжою версією, залишивши те ж саме ім'я файлу. Якщо деякі користувачі зберігали жорсткі зв'язки на колишню версію, то вони так і будуть нею користуватися, поки явно не видалять її ім'я і не створять зв'язку на нову версію. Якщо ж користувач зберігав символічний зв'язок, то вона тепер буде вказувати на нову версію.
У Windows використовується певний аналог поняття символічної зв'язку - ярлик файлу (shortcut). Відмінність у тому, що з точки зору файлової системи Windows ярлик не є якимось особливим типом файлу, це звичайний текстовий файл з розширенням LNK. Ярлик розпізнається не файловою системою, а такими програмами, як Провідник (Explorer).