Аж до недавнього|нещодавнього| часу обчислювальні системи мали один центральний процесор. У результа|
ті вимог до підвищення продуктивності з'явилися|появлялися| багатопроцесорні системи, що складаються з двох і більш процесорів спільного|загального| призначення, що здійснюють паралельне виконання команд. Підтримка мультипроцесування є важливою|поважною| властивістю ОС і приводить|наводить| до ускладнення всіх алгоритмів управління ресурсами. Багатопроцесорна обробка реалізована в таких ОС, як Linux|, Solaris|, Windows| NT|, і ряду|низці| інших.
Багатопроцесорні ОС розділяють на симетричних і асиметричних. У симетричних ОС на кожному процесорі функціонує одне і те ж ядро, і завдання|задача| може бути виконана на будь-якому процесорі, тобто|цебто| обробка повністю|цілком| децентрализована|. При цьому кожному з процесорів доступна вся пам'ять.
У асиметричних ОС процесори нерівноправні|. Зазвичай|звично| існує головний|чільний| процесор (master|) і
підлеглі (slave|), завантаження|загрузку| і характер роботи яких визначає головний|чільний| процесор.
Приведена класифікація ОС не є вичерпною. Детальніше особливості вживання|застосування| сучасних ОС розглянуті в [Оліфер, 2001].
2. Лекція: Моделі операційних систем
Архітектурні особливості ОС
До цих пір ми говорили про погляд на операційні системи ззовні, про те, що роблять|чинять| операційні системи. Подальший|дальший| наш курс буде присвячений тому, як вони це роблять|чинять|. Але|та| ми доки|поки| нічого не сказали про те, які вони є зсередини, які підходи існують до їх побудови|шикування|.
Моделі операционих систем
Монолітна система
По суті справи, операційна система – це звичайна|звична| програма, тому було б логічне і організувати її так само, як влаштована|улаштувати| більшість програм, тобто|цебто| скласти з|із| процедур і функцій.
В цьому випадку компоненти операційної системи є не самостійними модулями, а складовими частинами однієї великої програми.
Така структура операційної системи називається монолітним ядром (monolithic| kernel|).
Монолітним ядром є набір процедур, кожна з яких може викликати|спричиняти| кожну. Всі процедури працюють в привілейованому режимі.
Таким чином, монолітне ядро – це така схема операційної системи, при якій всі її компоненти є складовими частинами однієї програми, використовують спільні|загальні| структури даних і взаємодіють один з|із| одним шляхом безпосереднього виклику процедур. Для монолітної операційної системи ядро збігається зі|із| всією системою.
У багатьох операційних системах з|із| монолітним ядром збірка|збирання| ядра, тобто|цебто| його компіляція, здійснюється окремо для кожного комп'ютера, на який встановлюється операційна система. При цьому можна вибрати список устаткування|обладнання| і програмних|програмових| протоколів, підтримка яких буде включено в ядро.
Оскільки|тому що| ядро є єдиною програмою, перекомпіляція – це єдиний спосіб додати|добавляти| в нього нові компоненти або виключити невживані.
Слід зазначити, що присутність в ядрі зайвих компонентів украй|надто| небажано, оскільки|тому що| ядро завжди повністю|цілком| розташовується в оперативній пам'яті. Крім того, виключення|виняток| непотрібних компонентів підвищує надійність операційної системи в цілому|загалом|.
Монолітне ядро – старий спосіб організації операційних систем. Прикладом|зразком| систем з|із| монолит-|
ным| ядром є більшість Unix-систем|.
Навіть у монолітних системах можна виділити деяку структуру. Як в бетонній глибі|брилі| можна побачити вкраплення щебінки, так і в монолітному ядрі виділяються вкраплення сервісних процедур, |
що відповідають системним викликам.
Сервісні процедури виконуються в привілейованому режимі, тоді як призначені для користувача програми – в непривілейованому.
Для переходу з одного рівня привілеїв|привілегій| на іншій інколи|іноді| може використовуватися головна|чільна| сервісна програма, що визначає, який саме системний виклик був зроблений, коректність вхідних даних для цього виклику і передавальна управління відповідній сервісній процедурі з|із| переходом в привілейований режим роботи. Інколи|іноді| виділяють також набір програмних|програмових| утиліт, які допомагають виконувати сервісні процедури.
Структура системи:
- Головна|чільна| програма, яка викликає|спричиняє| необхідні сервісні процедури.
- Набор сервісних процедур, що реалізовують системні виклики.
- Набор утиліт, обслуговуючих сервісні процедури.
Простая модель монолитной системы
У цій моделі для кожного системного виклику є|наявний| одна сервісна процедура (наприклад, читати з|із| файлу). Утиліти виконують функції, які потрібні декільком сервісним процедурам (наприклад, для читання і запису файлу необхідна утиліта роботи з|із| диском).
Етапи обробки виклику:
· Приймається виклик
· Виконується перехід з|із| режиму користувача в режим ядра
· ОС перевіряє параметри виклику для того, щоб визначити, який системний виклик має бути виконаний
· Після|потім| цього ОС звертається|обертається| до таблиці, що містить|утримує| заслання|посилання| на процедури, і викликає|спричиняє| відповідну процедуру.
Багаторівнева структура ОС
Узагальненням попереднього підходу є організація ОС як ієрархії рівнів. Рівні утворюються групами функцій операційної системи - файлова система, управління процесами і пристроями|устроями| і тому подібне|тощо|
Кожен рівень може взаємодіяти лише|тільки| зі|із| своїм безпосереднім сусідом - вище-| або рівнем, що пролягає нижче. Прикладні програми або модулі самої операційної системи передають запити вгору|угору| і вниз по цих рівнях.
Приклад|зразок| структури багаторівневої системи
Тобто|цебто| продовжуючи структуризацію, можна розбити всю обчислювальну систему на ряд|низку| дрібніших|мілких| рівнів з|із| добре певними зв'язками між ними, так щоб|аби| об'єкти рівня N могли викликати|спричиняти| лише|тільки| об'єкти рівня N-1|.
Нижнім рівнем в таких системах зазвичай|звично| є hardware|, верхнім рівнем – інтерфейс користувача.
Чим нижче рівень, тим більше привілейовані команди і дії може виконувати модуль, що знаходиться|перебуває| на цьому рівні. Вперше|уперше| такий підхід був застосований при створенні|створінні| системи THE| (Technishe| Hogeschool| Eindhoven|) Дейкстрой (Dijkstra|) і його студентами в 1968 р.
Пошарові системи добре реалізуються. При використанні операцій нижнього шару не потрібно знати, як вони реалізовані, потрібно лише розуміти, що вони роблять|чинять|. Пошарові системи добре тестуються.
Відладка починається з нижнього шару і проводиться пошарово. При виникненні помилки ми можемо бути упевнені, що вона знаходиться|перебуває| в тестованому шарі.
Такі системи добре модифікуються. При необхідності можна замінити лише один шар, не чіпаючи останні. Але|та| такі системи складні для розробки: важко|тяжкий| правильно визначити порядок|лад| шарів і що до якого шару відноситься. Пошарові системи менш ефективні, чим монолітні. Так, наприклад, для виконання операцій введення-виводу|висновку| програмі користувача доведеться|припаде| послідовно проходити|минати| всі шари від верхнього до нижнего|.
Переваги:
Висока продуктивність
Недоліки|нестачі|:
· Великий код ядра, і як наслідок великий вміст|зміст| помилок
· Ядро погано захищене від допоміжних процесів
Приклад|зразок| реалізації багаторівневої моделі UNIX|.
Мікроядерна архітектура (модель клієнт-сервер)
Сучасна тенденція в розробці операційних систем полягає в перенесенні значної частини|частки|
системної коди на рівень користувача і одночасної мінімізації ядра.
Йдеться про підході до побудови|шикування| ядра, званому мікроядерною архітектурою (microkernel| architecture|) операційної системи, коли більшість її складових є самостійними програмами.
В цьому випадку взаємодія між ними забезпечує спеціальний модуль ядра, званий мікроядром. Мікроядро працює в привілейованому режимі і забезпечує взаємодію між програмами, планерування|планування| використання процесора, первинну обробку переривань, операції введення-виводу|висновку| і базове управління пам'яттю.
Мал. 1.4.Мікроядерна архітектура операційної системи
Останні компоненти системи взаємодіють один з|із| одним шляхом передачі повідомлень|сполучень| через мік-|
роядро|.
Основна гідність|достоїнство| мікроядерної архітектури – висока міра|ступінь| модульності ядра операційної
системи. Це істотно|суттєвий| спрощує додавання|добавляти| в нього нових компонентів.
У мікроядерній операцій|ній| системі можна, не перериваючи її роботи, завантажувати і вивантажувати нові драйвери, файлові систе|ми і так далі
Істотно|суттєвий| спрощується процес відладки компонентів ядра, оскільки|тому що| нова версія драйвера
може завантажуватися без перезапуску всієї операційної системи.
Компоненти ядра операційної систе|ми нічим принципово не відрізняються від призначених для користувача програм, тому для їх відладки можна застосовувати звичайні|звичні| засоби|кошти|.
Мікроядерна архітектура підвищує надійність системи, оскільки помилка на рівні непривілейованої програми менш небезпечна, чим відмова на рівні режиму ядра.
В той же час мікроядерна архітектура операційної системи вносить додаткові накладні витрати, пов'язані з передачею повідомлень|сполучень|, що істотно|суттєвий| впливає на продуктивність. Для того, щоб мікроядерна операційна система за швидкістю не поступалася операційним системам на базі монолітного ядра, потрібний дуже акуратно проектувати розбиття системи на компоненти, прагнучи мінімізувати взаємодію між ними. Таким чином, основна складність при створенні|створінні| микро-ядерных| операційних систем – необхідність дуже акуратного проектування.
У розвитку сучасних операційних систем спостерігається тенденція у бік подальшого|дальшого| перенесення|переносу| завдань|задач| з|із| ядра в рівень призначених для користувача процесів, залишаючи мінімальне мікроядро.
У цій моделі вводяться|запроваджують| два поняття:
· Серверний процес (який обробляє запити)
· Клієнтський процес (який посилає запити)
У завдання|задачу| ядра входить лише|тільки| управління зв'язком між клієнтами і серверами.
Модель клієнт-сервер
Переваги:
· Малий код ядра і окремих підсистем, і як наслідок менший вміст|зміст| помилок.
· Ядро краще захищене від допоміжних процесів.
· Легко адаптується до використання в розподіленій системі.
Недоліки: Зменшення продуктивності.
Змішані системи
Всі розглянуті|розглядувати| підходи до побудови|шикування| операційних систем мають свої достоїнства і недоліки|нестачі|.
В більшості випадків сучасні операційні системи використовують різні комбінації цих
підходів.
Так, наприклад, ядро операційної системи Linux| є монолітною системою з|із| елементами мікроядерної архітектури.
При компіляції ядра можна вирішити динамічне завантаження|загрузку| і вивантаження дуже багатьох компонентів ядра – так званих модулів. У момент завантаження|загрузки| модуля його код завантажується на рівні системи і зв'язується з|із| останньою частиною|часткою| ядра. Усередині|всередині| модуля можуть використовуватися будь-які функції, що експортуються ядром.
Іншим прикладом|зразком| змішаного підходу може служити можливість|спроможність| запуску операційної системи з|із|
монолітним ядром під управлінням мікроядра.
Найтісніше елементи мікроядерної архітектури і елементи монолітного ядра переплетені в ядрі Windows| NT|. Хоча Windows| NT| часто називають мікроядерною операційною системою, це не зовсім так. Мікроядро NT| дуже|занадто| велике (більше 1 Мбайт), щоб|аби| носити приставку|префікс| "мікро".
Компоненти ядра Windows| NT| розташовуються в пам'яті, що витісняється, і взаємодіють один з|із| одним шляхом передачі повідомлень|сполучень|, як і належить в мікроядерних операційних системах. В той же час всі компоненти ядра працюють в одному адресному просторі|простір-час| і активно використовують спільні|загальні| структури даних, що властиве операційним системам з|із| монолітним ядром. На думку фахівців|спеціалістів| Microsoft|, причина проста: чисто мікроядерний дизайн комерційно невигідний, оскільки неефективний.
Таким чином, Windows| NT| можна з|із| повним|цілковитим| правом назвати|накликати| гібридною операційною системою.
Узагальнення порівняння моделей