
- •Операційні системи Конспект лекцій
- •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.4. Робота з файлами в ms-dos
3.6.4.1. Системні функції
Для роботи з файлами і каталогами системи FAT в MS-DOS передбачений досить багатий набір функцій. Всі вони викликаються за допомогою команди програмного переривання int 21h, а конкретна функція визначається числом, занесеним в регістр AH. Ці функції дозволяють, зокрема:
· Створювати файл, вказуючи його повне ім'я;
· Видаляти файл;
· Змінювати атрибути файлу;
· Перейменовувати файл або переміщати його в інший каталог того самого диска [5];
· Шукати в заданому каталозі всі файли, імена яких відповідають заданим шаблоном (наприклад, шаблоном «XYZ??. C *» відповідають всі файли, імена яких починаються з «XYZ» і містять рівно 5 символів, а розширення починається з букви «C» );
· Створювати і видаляти каталоги;
· Задавати поточний диск і поточний каталог;
· Відкривати файл, отримуючи доступ до його даних, і закривати файл.
3.6.4.2. Доступ до даних
У MS-DOS існує два різних набору функцій, що дозволяють працювати з даними файлів. Один з них, заснований на використанні блоку управління файлом (FCB), навряд чи кимось використовувався в останні 20 років, проте зберігається з міркувань сумісності з версією MS-DOS 1.0. Загальноприйнятий метод роботи з файлами заснований на використанні хендл [6].
Щоб відкрити існуючий файл, слід викликати відповідну функцію, вказавши в якості параметрів ім'я файлу і бажаний режим доступу (один з трьох: тільки читання, тільки запис, читання і запис). У більш пізніх версіях MS-DOS з'явилася також можливість вказувати режим поділу, як розглянуто в п.3.5. Будь-який файл розглядається як послідовність байт, а якщо програма воліє розглядати файл як набір записів, то вона повинна сама вести перерахунок номера запису в зсув (в байтах) від початку файлу. Операції читання і запису завжди виконуються від поточної позиції, яка називається покажчиком читання / запису, і призводять до зміщення покажчика вперед на прочитане або записане кількість байт. Можливість довільного доступу до даних забезпечується операціями переміщення покажчика.
Хендл - це деяке число, яке система повертає користувача програмі при вдалому виконанні операції відкриття або створення файлу. Значення цього числа не грає ролі для програми. Важливо лише те, що при наступних зверненнях до відкритого файлу програма повинна передавати цей хендл системі як покажчик на цей файл.
MS-DOS надає цілком достатній набір функцій для роботи з відкритими файлами. Сюди включаються функції читання і запису довільного числа байтів, функція переміщення покажчика в довільну точку файлу, функції установки і зняття блокування фрагментів файлу, примусового очищення кеш-буферів файлу (зазвичай очищення виконується тільки при закритті файлу або при браку буферів, див. п.2.6 .6; примусова очищення гарантує негайне збереження змін на диску).
При виклику функції відкриття файлу можна замість імені файлу вказати ім'я будь-якого символьного пристрою, наприклад, «PRN:». При цьому також повертається хендл, з яким можна виконувати операції запису так само, як якщо б цей хендл вказував на дисковий файл. Зрозуміло, не можна відкрити принтер для читання, а також не можна виконувати переміщення покажчика назад.
При запуску будь-якої програми вона отримує «в подарунок» від MS-DOS п'ять вже відкритих хендл з номерами від 0 до 4. З них найбільш важливими є хендл 0, який за визначенням вказує на стандартний ввід програми, і хендл 1 - стандартний вивід. Хендл 2 означає стандартний пристрій для виведення повідомлень про помилки, хендл 3 - стандартний пристрій послідовного введення / виводу (COM-порт), хендл 4 - стандартний принтер.
Вище, в п. 2.2, давалося інше визначення стандартного вводу і виводу, як пристроїв, що використовуються «за замовчуванням». Тут немає протиріччя. Компілятори мов програмування, зустрічаючи виклики процедур вводу / виводу без вказівки файлу, транслюють їх у виклики системних функцій MS-DOS з хендл, відповідно, 0 або 1.
Якщо програма запускається з командного рядка MS-DOS, то зазвичай хендл 0 вказує на клавіатуру (точніше, на пристрій CON :), а хендл 1 - на екран монітора (теж пристрій CON:, але працююче на висновок). Однак користувач може використовувати символи перенаправлення стандартного введення (знак «<») і виводу (знаки «>» і «>>»). Наприклад, програма, запущена за допомогою команди «MY_PROG <INFILE.TXT> PRN» буде використовувати в якості стандартного вводу файл INFILE.TXT, а стандартний висновок направить на принтер. Знак «>>» означає додавання даних у кінець файлу стандартного виводу, знак «>» - перезапис файлу заново. Щоб виконати зазначене користувачем перенаправлення стандартного введення або виведення, система відкриває заданий файл або пристрій (а при знаку «>>» ще й виконує переміщення покажчика в кінець файлу) і забезпечує доступ до нього з запускається програми через стандартний хендл 0 або 1. Таким чином, працююча програма взагалі не знає, які саме пристрої або файли є її стандартним вводом і виводом.
Перенаправлення стандартного введення і виведення може бути виконане і програмою користувача. Зазвичай це робиться перед тим, як дана програма запускає яку-небудь іншу програму, передаючи їй переслані стандартні хендл.