
- •Операційні системи Конспект лекцій
- •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
- •Література
1.3.2. Пакетні ос
Історію власне ОС можна почати з появи в кінці 50-х років перших систем, що організують роботу щодо пакетного принципу.
Найважливішим організаційним зміною, подією на цьому етапі розвитку, стало масове вигнання програмістів з машинних залів, як фактора, лише вносить сум'яття в роботу.
Тепер від програміста було потрібно зібрати пакет перфокарт, що містить його програму, дані до неї, а також керуючі перфокарти. Ці карти на спеціально розробленому мовою управління завданнями (JCL, Job Control Language) пояснювали операційній системі, чиє це завдання, що потрібно зробити з програмою (наприклад, передати її транслятору з Фортрану), що робити у випадку успішної трансляції (ймовірно, пустити на рішення ), що - при наявності помилок (наприклад, перейти до іншої програми), звідки взяти вихідні дані (наприклад, з такого-циліндра магнітного диска). Крім того, там могли бути навіть вказівки на те, скільки метрів паперу можна виділити на роздруківку і яку максимальну час може зайняти робота програми.
Обійтися без настільки докладних інструкцій було не можна, тому що програміст не був присутній при запуску завдання і не міг втрутитися особисто.
Підготовлений пакет передавався, разом з іншими подібними пакетами, оператору ЕОМ, перед яким стояли дві основні задачі: щоб у пристрої введення не переводилися пакети завдань і щоб в принтері не скінчилася папір. Коли процесор закінчував обробку завдання та друк його результатів, він вводив наступний пакет і приступав до його обробці. Так досягалася основна мета пакетного режиму - виключити простої процесора через нерозторопність людей.
Незабаром розробники ОС усвідомили, що вичерпати далеко не всі резерви підвищення завантаження процесора. Операції введення і друку вимагали лише дуже невеликої частки від повної продуктивності процесора. Крім того, в ході роботи програми траплялися звернення до периферійних пристроїв (наприклад, до магнітних стрічок і, пізніше, дискам), при виконанні яких процесор знову простоював. Доцільно було знайти спосіб, щоб у ці періоди очікування завантажити процесор іншою роботою. Але для цього необхідно, щоб в пам'яті процесора знаходилися відразу кілька програм, тоді ОС змогла б перемикати процесор на виконання тієї програми, яка в даний момент може працювати.
Така організація роботи, коли в пам'яті знаходяться декілька програм і система в певні моменти перемикає виконання з однієї програми на іншу, була названа мультипрограмування. Ця важлива ідея в різних втіленнях пережила ті пакетні системи, в яких вона вперше була реалізована, і є основою для функціонування практично всіх сучасних ОС.
Серед найбільш розвинених пакетних ОС з мультипрограмування можна не назвати OS/360, основну ОС знаменитого в 60-70 рр.. сімейства ЕОМ IBM 360/370.
1.3.3. Ос з поділом часу
На межі 60-70 рр.. Найпоширенішим і не дуже дорогим периферійним пристроєм стають монітори (спочатку монохромні і працюють тільки в текстовому режимі). При цьому процесор і ОЗУ залишаються найдорожчими і громіздкими пристроями обчислювальної системи. В цих умовах виникає і швидко набуває популярності принципово новий тип ОС - системи з розділенням часу.
До однієї ЕОМ підключається декілька десятків робочих місць, обладнаних дисплеєм (монітор + клавіатура) і спільно використовують обчислювальні ресурси ЕОМ. Процесорний час поділяється на кванти тривалістю в кілька десятків мілісекунд і після закінчення кожного кванта процесор може бути переключений на обслуговування іншого процесу, іншого дисплея. Оскільки тепер підготовку текстів програм виконують самі програмісти за дисплеями, а робота по редагуванню тексту вимагає дуже малих витрат процесорного часу, процесор встигає обслужити всі робочі місця практично без відчутної затримки. Більша частина часу процесора приділяється невеликому числу робочих місць, де в даний момент запущені на виконання програми. При цьому, зрозуміло, середня швидкість роботи кожної програми зменшується, принаймні у стільки разів, скільки програм виконується одночасно.
Режим поділу часу став величезним полегшенням для програмістів, які знову змогли в деякій мірі відчути себе «господарями» ЕОМ і отримали можливість запускати програми на трансляцію і налагодження хоч кожні 5 хвилин. Це дозволило скоротити терміни розробки й налагодження програм.
Для трудомістких обчислювальних завдань, які передбачають рахунок за раніше налагодженим програмам, режим поділу часу менш ефективний, ніж пакетний, оскільки часте переключення процесора між виконуваними програмами вимагає додаткових витрат часу.
Системи поділу часу використовуються в режимі діалогу з користувачем, тому замість громіздких, деталізованих операторів JCL в них використовуються більш прості команди, що виконують елементарні дії - запуск програми, видача на екран файлу або каталогу, копіювання або видалення файлу і т.п. Користувачеві не потрібно передбачати заздалегідь всі можливі наслідки виконання команди, набагато простіше побачити результат виконання на екрані і після цього прийняти рішення, яку команду виконувати наступної. У той же час, деякі часто повторювані послідовності команд зручно описати один раз у вигляді «пакетного завдання» і потім використовувати при необхідності. У цьому плані системи поділу часу зберігають ті зручні можливості, які надавали пакетні системи.
Спочатку в якості апаратної основи систем поділу часу повинні були використовуватися «великі» ЕОМ, які пізніше стало прийнято називати «мейнфреймами» (mainframes). Пізніше, у міру прогресу обчислювальної техніки, це стало по плечу навіть мініЕВМ (так називався в ті роки клас комп'ютерів, які займали всього лише один-два невеликих шафки). Слід особливо згадати серію мініЕВМ PDP-11, що мала широке розповсюдження у всьому світі протягом півтора десятків років.
Цей період (70-ті роки в світі, 80-е в СРСР) характерний глибоким розвитком теорії і практики створення потужних ОС, містять розвинені засоби керування процесами і пам'яттю, що реалізують багатокористувацький режим роботи. З великого числа подібних систем особливої згадки заслуговує UNIX - єдина система, благополучно дожила до нашого часу.