
- •Операційні системи Конспект лекцій
- •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
- •Література
5.7. Управління пам'яттю в ms-dos
MS-DOS - це ОС, що працює в реальному режимі процесора i86, що припускає використання адресного простору розміром всього лише 1 Мб. Насправді, в комп'ютерах IBM гарантується наявність лише 640 Кб основної пам'яті, старші ж адреси пам'яті зайняті під BIOS і відеопам'ять, хоча серед них трапляються розрізнені шматки оперативної пам'яті, звані UMB (верхній блок пам'яті).
Адреса в реальному режимі записується у форматі [сегмент: зсув], однак тут сегмент - це не селектор, адреси рядка таблиці сегментів, як описувалося в п. 5.4, а просто номер параграфа пам'яті (1 параграф = 16 байт). Тому можна вважати, що в MS-DOS використовуються тільки фізичні адреси.
В принципі, програми, що працюють в MS-DOS, можуть отримати доступ до пам'яті за межами 1 Мб, але для цього потрібен спеціальний драйвер розширеної пам'яті.
Оскільки ділити наявну пам'ять між декількома процесами не доводиться, розподіл виходить нехитре. Основні області пам'яті показані на рис. 5-4.
Рис. 1‑23
Нижню частину пам'яті займають модулі ОС: обробники переривань, резидентна чисть інтерпретатора команд, драйвери пристроїв. Деякі системні програми можуть бути заради економії завантажені в верхній блок пам'яті (вище 640 Кб). Все, що залишається в середині, може бути надано процесу користувача.
Для більшої економії пам'яті деякі нерезидентні модулі DOS можуть займати верхню частину області користувача, але тільки до тих пір, поки не будуть затерті користувача програмою, якою буде потрібно вся наявна пам'ять.
Частина оперативної пам'яті і вся область користувача розбита на прилеглі один до одного блоки, розмір яких кратний параграфу. Перед початком кожного блоку пам'яті розміщується блок управління пам'яттю (MCB, Memory Control Block), який займає один параграф і містить наступні дані:
· Ознака, що визначає, чи останній це блок пам'яті або за ним будуть ще блоки (відповідно буква 'Z' або 'M', це, мабуть, знову Марк Збіковскій відзначився);
· Адресу PSP програми, що володіє цим блоком (0 означає вільний блок);
· Розмір блоку в параграфах;
· Ім'я програми-власника (до 8 символів); це поле надлишково (знаючи PSP програми, можна знайти ім'я її файлу), воно було додано, ймовірно, щоб хоч якось зайняти порожні байти параграфа MCB.
Коли система повинна виділити блок пам'яті для власних потреб або за запитом програми користувача, вона переглядає список блоків від початку, переміщаючись від одного MCB до наступного. Знайшовши вільний блок достатнього розміру, система відзначає його як зайнятий відповідним власником. Якщо виділяється не весь вільний блок, то після виділеного блоку система записує ще один MCB, що описує вільний залишок блоку.
При звільненні блоку система записує 0 у полі власника MCB. Якщо з однієї або з двох сторін від вивільняється блоку лежать вільні блоки, то два чи три вільних блоку зливаються в один.
При запуску програми система виділяє їй два блоки пам'яті: спочатку невеликий блок для змінних середовища, потім найбільший серед залишилися вільних блоків для самої програми (блок PSP, див. п. 4.4.3). Зазвичай цей блок займає всю вільну пам'ять. Таке рішення прийнятно, оскільки інших претендентів на пам'ять немає.
Чому блок середовища виділяється раніше, ніж блок PSP?
При завершенні програми система переглядає всі блоки пам'яті і звільняє ті з них, власником яких вказана завершує програму. Винятком є випадок завершення з установкою резидента (п. 4.4.4), при цьому блок PSP не звільняється, але зменшується до зазначеного розміру. Надалі цей блок залишається зайнятим до перезавантаження системи.
MS-DOS надає в розпорядження користувача функції, що дозволяють виконувати основні дії з блоками пам'яті.
· Виділення блоку зазначеного розміру. Якщо вільного блоку достатньої величини не є, то система повертає максимальний розмір, який може бути виділений.
· Звільнення раніше виділеного блоку.
· Зміна розміру блоку. Зменшення блоку можливо завжди, збільшення - лише в тому випадку, якщо після даного блоку розташований вільний блок достатнього розміру.
Одним з небагатьох випадків, коли ці функції виявляються корисні, є запуск породженого процесу. Система повинна мати достатньо вільного місця, щоб розмістити блок середовища і блок PSP завантажуваної програми. Однак, як було сказано вище, уся вільна пам'ять зазвичай віддається під блок PSP поточної програми. Тому перш ніж запускати породжений процес, програма повинна зменшити свій власний блок PSP, залишивши собі необхідний мінімум.