
- •Тема 1: Основні поняття обчислювальних систем Призначення та склад системного програмного забезпечення
- •Основні концепції операційних систем
- •Типи операційних систем
- •Основні етапи розвитку операційних систем
- •Функціональні компоненти операційних систем
- •Керування процесами й потоками
- •Керування ресурсами
- •Керування введенням-виведенням
- •Керування файлами та файлові системи
- •Мережна підтримка
- •Тема 2: Архітектура операційних систем Основні принципи побудови операційних систем
- •Принцип модульності
- •Принцип функціональної вибірковості
- •Принцип здатності до генерування
- •Принцип функціональної надмірності
- •Принцип віртуальності
- •Принцип незалежності програм від зовнішніх пристроїв
- •Принцип сумісності
- •Принцип відкритої і нарощуваної ос
- •Принцип мобільності (переносимості)
- •Принцип забезпечення безпеки обчислень
- •Базові поняття архітектури операційних систем
- •Ядро операційної системи
- •Монолітні системи
- •Багаторівневі системи
- •Системи з мікроядром
- •Концепція віртуальних машин
- •Засоби апаратної підтримки операційних систем
- •Інтерфейс прикладного програмування
- •Варіанти реалізації api
- •Особливості архітектури unix і Linux
- •Особливості побудови ос Linux
- •Особливості архітектури Windows xp
- •Компоненти режиму ядра
- •Компоненти режиму користувача
- •Об’єктна архітектура Windows xp
- •Тема 3: Процеси та потоки
- •Базові поняття процесів та потоків
- •Блок керування процесом
- •Операції над процесами
- •Обробка переривань
- •Алгоритми планування процесів
- •Витісняючі та невитісняючі алгоритми планування
- •Нитки, потоки (Thread)
- •Керування процесорами
- •Планування з переключення та без переключення
- •Лекція 4: Ядро операційної системи
- •Основні функції ядра
- •Асинхронні паралельні процеси
- •Взаємо-виключення
- •Семафори
- •Кільцевий буфер
- •Конвеєр (програмний канал)
- •Черги повідомлень (Queue)
- •Лекція 5. Керування ресурсами
- •Керування пам’яттю
- •Ієрархія пам’яті
- •Розподіл пам’яті
- •Зв’язний розподіл пам’яті для одного користувача
- •Мультипрограмування з фіксованими розділами
- •Мультипрограмування із змінними розділами
- •Боротьба з фрагментацією
- •Стратегії розміщення інформації в пам’яті
- •Системи з розподілом часу. Сторінкова організація пам’яті. Концепція віртуальної (уявної) пам’яті.
- •Принцип кешування даних
- •Лекція 6. Керування даними Файлова система
- •Функції файлової системи
- •Ієрархія даних
- •Об’єднання в блоки та буферизація
- •Організація файлів
- •Методи доступу
- •Характеристики файлів
- •Файлова система
- •Виділення та звільнення місця в пам’яті
- •Зв’язаний розподіл пам’яті
- •Незв’язаний розподіл пам’яті
- •1) Розподіл за допомогою списків секторів
- •2) Поблочний розподіл
- •Дескриптор файлу (file descriptor)
- •Матриця керування доступом
- •Керування доступом в залежності від класів користувачів
- •Копіювання та відновлення інформації
- •Планування роботи з дисковою пам’яттю
- •Призначення планування
- •Цільові характеристики принципів планування
- •Оптимізація пошуку циліндру
- •Оптимізація за часом очікування записів
- •Архітектура сучасних файлових систем
- •Лекція 8. Основи організації ms-dos
- •Будова та функції основних складових дос
- •Керування пам’яттю
- •Відображена пам’ять
- •Розширена пам’ять
- •Висока пам’ять
- •Верхня пам’ять
- •Драйвери верхньої та розширеної пам’яті
- •Завантажувані модулі com та exe – файли
- •Логічна структура диску в ms-dos
- •Формат елементів таблиці розділів
- •Запис завантаження (boot)
- •Використання boot-сектору
- •Визначення формату fat
- •Формат fat
- •Файли та каталоги
- •Недоліки ms-dos
- •Переваги які надає користувачам Windows
- •Windows як операційна оболонка
- •Обмін даними в Windows
- •Зв’язування чи вбудовування
- •Первинність повідомлень: механізм повідомлень
- •Незалежна (preemptive) багатозадачність
- •Взаємодія 32– та 16–розрядних кодів
- •Робота з 16–розрядними продуктами
- •Робота з dos–продуктами
- •Робота 32–розрядних Windows–продуктів
- •Вдосконалення розподілу системних ресурсів
- •Vcache – 32–розрядний дисковий кеш
- •Варіанти модифікацій ос Windows xp
- •Нові характеристики реалізовані в Windows xp
- •Продуктивність
- •Лекція 8. Ос unix
- •Ядро ос unix
- •Генерування ос
- •Процеси
- •Початкове завантаження. Процеси 0 та 1
- •Файлова система unix
- •Будова файлової системи unix
- •Каталоги
- •Тема 1: Основні поняття обчислювальних систем 1
- •Тема 2: Архітектура операційних систем 9
- •Тема 3: Процеси та потоки 25
Лекція 4: Ядро операційної системи
Усі операції, що пов’язані з процесами, виконуються під керуванням ядра. Ядро – невелика частина ОС, але вона відноситься до найбільш інтенсивно використовуваних компонентів ОС.
З цієї причини ядро, зазвичай, резидентно розміщено в оперативній пам’яті, в той час як інші частини ОС переміщаються у зовнішню пам’ять та назад за необхідністю.
Одною з найважливіших операцій ядра є обробка переривань. У великих, багато абонентських системах у процесор надходить постійний потік переривань. Коли ядро обробляє біжуче переривання, воно заблоковує інші переривання і дозволяє їх знову тільки після завершення обробки біжучого переривання. При постійному потоці переривань може скластися, ситуація, що ядро блокуватиме переривання протягом тривалого часу, тоді система не буде мати можливості ефективно реагувати на переривання. Тому, ядро розробляється таким чином, щоб воно виконувало тільки мінімально можливу попередню обробку кожного переривання, а потім передавало це переривання на подальшу обробку відповідному системному процесові. Після передачі обробки переривання іншому процесові, ядро може дозволити наступні переривання. Таким чином, середня швидкість реакції системи суттєво зростає.
Основні функції ядра
Ядро, як правило, містить програми для реалізації наступних функцій:
- обробка переривань;
- створення та знищення процесів;
- перемикання процесів зі стану в стан;
- диспетчеризація;
- припинення та активізація процесів;
- синхронізація процесів;
- організація взаємодії між процесами;
- маніпуляція блоками керування процесами (PCB);
- підтримка операцій вводу-виводу;
- підтримка розподілу та перерозподілу пам’яті;
- підтримка механізму виклику-повернення при звертанні до процедур;
- підтримка функцій з обліку роботи машини.
Функції, що реалізовані в ядрі є примітивними.
В останній час намітилася чітка тенденція, коли розробники систем значну частину функцій ядра реалізують на рівні мікропрограм у ПЗУ BIOS. Це ефективний спосіб захисту ядра. Причому ретельна реалізація мікропрограм, дозволяє забезпечити високу ефективність виконання ядром своїх функцій.
В ієрархічних системних структурах, ядро розташоване на рівні безпосередньо над базовим рівнем апаратури ЕОМ. На вищих рівнях розташовані процеси системи та процеси користувачів. Практика показує, що ієрархічні структури простіше піддаються відлагодженню, модифікації та тестуванню.
Асинхронні паралельні процеси
Процеси називаються паралельними, якщо вини існують (працюють) одночасно.
Зменшення габаритів та вартості апаратури комп’ютерів сприяють подальшому розвитку багато процесорних систем і, як кінцевий результат, реалізацію максимального паралелізму на всіх рівнях. Якщо певні операції можна виконувати паралельно, то комп’ютери наступних генерацій будуть фізично виконувати їх паралельно.
Паралельні процеси можуть бути повністю незалежними або взаємодіючими. Останні можуть бути конкуруючими, або такими, що сумісно виконують спільну роботу.
Як правило, найчастіше маємо справу з паралельними процесами, яким необхідно час від часу синхронізуватися та взаємодіяти. Усі подібні паралельні процеси називаються асинхронними.
Керуючі конструкції організації паралелізму.
У багатьох сучасних мовах програмування передбачено спеціальні конструкції для організації паралелізму, зокрема в „Ада”, це пара операторів parbegin / parend. Як правило, це парні оператори:
- Перший оператор, показує, що послідовність команд у програмі може бути розділена на декілька послідовностей, що виконуються паралельно;
- Другий оператор, вказує, що зазначені послідовності, що виконувалися паралельно, повинні злитися в один потік і повинно відновитися послідовне виконання команд.
Приклад розпаралелювання виконання команд.
Пари операторів, що забезпечують розпаралелення на рівні алгоритму:
parbegin / parend – початок – завершення блоку паралельного виконання;
cobegin / coend – початок – завершення блоку суміщеного виконання;
Приклад. Обчислити вираз x := (-b + (b ** 2 - 4 * a * c) ** 0.5) / (2 * a).
Цей вираз обчислюється за допомогою послідовного процесора наступним чином:
1 b ** 2
2 4 * a
3 (4 * a) * c
4 (b ** 2) – (4 * a * c)
5 (b ** 2 – 4 * a * c) ** 0.5
6 -b
7 (-b) + ((b ** 2 – 4 * a * c) ** 0.5)
8 2 * a
9 (-b + (b ** 2 – 4 * a * c) ** 0.5) / (2 * a).
Кожен з цих операторів виконується послідовно, що визначається прийнятими у системі правилами кодування операторів.
У системі з паралельною обробкою, матимемо:
1 parbegin
temp1 := -b
temp2 := b ** 2
temp3 := 4 * a
temp4 := 2 * a
parnd
2 temp5 := temp3 * c
3 temp5 := temp2 – temp5
4 temp5 := temp5 ** 0.5
5 temp5 := temp1 + temp5
6 x := temp5 / temp4
Операції першого оператора виконуються паралельно, решта операторів виконується послідовно. У загальному час обчислення виразу скорочується.