
- •1 Вступ
- •2 Класи комп’ютерних систем Комп’ютери із спільною пам’яттю (мультиплексорні системи)
- •3 Класифікація протоколів когерентності кешів
- •4 Реалізація smp систем
- •6 Технології mmx, 3dnow!, sse1, sse2, sse3, sse4 (самостійно)
- •8 Класифікація комп’ютерних систем
- •10 Матричні процесори
- •11 Numa архітектура
- •13 Машинні потоки команд (Data Flow)
- •14 Кластерні системи
- •15 Операційні системи
- •16 Фізична організація файлових систем
- •17 Файлова система ntfs (New Technology File System)
- •18 Файлова система ext2
- •19 Архітектура ос
- •20 Багатошарова структура операційної системи
- •21 Віртуальна пам’ять
- •22 Архітектура ос
19 Архітектура ос
Будь-яка складна система повинна мати чітку та зрозумілу логічну структуру, іншими словами система повинна розділятися на частини, які мають чітке функціональне призначення, і які взаємодіють між собою по чітко визначених правилах взаємодії.
Функціональна складність ОС призводить до складності її архітектури. Під архітектурою ОС розуміють внутрішню структуру та організацію її програмних модулів. Більшість сучасних операційних систем представляють собою структуровані модульні системи, які володіють здатністю до розширення, переносу, розвитку і т. д.
Найбільш загальним підходом до структурування ОС є розбиття всіх її модулів на 2 частини:
Ядро
Модулі, які виконують допоміжні функції
Модулі ядра виконують такі базові функції, як управління процесами, пам’яттю, пристроями вводу/виводу і т. д. в склад ядра входять функції, що вирішують внутрішньо системні задачі, такі як регулювання роботи процесів, перемикання контекстів, обробки переривань і т. д. Під «процес» операційна система розуміє програму користувача, яку було запущено на виконання. Область оперативної пам’яті, а також дані, з якими працює процес, називається контекстом даного процесу. В рамках одного процесу може бути може бути декілька паралельних потоків. Функції ядра є недопустимими для програми користувача. Інший клас функцій ядра призначений для підтримки додатків, створюючи для них так зване прикладне програмне середовище. Ці функції ядра, що можуть викликати прикладні програми, називається інтерфейс прикладного програмування (Application Programming Interface, API). Функції, що виконуються модулями ядра є найбільш вживаними і швидкість їх виконання визначається швидкістю роботи операційної системи в цілому. Для забезпечення високої швидкості модулі ядра є резидентними, тобто такими, що є завжди в оперативній пам’яті. Інші модулі операційної системи є також важливими, проте носять менш обов’язкові функції. Допоміжні модулі зазвичай оформлені у прикладних програмах і в більшості ситуацій дуже важко провести межу між прикладною програмою та модулями операційної системи. Досить часто прикладні програми з часом стають частиною операційної системи. Допоміжні модулі операційної системи зазвичай поділяються на групи:
Утиліти — це програми, що вирішують окремі задачі управління та супроводу комп’ютерної системи;
Системні програми для обробки даних (текстові, графічні редактори, компілятори, компоновщики і т.д.);
Програми представлення користувачу додаткових послуг (спеціальні варіанти графічного оформлення, калькулятор);
Бібліотеки процедур та функцій, що спрощують розробку програмних додатків.
Розділ операційної системи на ядро і модулі дозволяє значно спрощувати розширення системи. Якщо потрібно додати певний функціонал, в систему додається тільки модуль, що реалізує даний функціонал і переписувати систему немає потреби.
Ядро в привілейованому режимі
Для надійного управління ходом виконання прикладної програми операційна система повинна мати певні привілеї перед програмою користувача. Також операційна система повинна мати виключні права для реалізації ролі арбітра доступу програми користувача до розділення ресурсів (оперативної пам’яті і т.д.). Жоден програмний процес не має права без відома операційної системи отримати доступ до ресурсів комп’ютерної системи. Забезпечити привілеї операційної системи неможливо без спеціальних засобів апаратної підтримки. Апаратура комп’ютера підтримує 2 режими:
User mode
Kernel mode або supervisor mode
Розуміють, що операційна система або її частина будуть працювати в привілейованому режимі, а програма користувача — в режимі користувача. Зазвичай, в привілейованому режимі працює ядро, і в деяких випадках властивості модуля, що він працює в привілейованому режимі і визначає його приналежність до ядра. Програмні додатки ставляються в програмний стан за рахунок заборони ряду критично важливих команд, що пов’язані з перемиканням процесора з однієї задачі на іншу, керування пристроями вводу/виводу, прямого доступу до пам’яті і т.д. Виконання деяких функцій в режимі користувача блокується безумовно, тоді як інші можуть виконуватися при певних умовах. Важливо, що умови доступу до тих чи інших функцій знаходяться під управлянням самої операційної системи.
Дуже важливо, що механізми захисту комп’ютера призначені не тільки для захисту області даних від інших процесів, але й для захисту і розділення даних процесів між собою. Кожен процес працює в своєму адресному просторі і не має доступу до інших процесів. Збільшення стійкості операційної системи за рахунок використання привілейованого режиму досягається сповільненим виконанням системних викликів. Системний виклик привілейованого ядра ініціює перемикання процесора зі звичайного режиму в привілейованих режим. Відповідно затрачується час на перемикання.
User
Kernel
Час встановлення
Для збільшення швидкості розробники досить часто переносять функціональність користувача в привілейований режим. Збільшення функціональності ядра збільшує ймовірність краху системи в цілому, тому розробники намагаються знайти середину між продуктивністю та безпекою. Наприклад, в операційній системі Windows NT 4.0. графічна підсистема працює в режимі користувача (як і значна кількість інших підсистем операційної системи). Ядро виконує мінімально необхідну кількість системних функцій, тому безпека та стабільність системи була дуже високою, проте робота з мікроконтентом була дуже повільною. Починаючи з Windows 2000 графічна підсистема була перенесена в режим ядра, що значно покращило роботу з мультимедія, проте знизилася безпека.