
- •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
- •Література
5.8.3. Відображення виконуваних файлів
При запуску нового процесу Windows використовує практично той же механізм виділення регіонів пам'яті, який був описаний в попередньому пункті. Відмінність в тому, що виділення пам'яті виконує сама система. Крім того, немає необхідності у використанні сторінкового файлу, оскільки для зберігання сторінок, витіснених на диск, як не можна краще підходить сам EXE-файл (або DLL-файл, що містить поділювану бібліотеку функцій). При запуску програми Windows резервує достатню кількість віртуальних сторінок і закріплює за ними блоки EXE-файлу. При цьому немає необхідності виконувати таку дію, як «завантаження» програми в традиційному сенсі. Читання кодів програми виконується по мірі необхідності, відповідно до загального принципу завантаження сторінок по вимозі.
Як правило, текст програми не піддається змінам в ході її виконання. Це означає, що відповідні віртуальні сторінки залишаються «чистими» і при їх витісненні немає необхідності в записі на диск. Якщо один і той же виконуваний файл використовується одночасно декількома процесами (що цілком можливо для EXE-файлу в разі запуску декількох екземплярів програми, а для DLL-файлів є правилом), то на один і той же файл відображаються віртуальні сторінки кожного з цих процесів. При цьому цілком можливо, що в таблицях сторінок різних процесів один і той же виконуваний файл буде відповідати різним діапазонам віртуальних адрес.
Проблема виникає в тому випадку, якщо по логіці роботи програми повинна виконуватися запис в деякі сторінки пам'яті, відповідні виконуваного файлу. Це нормальне явище, оскільки до складу EXE-файлу можуть входити області пам'яті, відведені для статичних змінних програми. Очевидно, не можна дозволити програмі змінювати свій власний файл тільки тому, що змінилися значення змінних. Тим більше, якщо файл використовується відразу в декількох процесах і в кожному з них змінні приймають різні значення. Вихід, використовуваний Windows NT в цій ситуації, полягає в наступному. Всі віртуальні сторінки, відповідні виконуваному файлу, виділяються зі спеціальним атрибутом доступу PAGE_WRITECOPY, тобто «Копіювання при записі». Поки процеси тільки читають дані з цих сторінок, все відбувається, як описано вище. Якщо ж процес намагається виконати запис на сторінку з таким атрибутом, то відбувається переривання, яке система обробляє таким чином. У сторінковому файлі виділяється блок, у який копіюється вміст даної сторінки з EXE-файлу. У таблиці сторінок позначається, що ця віртуальна сторінка тепер закріплена не за EXE-файлом, а за блоком, виділеним з сторінкового файлу. Після цього операція запису успішно виконується, а при витісненні сторінки вона буде збережена в сторінковому файлі. Таким чином, сторінковий файл таки використовується, але тільки для тих сторінок програми, які змінюються в ході роботи.
Якщо запускається EXE-файл знаходиться на дискеті, то система відразу копіює його в сторінковий файл, оскільки використовувати для підкачки сторінок таке повільне і ненадійне пристрій, як діскетной накопичувач, було б украй неефективно.