ОС як віртуальна машина
ОС надає користувачу віртуальну машину, яку легше програмувати і з якою легше працювати, чим безпосередньо з апаратурою, що становить реальну машину.
Наприклад щоб вважати або записати інформацію на дискету, треба:
- запустити двигун обертання дискети
- управляти кроковим двигуном переміщення головки
- стежити за індикатором присутності дискети
- вибрати номер блоку на диску
- вибрати доріжку
- вибрати номер сектора на доріжці і.т.д.
Всі ці функції бере на себе операційна система.
ОС як система управління ресурсами
Щоб декілька програм могло працювати з одним ресурсом (процесор, пам’ять), необхідна система управління ресурсами.
Способи розподілу ресурсу:
- тимчасової – коли програми використовують його по черзі, наприклад так система управляє процесором.
- просторовий – програма одержує частину ресурсу, наприклад так система управляє оперативною пам’яттю і жорстким диском.
Основні принципи побудови|шикування| ОС
1. принцип модульності.
Модуль – функціонально закінчений елемент, що виконується відповідно до прийнятого міжмодульного інтерфейсу. Модуль виділяється за функціональною ознакою. Модульна організація дозволяє легко |із|замінювати неправильно працюючі модулі в ОС.
2. принцип функціональної вибірковості. Для організації ефективної роботи ОС, необхідно виділити деякі модулі і зберігати їх в ОЗУ. Ці модулі складають ядро ОС. Ядро:
1. Модулі по управлінню системи переривань;
2. Засіб|кошт| управління виконання програм (завантаження|загрузка|, призупинення|припинення|, зупинка);
3. Модулі по управлінню процесом (розподіл процесорного часу), тобто диспетчери програм;
4. Модулі по управлінню виділення пам'яті. Залежно від ОС в ядро можуть ще входити інші модулі;
5. Транзитні модулі (завантажуються в ОЗУ в міру необхідності, при браку|нестачі| ОЗУ можуть бути вивантажені з пам'яті).
3. принцип генеруємості ОС. Маємо на увазі собою можливість генерації ОС залежно від апаратного забезпечення. Процес генерації зазвичай проводиться один раз, перед досить довгим режимом експлуатації. Для генерації необхідна наявність декількох компонентів:
- Вихідний|початковий| код ОС;
- Компілятор з мови|язика| програмування на якому система написана;
- Спеціальна програма і вхідна мова|язик| для неї, яка дозволяє управляти процесом генерації.
ОС з|із| відкритим|відчиняти| системним кодом – Linux| (UNIX|), є можливість|спроможність| тонкого налаштування ядра для конкретного процесора.
4. принцип функціональної надмірності. До складу ОС повинно входить декілька типів ПО для виконання однакових функцій (підтримка різних файлових систем).
5. принцип віртуалізації. Дозволяє представити ресурси ОС у вигляді певного набору планувальників і моніторів і використовує єдину схему розподілу ресурсів. Найбільший прояв – концепція віртуальної машини (відтворює архітектуру реальної машини, але може володіти довільними характеристиками).
6. принцип незалежності програм від зовнішніх пристроїв. Зв'язок програм з конкретним зовнішнім пристроєм проводиться не на етапі трансляції, а на етапі виконання програми. Виходить вигода: не потрібна зайва «перекомпіляція».
7. принцип сумісності. Здатність виконувати програми для іншої ОС або навіть для іншої апаратної платформи.
2 рівня сумісності:
- за виконуваним кодом (бінарна). Умови сумісності:
1. На рівні команд процесора (одна і та ж платформа);
2. Сумісність на рівні системних викликів;
3. Сумісність на рівні бібліотечних викликів, якщо є динамічно зв'язуваними.
- за вихідним|початковим| кодом. Потрібне виконання наступних|слідуючих| умов:
1. Наявність компілятора платформи, на якому написана програма;
2. Сумісність на рівні системних викликів;
3. Сумісність на рівні бібліотечних викликів.
8. принцип відкритої нарощуваної ОС (відкритий вихідний код). Цілісність ОС зберігається (UNIX).
9. принцип мобільності (переносимості). ОС повинна легко переноситися на іншу апаратну платформу. Правила створення переносимих ОС:
- ОС має бути написана на мові|язиці| високого рівня, для якої існує компілятор на апаратній платформі. В основному, сучасні ОС пишуть на Сі.
- Необхідно уникати коду, який безпосередньо працює з|із| апаратним забезпеченням.
10. принцип забезпечення безпеки і захисту:
- Захист системи від користувача;
- Захист від несанкціонованого доступу.
У 1983 р. придумані|вигадувати| критерії оцінки надійності ОС.
Існують 4 класи безпеки:
1. Клас D. Відносяться системи, що не задовольняють системам попередніх класів (небезпечний);
2. Клас C. Забезпечення захисту даних від помилок користувача. ОС повинна мати наступні|слідуючі| засоби|кошти|:
- Засоби|кошти| секретного входу;
- Обов'язкова наявність виборчого|вибіркового| контролю доступу;
- Засоби|кошти| обліку|урахування| і спостереження (аудит);
- Необхідна ініціалізація пам'яті при її звільненні|визволенні|. Сучасні ОС відносяться до цього класу.
3. Клас B. Засновані на помічених|позначити| даних і є наявність розподілу користувачів по категоріях, будь-який користувач має рейтинг доступу до даних.
4. Клас A. Найвищий рівень безпеки. Необхідно, щоб|аби| був|наявний| формальний (математичний) доказ безпеки ОС. Приблизно 90% процесорного часу витрачається на систему безпеки. У наш час|в наші часи| використовуються класи B і C.
Основні поняття, концепції ОС
В процесі еволюції виникло декілька важливих|поважних| концепцій, які стали невід'ємною частиною|часткою| тео-|
рії| і практики ОС. Ті що розглядаються|розглядують| в даній лекції поняття зустрічатимуться і роз'яснюватимуться|роз'яснятимуть| на
протязі всього курсу. Тут дається їх короткий опис.
Системні виклики
У будь-якій операційній системі підтримується механізм, який дозволяє призначеним для користувача про|грамам звертатися|обертатися| до послуг ядра ОС. У операційних системах найбільш відомої радянською |машини БЕСМ-6 відповідні засоби|кошти| "спілкування" з|із| ядром називалися екстракодами, в операційних системах IBM| вони називалися системними макрокомандами і так далі. У ОС Unix| такі засоби називаються системними викликами.
Системні виклики (system| calls|) – це інтерфейс між операційною системою і призначеною для користувача програмою. Вони створюють, видаляють|віддаляють| і використовують різні об'єкти, головні|чільні| з|із| яких, – процеси і файли. Призначена для користувача програма запрошує сервіс в|біля| операційної системи, здійснюючи системний виклик. Є|наявний| бібліотеки процедур, які завантажують машинні регістри|реєстри| певними параметрами і здійснюють переривання процесора, після чого управління передається обробникові даного виклику, що входить в ядро операційної системи. Мета|ціль| таких бібліотек – зробити системний виклик схожим на звичайний|звичний| виклик підпрограми.
Основна відзнака|відмінність| полягає в тому, що при системному виклику завдання|задача| переходить в привілейований ре|жим або режим ядра (kernel| mode|). Тому системні виклики інколи|іноді| ще називають програмними|програмовими| перериваннями, на відміну від апаратних переривань, які частіше називають просто перериваннями.
У цьому режимі працює код ядра операційної системи, причому виконується він в адресному просторі || і в контексті завдання|задачі|, що викликало|спричиняло| його. Таким чином, ядро операційної системи має повний|цілковитий| доступ до пам'яті призначеної для користувача програми, і при системному виклику досить передати адреси однієї або декількох областей пам'яті з|із| параметрами виклику і адреси однієї або декількох областей пам'яті для результатів виклику.
У більшості операційних систем системний виклик здійснюється командою програмного|програмового| перери-|
вання| (INT|).
Програмне|програмове| переривання – це синхронна подія, яка може бути повторена при виконанні одного й тогож програмного коду|програмової|.