
- •Операційні системи Конспект лекцій
- •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
- •Література
2.8. Управління пристроями в ms-dos
2.8.1. Рівні доступу до пристроїв
Система MS-DOS надає користувачеві можливості доступу до пристроїв на декількох рівнях, що відрізняються ступенем близькості до апаратури. Нижні рівні дозволяють більш повно використовувати тонкі особливості пристроїв, але за це доводиться платити складністю програмування. Верхні рівні більш зручні для вирішення стандартних завдань введення / виводу.
Рівні доступу до пристроїв показані на рис. 2-5.
Рис. 1‑5
Самий нижній рівень припускає, що програма користувача працює безпосередньо з портами введення / виводу, а також, якщо це необхідно, частково чи повністю бере на себе обробку апаратних переривань, що надходять від пристрою. В принципі, програма користувача може взагалі не використовувати засоби MS-DOS для роботи з пристроями, але при цьому їй доведеться взяти на себе багато нудної роботи.
У роботі MS-DOS широко використовуються можливості, надані BIOS (Basic Input / Output System, базова система введення / виведення) - набором програмних модулів, записаних в постійній пам'яті (ПЗУ) комп'ютера. BIOS за замовчуванням виконує обробку всіх апаратних переривань, якщо цю роботу не бере на себе DOS або прикладна програма. Крім того, BIOS містить процедури обробки ряду програмних переривань вводу / виводу.
Програмні переривання BIOS являють собою підпрограми, що виконують операції вводу / виводу і управління конкретними пристроями. Для кожного з стандартних пристроїв зарезервований свій номер переривання, а для вказівки необхідної операції використовується номер функції, що заноситься в один з регістрів процесора перед викликом переривання.
Драйвери пристроїв не викликаються безпосередньо з програми користувача. Вони викликаються з функцій DOS і виконують задану операцію, зазвичай використовуючи для цього програмні переривання BIOS, хоча можлива і пряма робота драйвера з портами і апаратними перериваннями.
Функції DOS, на відміну від переривань BIOS, працюють не з конкретною апаратурою, а з іменованими пристроями. Імена пристроїв задаються в заголовках відповідних драйверів. Наприклад, для DOS клавіатура й екран об'єднуються драйвером консольного пристрою CON.
Процедури введення / виводу, використовувані в мовах програмування (наприклад, Read і Write в Паскалі, scanf і printf в C), при компіляції реалізуються як відповідні виклики функцій DOS або, в особливих випадках, програмних переривань BIOS.
2.8.2. Драйвери пристроїв в ms-dos
Драйвер пристрою в MS-DOS складається з трьох блоків з відомими нам назвами: заголовок драйвера, блок стратегії і блок переривань. При близькому розгляді виявляється, однак, що схожість обмежується в основному назвами блоків.
Тема драйвера містить основну інформацію про пристрій: символьне або блоковий пристрій; для символьних пристроїв - ім'я пристрою; для блочних - кількість однотипних пристроїв, що обслуговуються даним драйвером; чи не є даний пристрій системної консоллю, системним годинником або порожнім пристроєм; які спеціальні операції підтримує пристрій .
У заголовку містяться адреси блоку стратегії і блоку переривань, а також адресу заголовка наступного драйвера в списку. Коли система повинна виконати запит на ввід / вивід, вона переглядає список всіх драйверів, поки не знайде пристрій з потрібним ім'ям (якщо задано символьне пристрій) або, для блокового пристрою, не визначить, який за рахунком драйвер відповідає вказаним номером (букві) диска. Потім система викликає блок стратегії знайденого драйвера, передаючи йому адресу заявки на виконання операції. Потім викликається блок переривань.
Якщо у файлі конфігурації CONFIG.SYS вказані імена файлів додаткових (завантажуваних) драйверів, то ці драйвери поміщаються в списку попереду стандартних системних драйверів. Тому, якщо ім'я пристрою для завантажуваного драйвера збігається з ім'ям стандартного пристрою MS-DOS, то буде викликаний завантажуваний драйвер, а не стандартний.
Блок стратегії драйвера MS-DOS не робить практично нічого, тільки запам'ятовує адресу заявки. Блок переривань виконує всю роботу по обробці заявки, причому у всіх стандартних драйверів цей блок працює зовсім не по перериваннях, а за опитуванням готовності. Мабуть, розробники першої версії MS-DOS припускали небудь у майбутньому реалізувати нормальну структуру драйвера, та так і не зібралися.
Заявка на виконання операції містить код операції, поле для запису результату операції, номер диска (для блокових пристроїв) та інші дані (наприклад, адресу виведених даних в пам'яті і адресу сектора на диску). Код операції визначає необхідну операцію - наприклад, читання, запис, запис з перевіркою, відкриття або закриття пристрою, перевірка зміни дискети, опитування стану пристрою і т.п. Закінчивши виконання операції, драйвер записує в поле результату, чи була операція виконана успішно або з помилкою, і з якою саме (помилка читання, помилка запису, немає паперу в принтері, не знайдений сектор на диску, неприпустима операція для даного пристрою і т.п .).