
- •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
- •Література
8.2.2. Каталоги
Розділи є основою організації великих обсягів дискового простору для розгортання файлових систем. Для організації файлів у рамках розділу зі встаноіленою файловою системою було запропоновано поняття файлового каталогу (file directory) або просто каталогу.
Каталог – це об’єкт (найчастіше реалізований як спеціальний файл), що містить інформацію про набір файлів. Про такі файли кажуть, що вони містяться в каталозі. Файли заносяться в каталоги користувачами на підставі їхніх власних критеріїв, деякі каталоги можуть містити дані, потрібні операційній системі, або її програмний код.
Каталог можна уявити собі як символьну таблицю, що реалізує відображення імен файлів у елементи каталогу (зазвичай в таких елементах зберігають низькорівневу інформацію про файли). Подивимося, як може бути реалізоване таке відображення.
Деревоподібна структура каталогів
Базовою ідеєю організації даних за допомогою каталогів є те, що вони можуть містити інші каталоги. Вкладені каталоги називають підкаталогами (subdirectory). Таким чином формують дерево каталогів. Перший каталог,створений у файловій системі, встановленій у розділі (корень дерева каталогів), називають кореневим каталогом (root directory).
Поняття шляху
Розглянемо, яким чином формують ім’я файла з урахуванням багаторівневої структури каталогів. Для файла, розташованого всередині каталогу недостатньо цого імені для одназначного визначення, де він перебуває, - в іншому каталозі може бути файл із тим самим ім’ям. Тепер для визначення місцезнаходження файла потрібно додавати до його імені список каталогів, де він перебуває. Такой список називають шляхом (path). Каталоги у шляху перераховують зліва направо – від меншої глибини вкладеності до більшої. Роздільник каталогів у шляху відрізняється для різних систем: в Unix прийнято використовувати прямий слеш “/”, а у Windows -системах - зворотний “\”.
Абсолютний і відносний шляхи
Є два шляхи до файла: абсолютний і відносний. Абсолютний (або повний) повністю і однозначно визначає місце розташування файла. Такий шлях обов’язково має містити кореневий каталог. Ось приклад абсолютного шляху для Unix-систем: /usr/local/bin/myfile.
Якщо застосування використовує тільки абсолютні шляхи, йому зазвичай бракує гнучкості. Наприклад, у разі перенесення у інший каталог потрібно буде вручну відредагувати всі шляхи, замінивши їх новими.
Відносний- шлях, відлічуваний від деякого місця в ієрархії каталогів. Щоб його організувати, потрібно іизначитися із точкою відліку, для чого використовують поняття поточного каталогу. Такий каталог задають для кожного процесу, і він може бути змінений у будь-який момент командою cd або системним викликом chdir (). Відносний шлях може відлічуватися від поточного каталогу і звичайно кореневий каталог не включає. Прикладом відносного шляху до файла /usr/local/bin/myfile (за умови, що поточним є каталог /usr/local) буде bin/myfile, а в ситуації, коли поточним є каталог файла (/usr/local/bin), відносним шляхом буде просто ім’я файла: myfile.
Для спрощення побудови відносного шляху кожний каталог містить два спеціальні елементи:
„ .” –що посилається на поточний каталог;
„ ,” –що посилається на каталог рівнем вище.
З урахуванням цих елементів можуть бути задані такі відносні шляхи, як ../.../bin/myfile (за умови, що поточний каталог - /usr/local/lib/mylib) або ./myfile (вказує на елемент у поточному каталозі).
Застосування, що обмежується твльки відносними шляхами під час доступу до файлів (особливо, якщо вони не виходять за межі каталогу цього застосування), може бути без змін перенесене в інший каталог тієї самої структури.
Є й інші можливості полегшити задання шляхів доступу до файлів у каталогах. Одним із найпоширеніших способів є використання змінної оточення PATH, що містить список часто використовуваних каталогів. У разі доступу до файла за іменем його пошук спочатку виконуватиметься в каталогах, заданих за допомогою PATH.