
- •Операційні системи Конспект лекцій
- •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.8.3. Доступ до даних
Windows надає прикладним програмам API-функцію CreateFile, яка може використовуватися як для створення нового файлу, так і для відкриття існуючого. У будь-якому випадку ця функція створює в системної пам'яті об'єкт типу «відкритий файл», саме тому назву функції починається зі слова «Create».
Функція CreateFile може використовуватися для роботи з файлами будь-якої файлової системи, підтримуваної Windows (зокрема, FAT і NTFS).
Параметри цієї функції численні і дають досить гарне уявлення про можливості роботи з файлами в Windows. Деякі параметри мають сенс тільки для NTFS (але не для FAT) або тільки для Windows NT (але не для Windows 95). Список параметрів включає в себе наступні параметри.
· Ім'я файлу (включаючи шлях до каталогу, якщо файл розташований не в поточному каталозі). Замість імені файлу може також бути вказано спеціальне ім'я пристрою, в тому числі навіть ім'я фізичного або логічного диска.
· Режим доступу. Може бути вказаний доступ для читання, для запису або їх комбінація.
· Режим поділу. Він може включати в себе дозвіл іншим процесам читати файл, записувати дані в файл, видаляти файл або будь-яку комбінацію цих дозволів, в тому числі, зрозуміло, і відсутність всіх дозволів.
· Атрибути захисту. Їх використання буде описано в п. 3.8.4.2.
· Режим створення. Визначає дії функції у випадках, коли файл із заданим ім'ям вже існує і коли не існує. Визначені наступні режими.
- CREATE_NEW - Створюється новий файл. Якщо файл вже існує, видається помилка.
- CREATE_ALWAYS - Створюється новий файл в будь-якому випадку, навіть якщо файл з таким ім'ям вже існує.
- OPEN_EXISTING - Відкривається існуючий файл. Видає помилку, якщо файл не існує.
- OPEN_ALWAYS - Якщо файл існує, то він відкривається, якщо не існує - створюється новий файл.
- TRUNCATE_EXISTING - Відкривається існуючий файл, але весь його вміст видаляється. Якщо файл не існує, видається помилка.
· Великий набір атрибутів і прапорів, який слід розглянути докладніше. В даному випадку атрибутами називаються ознаки файлу, які встановлюються при його створенні, а прапорами - ознаки, що уточнюють режим роботи з відкритим файлом.
До атрибутів файлу відносяться всі ті, які Windows успадкувала від MS-DOS (тільки для читання, прихований, системний, архівний), а також атрибут «стислий» (тобто файл, що створюється в NTFS, буде зберігатися в стислому вигляді) і атрибут «тимчасовий». Цей атрибут означає, що файл, ймовірно, буде скоро видалений, а тому система повинна спробувати утримати його дані в пам'яті, не витрачаючи даремно час на запис файлу на диск.
Прапори функції надають, зокрема, наступні можливості:
· При операціях запису негайно виконувати запис на диск (очищати кеш-буфера файлу);
· Взагалі виключити використання кеша для даного файлу, завжди записувати і читати сектори даних безпосередньо з диска;
· Вказати системі бажаність оптимальної буферизації для послідовного доступу або, навпаки, для довільного доступу;
· Відкрити файл для виконання асинхронних операцій;
· Вказати системі, що файл повинен бути автоматично видалений відразу ж, як тільки він буде закритий.
Функція CreateFile повертає хендл відкритого файлу. Цей хендл може потім використовуватися при зверненні до функцій читання, записи, переміщення покажчика, очищення буферів, блокування фрагментів, закриття фала та ін
Читання і запис даних при синхронних операціях починається з поточної позиції вказівника і супроводжується зміщенням покажчика читання / запису вперед на кількість прочитаних / записаних байт. Однак якщо при відкритті файлу був вказаний прапор асинхронних операцій, то покажчик не використовується. Замість цього при кожному виклику функції читання або запису повинен задаватися додатковий параметр - зсув від початку файлу тих даних, які слід прочитати або записати.
Як ви думаєте, чому при асинхронних операціях не використовується покажчик читання / запису?
Процес, що запустив асинхронну операцію читання / запису, може потім перевірити її результат за допомогою виклику системної функції, яка, в залежності від параметрів, або чекає завершення операції, або просто перевіряє, чи завершилася вона. Крім того, є можливість зв'язати із завершенням асинхронної операції або подія (event), або функцію завершення, яка буде викликана, якщо операція завершена, а нитка процесу, що почала операцію, викликала функцію очікування (див. пп.4.5.5.2, 4.5.5.3 про події та функціях очікування).
Деякі файлові функції не вимагають хендл, тобто виконуються над закритими файлами. Сюди відносяться видалення файлу, копіювання, перейменування, переміщення файлу, пошук файлу по заданому шляху і шаблоном імені і т.п. В якості цікавих особливостей файлових операцій Windows можна відзначити наступні.
· Операції копіювання файлу або переміщення його на інший диск можна виконати викликом однієї системної функції, навіть не відкриваючи файл. В інших ОС подібні операції вимагають написання цілої процедури.
· Спеціально для заміни версій системних програм передбачений варіант перейменування / переміщення файлу з відкладанням фактичного виконання до перезавантаження системи. Іншим способом неможливо було б, наприклад, встановити нові версії системних бібліотек, оскільки існуючі версії постійно відкриті і тому не можуть бути видалені інакше як при старті системи.