
- •6.080401 “Інформаційні управляючі системи та технології”
- •6.080402 “Інформаційні технології проектування”
- •6.080401 “Інформаційні управляючі системи та технології” 1
- •Розділ 1 Основні концепції операційних систем
- •1.1 Поняття операційної системи, ії призначення та функції
- •1.1.1 Поняття операційної системи
- •1.1.2 Призначення операційної системи
- •1.1.3 Операційна система як розширена машина
- •1.1.4 Операційна система як розподілювач ресурсів
- •1.2 Класифікація сучасних операційних систем
- •1.3 Функціональні компоненти операційних систем
- •1.3.1 Керування процесами і потоками
- •1.3.2 Керування пам’яттю
- •1.3.3 Керування введенням-виведенням
- •1.3.4 Керування файлами та файлові системи
- •1.3.5 Мережна підтримка
- •1.3.6 Безпека даних
- •1.3.7 Інтерфейс користувача
- •Розділ 2 Архітектура операційних систем
- •2.1 Базові поняття архітектури операційних систем
- •2.1.1 Ядро системи. Привілейований режим і режим користувача
- •2.2 Реалізація архітектури операційних систем
- •2.2.1 Монолітні системи
- •2.2.2 Багаторівневі системи
- •2.2.3 Системи з мікроядром
- •2.2.4 Концепція віртуальних машин
- •2.3 Особливості архітектури: unix і Linux
- •2.3.1 Базова архітектура unix
- •2.3.2 Архітектура Linux
- •Розділ 3 Керування процесами і потоками
- •3.1 Базові поняття процесів і потоків
- •3.1.1 Процеси і потоки в сучасних ос
- •3.1.2 Моделі процесів і потоків
- •3.1.3 Складові елементи процесів і потоків
- •3.2 Стани процесів і потоків
- •3.3 Опис процесів і потоків
- •3.3.1 Керуючи блоки процесів і потоків
- •3.3.2 Образи процесу і потоку
- •3.4 Створення і завершення процесів і потоків
- •3.4.1 Створення процесів
- •3.4.2 Керування адресним простором під час створення процесів
- •3.4.3 Особливості завершення процесів
- •3.4.4 Синхронне й асинхронне виконання процесів
- •3.4.5 Створення і завершення потоків
- •3. 5 Керування процесами в unix і Linux
- •3. 5. 1 Образ процесу
- •3. 5. 2 Ідентифікаційна інформація та атрибути безпеки процесу
- •3. 5.3 Керуючий блок процесу
- •3. 5. 4Створення процесу
- •3. 5. 5 Завершення процесу
- •3. 5. 6 Очікування завершення процесу
- •3. 5. 7 Сигнали
- •3.6 Керування потоками в Linux
- •3. 6. 1 Базова підтримка багатопотоковості
- •3. 6. 2 Потоки ядра Linux
- •3. 6. 2 Програмний інтерфейс керування потоками Створення потоків
- •Очікування завершення виконання потоків
- •Висновки
- •Розділ 4 Планування процесів і потоків
- •4. 1 Загальні принципи планування
- •4. 1. 1 Особливості виконання потоків
- •4. 1.2 Механізми і політика планування
- •4. 1. 3 Застовність принципів планування
- •4. 2 Види планування
- •4. 2. 1 Довготермінове планування
- •4. 2. 2 Середньотермінове планування
- •4. 2. 3 Короткотермінове планування
- •4. 3 Стратегії планування. Витісняльна і невитісняльна багатозадачність
- •4. 4 Алгоритми планування
- •4. 4. 1 Планування за принципом fifo
- •4. 4. 2 Кругове планування
- •4. 4. 3 Планування із приоритетами
- •4. 4. 4 Планування на підставі характеристик подальшого виконання
- •4. 4. 5 Багаторівневі черги зі зворотним зв’язком
- •4. 4. 6 Лотерейне планування
- •4. 5 Реалізація планування в Linux
- •4. 5. 1 Планування процесів реального часу в ядрі
- •4. 5. 2 Традиційний алгоритм планування
- •Умови виклику процедури планування
- •Процедура планування
- •Початок нової епохи
- •Розрахунок динамічного пріоритету
- •Перерахування кванта під час створення нового процесу
- •4. 5. 3 Сучасні підходи до реалізації планування
- •4. 5. 4 Програмний інтерфейс планування
- •Висновки
- •Розділ 5 Взаємодія потоків
- •5. 1 Основні принципи взаємодії потоків
- •5. 2 Основні проблеми взаємодії потоків
- •5. 2. 1 Проблема змагання
- •5. 2. 2 Критичні секції та блокування Поняття критичної секції
- •Блокування
- •Проблеми із реалізацією блокувань
- •5. 3 Базові механізми синхронізації потоків
- •5. 3. 1 Семафори
- •Особливості використання семафорів
- •Реалязація задачі виробників-споживачів за допомогою семафорів
- •5. 3. 2 М’ютекси
- •Висновки
- •Розділ 6 Міжпроцесова взаємодія
- •6. 1 Види міжпроцесової взаємодії
- •6. 1. 1 Технологія відображуваної пам’яті (mapped memory)
- •Розділ 7 Керування оперативною пам’яттю
- •7. 1 Основи технології віртуальної пам’яті
- •7. 1. 1. Поняття віртуальної пам’яті
- •7. 1. 2. Проблеми реалізації віртуальної пам’яті. Фрагментація пам’яті
- •7. 1. 3. Логічна і фізична адресація пам’яті
- •7. 1. 4 Підхід базового і межового регістрів
- •7. 2 Сегментація пам’яті
- •7.2. 1. Особливості сегментації пам’яті
- •7.2.2. Реалізація сегментації в архітектурі іа-32
- •7. 3 Сторінкова організація пам’яті
- •7.3.1. Базові принципи сторінкової організації пам’яті
- •7.3.2. Порівняльний аналіз сторінкової організації пам’яті та сегментації
- •7.3.3. Багаторівневі таблиці сторінок
- •7.3.4. Реалізація таблиць сторінок в архітектурі іа-32
- •7.3.5. Асоціативна пам’ять
- •7. 4. Сторінково-сегментна організація пам’яті
- •7. 5. Реалізація керування основною пам’яттю: Linux
- •7.5.1. Використання сегментації в Linux. Формування логічних адрес
- •7.5.2. Сторінкова адресація в Linux
- •7.5.3. Розташування ядра у фізичній пам’яті
- •7.5.4. Особливості адресації процесів і ядра
- •7.5.5. Використання асоціативної пам’яті
- •Розділ 8 Логічна організація файлових систем
- •8. 1. Поняття файла і файлової системи
- •8.1.1. Поняття файла
- •8.1.2. Поняття файлової системи
- •8.1.3. Типи файлів
- •8.1.4. Імена файлів
- •8. 2. Організація інформації у файловій системі
- •8.2.1. Розділи
- •8.2.2. Каталоги
- •8.2.3. Зв’язок розділів і структури каталогів
- •Єдине дерево каталогів. Монтування файлових систем
- •8. 3. Зв’язки
- •8. 3. 1. Жорсткі зв’язки
- •8. 3. 2. Символічні зв’язки
- •Підтримка символічних зв’язків на рівні системних викликів
- •8. 4. Атрибути файлів
- •8. 5. Операції над файлами і каталогами
- •8. 5. 1. Підходи до використання файлів процесами
- •8. 5. 2. Загальні відомості про файлові операції
- •8. 5. 3. Файлові операції posix
- •Література
3.4 Створення і завершення процесів і потоків
Засоби створення і завершення процесів дають змогу динамічно змінювати в операційній системі набір застосувань, що виконуються. Засоби створення і завершення потоків є основою для створення багатопотокових програм.
Образ процесу
Адресний простір
Рис.3 2 Образи процесу і його потоків
3.4.1 Створення процесів
Базові принципи створення процесів
Процеси можуть створюватись ядром системи під час її ініціалізацїї. Наприклад, в UNIX-сумісних системахтаким процесом може бути процес ініціалізації системи init, у Windows XP – процеси підсистем середовища (Win32 або POSIX). Таке створення процесі, однак, є винятком, а не правилом.
Найчастіше процеси створюються під час виконання інших процесів.У цьому разі процес, який створює інший процес, називають предком, а створений ним процес – нащадком.
Нові процеси можуть бути створені під час роботи застосування відповідно до його логіки (компілятор може створювати прцеси для кожного етапу компіляцїї, веб-сервер – для обробки прибулих запитів) або
безпосередньо за запитом користувача (наприклад, з командного інтерпретатора, графічної оболонки або файлового менеджера).
Інтерактивні та фонові процеси
Розрізняють два типи фонових процесів з погляду їхньої взаємодії з користувачем.
Інтерактивні процеси взаємодіють із користувачами безпосередньо, приймаючи від них дані, введені за допомогою клавіатури, миші тощо. Прикладом інтерактивного процесу може бути процес текстового редактора або інтегрованого середовища розробки.
Фонові процеси із користувачем не взаємодіють безпосередньо. Зазвичай вони запускаються під час старту системи і чекають на запити від інших застосувань. Деякі з них (системні процеси) підтримують функціонування системи (реалізують фонове друкування, мережні засоби тощо), інші виклнують спеціалізовані задачі (реалізують веб-сервери, сервери баз даних тощо).фонові процеси також називають службами (services, у системах лінії windows XP) або демонами (daemons, в UNIX).
3.4.2 Керування адресним простором під час створення процесів
Оскільки основним елементом процесу є захищений адресний простір, дуже важливо вирішити проблему його розподілу під час створення нового процесу. Розглянемо два різні підходи.
Системні виклики fork() exec()
У першому підході адресний простір нащадка створюють як точну копію адресного простору предка. Така операція реалізована системним викликом, який у POSIX-системах називають fork().
У цьому разі копіюється не тільки адресний простір, а й лічильник команд головного потоку процесу, тому після виклику fork() предок і нащадок виконуватимуть ту саму інструкцію. Розробник має визначити, у
якому з двох процесів перебуває керування. Це можна зробити на підставі відмінностей між кодами повернення fork() для предка і нащадка.
Коли створення нового процесу відбувається шляхом дублювання адресного простору предка, виникає потреба у спеціальних засобах завантаження програмного коду в адресний простір процесу. Такі засоби реалізує системний виклик, який у POSIX-системах називають exec(). Як параметр для виклику exec() треба вказувати весь шлях до виконуваного файла програми, який буде завантажено у пам’ять.
У системах із підтримкою fork() для того щоб запускати на виконання програми, після виклику fork() потрібно негайно викликати exec() (це називають технологією fork+exec).
Запуск застосування одним системним викликом
Другий підхід не розділяє дублювання адресного простору і завантаження коду – ці етапи тут поєднані в один. У даному разі системний виклик запускає на виконання задане застосування (зазвичай для цього йому потрібно вказати весь шлях до виконуваного файла цього застосування). Можна виділити два етапи виконання такого системного виклику:
виділення пам’яті під адресний простір нового процесу (жодна інформація при цьому з адресного простору предка не копіюється).
Завантаження виконуваного коду із зазначеного файла у виділений адресний простір.
Підхід із використанням fork() і exec() є гнучкішим, бо він дає змогу в разі необхідності обмежитись якимось одним етапом запуску застосування. Сучасні ОС переважно реалізують комбінацію першого та другого підходів.