Принцип віртуалізації
Побудова віртуальних ресурсів, їх розподіл і використання зараз використовується практично в будь-якій ОС. Цей принцип дозволяє представити структуру системи у вигляді певного набору планувальників процесорів і розподілювачів ресурсів (моніторів) і використовувати єдину централізовану схему розподілу ресурсів.
Найбільш природнім і закінченим проявом концепції віртуальності є поняття віртуальної машини. По суті будь-яка операційна система, будучи засобом розподілу ресурсів і організовуючи за певними правилами керування процесорами, ховає від користувача і його додатків реальні апаратні та інші ресурси, замінюючи їх деякою абстракцією. В результаті користувачі бачать і використовують віртуальну машину як деякий пристрій, здатний сприймати їх програми, написані на певній мові програмування, виконувати їх та видавати результати. При такому мовному представленні користувача зовсім не цікавить реальна конфігурація обчислювальної системи, способи ефективного використання її компонентів і підсистем. Він мислить і працює з машиною в термінах використовуваної ним мови і тих ресурсів, які йому надаються в рамках віртуальної машини.
Найчастіше віртуальна машина, що надається користувачеві, відтворює архітектуру реальної машини, але архітектурні елементи в такому представленні виступають з новими або вдосконаленими характеристиками, які часто спрощують роботу з системою. Характеристики можуть бути довільними, але частіше всього користувачі бажають мати власну "ідеальну" за архітектурними характеристиками в наступному складі:
1. одноманітна за логікою роботи пам’ять (віртуальна) практично необмеженого розміру. Середній час доступу співставлений зі значенням цього параметра оперативної пам’яті. Організація роботи з інформацією в такій пам’яті виконується в термінах обробки даних – в термінах роботи з сегментами даних на рівні вибраної користувачем мови програмування;
2. довільне число процесорів (віртуальних), здатних працювати паралельно і взаємодіяти під час роботи. Способи керування процесорами, в тому числі синхронізація і інформаційні взаємодії, реалізовані і доступні користувачам на рівні використовуваної мови програмування в термінах керування процесами;
3. довільна кількість зовнішніх пристроїв (віртуальних), здатних працювати з пам’яттю віртуальної машини паралельно або послідовно, асинхронно або синхронно по відношенню до роботи того чи іншого віртуального процесора, які ініціюють роботу цих пристроїв. Інформація, що передається або зберігається на віртуальних пристроях, не обмежена допустимими розмірами. Доступ до такої інформації здійснюється на основі або послідовного, або прямого способу доступу в термінах відповідної системи керування файлами. Передбачене розширення інформаційних структур даних, що зберігаються на віртуальних пристроях.
Одним із аспектів віртуалізації є організація можливості виконання в даній ОС додатків, які розроблювалися для інших ОС. Мова йде про організацію кількох операційних середовищ. Реалізація цього принципу дозволяє такій ОС мати сильну перевагу перед аналогічними ОС, що не мають такої можливості. Прикладом реалізації принципу віртуалізації може служити VDM–машина (Virtual DOS machine) – захищена підсистема, що представляє повне середовище MS DOS–додатків. Одночасно може виконуватися практично довільне число VDM–сесій. Такі VDM–машини є в системах MS Windows, і в OS/2.
- Принцип незалежності програм від зовнішніх пристроїв
Цей принцип реалізується в переважній більшості ОС загального використання. Вперше цей принцип був реалізований в ОС Unix.
Принцип полягає в тому, що зв'язок програм з конкретними пристроями виконується не на рівні трансляції програми, а в період планування її виконання. В результаті перекомпіляція при роботі з новим пристроєм, на якому розташовуються дані, не потрібна.
Принцип дозволяє однаково здійснювати операції з керування зовнішніми пристроями незалежно від їх конкретних фізичних характеристик. Наприклад, програмі, що вміщує операції обробки послідовного набору даних, все-одно, на якому носії ці дані будуть знаходитися.
Зміна носія і даних, розташованих на них (при незмінності структурних характеристик даних), не принесе ніяких змін в програму, якщо в системі реалізований принцип незалежності.
- Принцип сумісності
Одним із аспектів сумісності є здатність ОС виконувати програми, написані для інших ОС або для більш ранніх версій даної ОС, а також для іншої апаратної платформи.
Необхідно розділити питання двійкової сумісності і сумісності на рівні вихідних текстів додатків. Двійкова сумісність досягається в тому випадку, коли можна взяти виконувану програму і запустити її на виконання на іншій ОС.
Для цього необхідні: сумісність на рівні команд процесора, сумісність на рівні системних викликів і навіть на рівні бібліотечних викликів, якщо вони є динамічно зв'язуваними.
Сумісність на рівні вихідних текстів потребує наявності відповідного транслятора в складі системного програмного забезпечення, а також сумісності на рівні бібліотек і системних викликів. При цьому необхідна перекомпіляція наявних вихідних текстів в новий виконуваний модуль.
Набагато складніше досягти двійкової сумісності між процесорами, основаними на різних архітектурах. Для того, щоб один комп'ютер виконував програми іншого (наприклад, програму для ПК ІВМ РС потрібно виконувати на ПК типу Macintosh фірми Apple), цей комп'ютер повинен працювати з машинними командами, які йому не зрозумілі. В цьому випадку процесор типу 680х0 (або Power PC) на Maс повинен виконувати двійковий код, призначений для процесора і80х86. Процесор 80х86 має власний дешифратор команд, регістри і внутрішню архітектуру. Процесор 680х0 не розуміє двійковий код 80х86, тому він повинен вибрати кожну команду, декодувати її, щоб визначити, для чого вона призначена, а потім виконати еквівалентну підпрограму, написану для 680х0.
В зв'язку з тим, що у 680х0 немає точно таких регістрів, прапорів і внутрішнього арифметично-логічного пристрою, як в 80х86, він повинен імітувати всі ці елементи з використанням своїх регістрів або пам'яті: він повинен ретельно відтворити результати кожної команди, що потребує спеціально написаних підпрограм для 680х0, які гарантують, що стан емульованих регістрів і прапорів після виконання кожної команди буде точно таким же, як і на реальному 80х86.
Виходом в таких випадках буде використання так званих прикладних середовищ або емуляторів. Враховуючи, що основну частину програми складають виклики бібліотечних функцій, прикладне середовище імітує бібліотечні функції цілком, використовуючи раніше написану бібліотеку функцій аналогічного призначення, а інші команди емулюють кожну окремо.
Одним із засобів забезпечення сумісності програмних і користувацьких інтерфейсів є відповідність стандартним POSIX. Використання стандарти POSIX дозволяє створювати програми в стилі UNIX, які потім можна легко переносити з однієї системи в іншу.
- Принцип відкритої і нарощуваної ОС
Відкрита ОС доступна для аналізу як користувачам, так і спеціалістам, що обслуговують обчислювальну систему. Нарощувана (яка модифікується і розвивається) ОС дозволяє використовувати не тільки можливості генерації, а і вводити до її складу нові модулі, вдосконалювати існуючі і т.д. Іншими словами, необхідно, щоб можна було легко вносити доповнення і зміни, якщо це потрібно, не порушуючи цілісності системи.
Хороші перспективи для розширення надає підхід до структурування ОС по типу клієнт-сервер з використанням мікроядерної технології. У відповідності до цього підходу ОС будується як сукупність привілейованої керуючої програми і набору непривілейованих послуг – “серверів”. Основна частина ОС залишається незмінною і в той же час можуть бути додані нові сервери або покращені старі.
Цей принцип іноді трактують як розширюваністю системи. До відкритих ОС, насамперед, слід віднести UNIX-системи і, природньо, Linux.
- Принцип мобільності (переносимості)
Операційна система повинна відносно легко переноситися з процесора одного типу на процесор іншого типу і з апаратної платформи (яка включає наряду з типом процесора і спосіб організації всієї апаратури комп'ютера, інакше кажучи, архітектуру обчислювальної системи) одного типу на апаратну платформу іншого типу. Принцип переносимості дуже близький до принципу сумісності, хоча це не одне і те ж.
Написання переносимої ОС аналогічне написанню будь-якого переносимого коду – потрібно слідувати деяким правилам:
1. Більша частина ОС має бути написана на мові, яка є на всіх системах. Це означає, що ОС має бути написана на мові високого рівня, переважно стандартизованій, наприклад, на мові С. Програма написана асемблері, не є в загальному випадку переносимою;
2. Важливо мінімізувати або, якщо це можливо, виключити ті частини коду, які безпосередньо взаємодіють з апаратними засобами. Залежність від апаратури може мати багато форм. Деякі очевидні форми залежності включають пряме маніпулювання регістрами та іншими засобами. Накінець, якщо апаратно-залежний код не може бути повністю виключений, то він повинен бути ізольований в добре локалізованих модулях. Апаратно-залежний код не повинен бути розподілений по всій системі. Наприклад, можна заховати апаратно-залежну структуру в програмно задані дані абстрактного типу. Інші модулі системи будуть працювати з цими даними, а не з апаратурою, використовуючи набір деяких функцій. Коли ОС переноситься, то змінюється тільки ці дані і функції, які ними маніпулюють.
Введення стандартів POSIX переслідувало мету забезпечити переносимість створюваного програмного забезпечення.
Дата добавления: 2016-07-27; просмотров: 1575;