
- •Операційні системи Конспект лекцій
- •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.4. Архітектура підсистеми вводу / виводу
З програмної точки зору, пристрій (або його контролер) зазвичай представлена однією або кількома регістрами. Регістр пристрої - це адресується машинне слово, використовуване для обміну даними або сигналами між пристроєм і процесором. Можна виділити два основних типи регістрів.
· Регістр даних служить для обміну даними. Запис даних в такий регістр (якщо вона можлива) означає висновок даних на пристрій, читання даних з регістра - введення з пристрою.
· Регістр управління і стану містить два типи двійкових розрядів (бітів). Біти стану служать для передачі процесору інформації про поточний стан пристрою (наприклад, прапорів готовності і помилки, сигналів переривання). Біти керування служать для передачі на пристрій команд, що дозволяють задати виконувану операцію, запустити виконання операції, встановити режими роботи пристрою і т.п.
У різних комп'ютерах використовується один із двох способів адресації регістрів пристроїв.
· Відображення регістрів пристроїв на пам'ять. При цьому способі для пристроїв відводиться певна частина адресного простору пам'яті, а для роботи з пристроями можна використовувати ті ж команди, що й для роботи з основною пам'яттю (наприклад, команду MOV).
· Адресація регістрів через порти введення / виводу. Для портів відводиться окремий адресний простір, і для роботи з ними є спеціальні команди (наприклад, IN і OUT).
Перший спосіб зручніше для програмування, оскільки дозволяє використовувати більш широкий набір команд.
Однак цей спосіб важче реалізувати на апаратному рівні, оскільки апаратура повинна визначати, чи належить конкретна адреса до пам'яті або до пристрою, і по-різному обробляти ці два випадки.
Серед різних можливих конфігурацій однопроцесорній обчислювальної системи прийнято виділяти два основних типи: системи з магістральної і з радіальної архітектурою (рис. 2-1).
Рис. 1‑1
· Магістральна архітектура заснована на підключенні всіх наявних пристроїв, включаючи процесор та пам'ять, до єдиної системної магістралі (шині), яка об'єднує в собі лінії передачі даних, адрес і керуючих сигналів. Спільне використання магістралі різними пристроями підпорядковується спеціальним правилам (протоколу), що забезпечує коректність роботи магістралі.
· Радіальна архітектура припускає, що кожен з пристроїв, включаючи пам'ять, підключається до процесора окремо, незалежно від інших пристроїв, і взаємодіє з процесором за власними правилами.
Для програміста поняття магістральної та радіальної архітектури мають дещо інший зміст, ніж для інженера-системотехніка. З точки зору програмної архітектури, неважливо, приєднане чи пристрій до процесора безпосередньо або за посередництвом системної магістралі. Важливо те, які сигнали повинна посилати і приймати програма, що працює з пристроєм, і які команди можуть для цього використовуватися.
Основна особливість магістральної архітектури - однаковий спосіб підключення всіх пристроїв. Структура регістрів пристрою стандартизуется, при цьому визначається, якими сигналами будь-який пристрій може обмінюватися з процесором і яким розрядами регістра повинні відповідати ці сигнали. Звичайно, не всяке пристрій потребує використання всього набору стандартних сигналів. Деякі типи пристроїв можуть, наприклад, не генерувати переривань, не повідомляти про помилки. Але ті сигнали, які пристрій використовує, повинні відповідати стандарту даній магістралі.
Перевагою магістральної архітектури є простота підключення нових типів пристроїв, тому така архітектура особливо зручна для відкритих обчислювальних систем, тобто таких, які розраховані на розширюваний набір периферійних пристроїв.
Навпаки, для радіальної архітектури характерний індивідуальний вибір способу підключення, найбільш зручного для кожного типу пристроїв. При цьому в принципі можна досягти економії апаратних ресурсів і більш високої ефективності. Трапляється навіть, що в одному порту об'єднуються керуючі сигнали від декількох різних пристроїв. Очевидно, подібна архітектура зручна тільки в тому випадку, коли вона розрахована на постійний набір пристроїв. Розширення радіальної системи завжди викликає труднощі.
Виходячи їх цих визначень, не так вже й легко точно охарактеризувати сучасні IBM-сумісні ПК. Вихідна модель IBM PC мала досить чітко виражену радіальну архітектуру і невеликий набір стандартних пристроїв. В наступних моделях були зроблені значні кроки по стандартизації підключення нових пристроїв. Однак і сьогодні ці комп'ютери не тягнуть на магістральну архітектуру в повному розумінні слова: у них для цього занадто багато різних шин.
Важливою деталлю архітектури сучасних комп'ютерів є такий пристрій, як контролер прямого доступу до пам'яті (ПДП, англ. DMA - Direct Memory Access). Якщо зазвичай весь обмін даними йде через регістри процесора, то ПДП увазі прямий перенос даних з пристрою в пам'ять чи назад. Роль процесора в даному випадку тільки в тому, щоб ініціювати операцію введення / виводу блоку даних, пославши відповідні команди контролеру ПДП. Далі процесор не бере участь у виконанні обміну даними. Завершивши операцію, контролер ПДП посилає сигнал переривання, сповіщаючи про це процесор. Це дозволяє підвищити продуктивність системи за рахунок часткового розвантаження процесора і магістралі.