Основні принципи побудови ОС
Написання стерпної ОС аналогічне написанню будь-якого стерпного коду — потрібно випливати деяким правилам. По-перше, велика частина ОС повинна бути написана мовою, що є на всіх системах, на яких планується надалі її переносити. Це, насамперед, означає, що ОС повинна бути написана мовою високого рівня, переважно стандартизованому, наприклад мовою С. Програма, написана на асемблері, не є… Читати ще >
Основні принципи побудови ОС (реферат, курсова, диплом, контрольна)
Серед безлічі принципів, що використовуються при побудові ОС, перечислимо найбільш важливі:
Принцип модульності.
Під модулем у загальному випадку розуміють функціонально закінчений елемент системи, виконаний відповідно до прийнятого міжмодульними інтерфейсами. По своєму визначенню модуль припускає можливість без зусиль замінити його на інший при наявності заданих інтерфейсів. Способи відокремлення складових частин ОС в окремі модулі можуть істотно розрізнятися, але найчастіше поділ відбувається саме по функціональній ознаці. У значній мірі поділ системи на модулі визначається використовуваним методом проектування ОС (знизу чи нагору навпаки).
Принцип модульності відбиває технологічні й експлуатаційні властивості системи. Найбільший ефект від його використання досяжний у випадку, коли принцип розповсюджений одночасно на ОС, ПП й апаратуру.
Принцип функціональної вибірковості.
В ОС виділяється деяка частина важливих модулів, що повинні постійно знаходитися в ОП для більш ефективної організації обчислюючого процесу. Цю частину в ОС називають ядром, тому що це дійсно основа системи. При формуванні складу ядра потрібно враховувати дві суперечливих вимоги. До складу ядра повинні ввійти найбільше часто використовувані системні модулі. Кількість модулів повинна бути таким, щоб обсяг пам’яті, займаний ядром, був би не занадто великим. До складу ядра, як правило, входять модулі по керуванню системою переривань, засоби по перекладу програм зі стану рахунку в стан чекання, готовності і зворотньо, засобу по розподілі таких основних ресурсів, як ОП і процесор. Крім програмних модулів, що входять до складу ядра і постійно розташовуються в ОП, може бути багато інших системних програмних модулів, що одержують назву транзитних. Транзитні програмні модулі завантажуються в ОП тільки при необхідності й у випадку відсутності вільного простору можуть бути заміщені іншими транзитними модулями.
Принцип генерування ОС.
Основне положення цього принципу визначає такий спосіб вихідного представлення центральної системної керуючої програми ОС (її ядра й основних компонентів, що повинні постійно знаходитися в ОП), що дозволяв би набудовувати цю системну супервізорну частину, виходячи з конкретної конфігурації конкретного обчислювального комплексу і кола розв’язуваних задач. Ця процедура проводиться рідко, перед досить протяжним періодом експлуатації ОС. Процес генерації здійснюється за допомогою спеціальною програми-генератора і відповідної вхідної мови для цієї програми, що дозволяє описувати програмні можливості системи і конфігурацію машини. У результаті генерації виходить повна версія ОС. Генеруюча версія ОС являє собою сукупність системних наборів модулів і даних.
У наші дні при використанні персональних комп’ютерів із принципом генерування ОС можна зіштовхнутися хіба що тільки при роботі з Linux. У цієї UNIX системи мають можливість не тільки використовувати яке-небудь готове ядро ОС, але і самому згенерувати (скомпілювати) таке ядро, що буде оптимальним для даного конкретного ПК і розв’язуваних на ньому задач.
Принцип функціональної надмірності.
Цей принцип враховує можливість проведення однієї і тієї ж роботи особистими засобами. До складу ОС може входити кілька типів моніторів (модулів супервізора, керуючих тим чи іншим видом ресурсу), різні засоби організації комунікацій між обчислювальними процесами. Наявність декількох типів моніторів, декількох систем керування файлами дозволяє користувачам швидко і найбільше адекватно адаптувати ОС до визначеної конфігурації обчислювальної системи, забезпечити максимально ефективно завантаження технічних засобів при рішенні конкретного класу задач, одержати максимальну продуктивність при рішенні заданого класу задач.
Принцип віртуалізації.
Побудова віртуальних ресурсів, їхній розподіл і використання тепер використовується практично в будь-який ОС. Цей принцип дозволяє представити структуру системи у виді визначеного набору планувальників процесів і розподільників ресурсів (моніторів) і використовувати єдину централізовану схему розподілу ресурсів.
Найбільш природним і закінченим проявом концепції віртуальності є поняття віртуальної машини (ВМ). По суті, будь-яка ОС, будучи засобом розподілу ресурсів і організувати за визначеними правилами керування процесами, ховає від користувача і його додатків реальні апаратні й інші ресурси, заміняючи їх деякою абстракцією. У результаті користувачі бачать і використовують ВМ як деякий пристрій, здатний сприймати їхні програми, написані визначеною мовою програмування і видавати результати. При такому мовному представленні користувача зовсім не цікавить реальна конфігурація обчислювальної системи, способи ефективного використання її компонентів і підсистем. Він мислить і працює з машиною в термінах використовуваного ним мови і тих ресурсів, що йому надаються в рамках віртуальної машини.
Частіше ВМ, надана користувачу, відтворює архітектуру реальної машини, але архітектурні елементи в такому представленні виступають з новими чи поліпшеними характеристиками, що часто спрощують роботу із системою. Характеристики можуть бути довільними, але найчастіше користувачі бажають мати власну «ідеальну» по архітектурних характеристиках машину в наступному складі:
- — однакову по логіці роботи пам’ять (віртуальна) практично необмеженого обсягу. Середній час доступу порівняний зі значенням цього параметра ОП. Організація роботи з інформацією в такій пам’яті виробляється в термінах обробки даних — у термінах роботи із сегментами даних на рівні обраної користувачем мови програмування;
- — довільну кількість процесорів (віртуальних), здатних працювати паралельно і взаємодіяти під час роботи. Способи керування процесорами, у тому числі синхронізація й інформаційні взаємодії, реалізовані і доступні користувачам на рівні використовуваної мови в термінах керування процесами;
- — довільна кількість зовнішніх пристроїв (віртуальних), здатних працювати з пам’яттю ВМ паралельно чи послідовно, асинхронно чи синхронно стосовно роботи того чи іншого віртуального процесора, що ініціюють роботу цих пристроїв. Інформація, передана чи збережена на віртуальних пристроях, не обмежена припустимими розмірами. Доступ до такої інформації здійснюється на основі або послідовного, або прямого способу доступу в термінах відповідної системи керування файлами. Передбачено розширення інформаційних структур даних, збережених на віртуальних пристроях.
Ступінь наближення до «ідеального» в ВМ може бути більший чи менший у кожному конкретному випадку. Чим більше ВМ, реалізована засобами ОС на базі конкретної апаратури, наближена до «ідеального» по характеристиках машини і, отже, чим більше її архітектурно-логічні характеристики відмінні від реально існуючих, тим більше ступінь віртуальності в отриманої користувачем машини.
Одним з аспектів віртуалізації є організація можливості виконання в даної ОС додатків, що розроблялися для інших ОС. Другими словами, мова йде про організацію декількох операційних середовищ. Реалізація цього принципу дозволяє такій ОС мати дуже сильну перевагу перед аналогічними ОС, що не мають такої можливості. Прикладом реалізації принципу віртуалізації може служити VDM-машина (Virtual DOS machine) — захищена підсистема, що надає повне середовище MS-DOS і консоль для виконання VS-DOS додатків. Одне тимчасово може виконуватися практично довільне число VDM-сесій. Такі VDM-машини маються й у системах Microsoft Windows та в OS/2.
Принцип незалежності програм від зовнішніх пристроїв.
Цей принцип реалізується зараз у переважній більшості ОС загального призначення. Ми вже говорили про нього, розглядаючи принципи організації в/в. Мабуть, вперше найбільш послідовно даний принцип був реалізований в ОС UNIХ. Реалізований він і в більшості сучасних ОС для ПК. Нагадаємо, цей принцип полягає в тому, що зв’язок програм з конкретними пристроями виробляється не на рівні трансляції програми, а в період планування її виконання. У результаті перекомпіляція при роботі програми з новим пристроєм, на якому розташовуються дані, не потрібно.
Принцип дозволяє однаково здійснювати операції керування зовнішніми пристроями незалежно від їхніх конкретних фізичних характеристик. Наприклад, програми, що містять операції обробки послідовного набору даних, байдуже, на якому носії ці дані будуть розташовуватися. Зміна носія і даних, розташовуваних на них (при незмінності структурних характеристик даних), не принесе яких-небудь змін у програму, якщо в системі реалізований принцип незалежності.
Принцип сумісності.
Одним з аспектів сумісності є здатність ОС виконувати програми, написані для інших ОС чи для більш ранніх версій даної ОС, а також для іншої апаратної платформи.
Необхідно розділяти питання двійкової сумісності і сумісності на рівні вихідних текстів додатків. Двійкова сумісність досягається в тому випадку, коли можна взяти програму, що виконується, і запустити її на виконання на інший ОС. Для цього необхідні: сумісність на рівні команд процесора, сумісність на рівні системних викликів і навіть на рівні бібліотечних викликів, якщо вони є зв’язуваними.
Сумісність на рівні вихідних текстів вимагає наявності відповідного транслятора в складі системного ПЗ, а також сумісності на рівні бібліотек і системних викликів. При цьому необхідна перекомпіляція наявних вихідних текстів у новий виконуваний модуль.
Одним із засобів забезпечення сумісності програмних і користувацьких інтерфейсів є відповідність стандартам РОSIX. Використання стандарту РОSIХ дозволяє створювати програми в стилі UNIX, що згодом можуть легко переноситися з однієї системи в іншу.
Принцип відкритої і нарощуваної ОС.
Відкрита ОС доступна для аналізу як користувачам, так і системним фахівцям, що обслуговують обчислювальну систему. Нарощувана (що модифікується, що розвивається) ОС дозволяє не тільки використовувати можливості генерації, але і вводити в її склад нові модулі, удосконалювати існуючі і т.д. Іншими словами, необхідно, щоб можна було легко внести доповнення і зміни, якщо це буде потрібно, і не порушити цілісність системи. Прекрасні можливості для розширення надає підхід до структурування ОС по типі клієнт-сервер з використанням мікроядерної технології. Відповідно до цього підходу ОС будується як сукупність привілейованої керуючої програми і набору непривілейованих послуг — «серверів». Основна частина ОС залишається незмінною й у той же час можуть бути додані нові чи сервери поліпшені старі.
Цей принцип іноді трактують як розширюваність системи. До відкритих ОС, насамперед, варто віднести UNIX — системи і, природно, ОС Linux.
Принцип мобільності (переносимості).
ОС відносно легко повинна переноситися з процесора одного типу на процесор іншого типу і з апаратної платформи (яка включає поряд з типом процесора і спосіб організації всієї апаратури комп’ютера, інакше кажучи, архітектуру обчислювальної системи) одного типу на апаратну платформу іншого типу. Помітимо, що принцип переносимості дуже близький принципу сумісності, хоча це і не те саме.
Написання стерпної ОС аналогічне написанню будь-якого стерпного коду — потрібно випливати деяким правилам. По-перше, велика частина ОС повинна бути написана мовою, що є на всіх системах, на яких планується надалі її переносити. Це, насамперед, означає, що ОС повинна бути написана мовою високого рівня, переважно стандартизованому, наприклад мовою С. Програма, написана на асемблері, не є в загальному випадку стерпною. По-друге, важливо чи мінімізувати, якщо можливо, виключити ті частини коду, що безпосередньо взаємодіють з апаратними засобами. Залежність від апаратури може мати багато форм. Деякі очевидні форми залежності включають пряме маніпулювання регістрами й іншими апаратними засобами. Нарешті, якщо апаратно-залежний код не може бути цілком виключений, то він повинний бути ізольований у декількох добре локальних модулях. Апаратно-залежний код не повинен бути розподілений по всій системі. Наприклад, можна сховати апаратно-залежну структуру в дані абстрактного типу, що задаються програмно. Інші модулі системи будуть працювати з цими даними, а не з апаратурою, використовуючи набір деяких функцій. Коли ОС переноситься, то змінюються тільки ці дані і функції, що ними маніпулюють.
Уведення стандартів РОSIХ мало на меті забезпечити переносимість створюваного ПЗ.
Принцип забезпечення безпеки обчислень.
Забезпечення безпеки при виконанні обчислень є бажаною властивістю для будь-якої багатокористувацької системи. Правила безпеки визначають такі властивості, як захист ресурсів одного користувача від інших і встановлення квот по ресурсах для запобігання захоплення одним користувачем усіх системних ресурсів (таких, як пам’ять).
Забезпечення захисту інформації від несанкціонованого доступу є обов’язковою функцією мережевих ОС. У багатьох сучасних ОС гарантується ступінь безпеки даних, що відповідає рівню С2 у системі стандартів США. Основи стандартів в області безпеки були закладені в документі «Критерії оцінки надійних комп’ютерних систем». Цей документ, виданий Національним центром комп’ютерної безпеки (NCSC — National Computer Security Centre) у США в 1983 році, часто називають Жовтогарячою книгою.
Відповідно до вимог Жовтогарячої книги безпечною вважається система, що «за допомогою спеціальних механізмів захисту контролює доступ до інформації таким чином, що тільки мають відповідні повноваження чи обличчя процеси, що виконуються від їхнього імені, можуть одержати доступ на читання, запис, чи створення видалення інформації».
Ієрархія рівнів безпеки, приведена в Жовтогарячій книзі, позначає нижчий рівень безпеки як D, а вищий — як А.
У клас D попадають системи, оцінка яких виявила їхню невідповідність вимогам всіх інших класів.
Основними властивостями, характерними для систем класу C, є наявність підсистеми обліку подій, зв’язаних з безпекою, і виборчий контроль доступу. Клас (рівень) C поділяється на 2 підрівня: рівень С1, що забезпечує захист даних від помилок користувачів, але не від дій зловмисників; і більш строгий рівень С2. На рівні С2 повинні бути присутніми:
- — засоби секретного входу, що забезпечують ідентифікацію користувачів шляхом введення унікального імені і пароля перед тим, як їм буде дозволений доступ до системи;
- — виборчий контроль доступу, що дозволяє власнику ресурсу визначити, хто має доступ до ресурсу і що він може з ним робити. Власник робить це шляхом наданих прав доступу чи користувачу групі користувачів;
- — засоби обліку і спостереження (auditing) що забезпечують можливість знайти і зафіксувати важливі події, зв’язані з безпекою, чи будь-які спроби створити, одержати доступ чи видалити системні ресурси;
- — захист пам’яті, що полягає в тім, що пам’ять ініціюється перед тим, як повторно використовується.
На цьому рівні система не захищена від помилок користувача, але поводження його може бути проконтрольоване по записах у журналі, залишеним засобами спостереження й аудита.
Системи рівня В засновані на позначених даних і розподілі користувачів по категоріях, тобто реалізують мандатний контроль доступу. Кожному користувачу привласнюється рейтинг захисту, і він може одержувати доступ до даних тільки відповідно до цього рейтингу. Цей рівень на відміну від рівня С захищає систему від помилкового поводження користувача.
Рівень, А є найвищим рівнем безпеки, він вимагає на додаток до усіх вимог рівня B виконання формального, математично обґрунтованого доказу відповідності системи вимогам безпеки. Різні комерційні структури (наприклад, банки) особливо виділяють необхідність облікової служби, аналогічної тієї, що пропонують державні рекомендації С2. Будь-яка діяльність, зв’язана з безпекою, може бути відсліджена і тим самим врахована. Це саме те, чого вимагає стандарт для систем класу С2, і що звичайно потрібно банкам. Однак комерційні користувачі, як правило, не хочуть розплачуватися продуктивністю за підвищений рівень безпеки. А-рівень безпеки займає своїми керуючими механізмами до 90% процесорного часу, що, безумовно, у більшості випадків уже неприйнятно. Більш безпечні системи не тільки знижують ефективність, але й істотно обмежують число доступних прикладних пакетів, що відповідним чином можуть виконуватися в подібній системі. Наприклад, для ОС Solaris (версія UNIX) є кілька тисяч додатків, а для її аналога В рівня — тільки біля ста.