Апаратна залежність операційних систем 5 Апаратна залежність операційних систем



Дата конвертації19.12.2016
Розмір445 b.


1.5.1. Апаратна залежність операційних систем 

  • 1.5.1. Апаратна залежність операційних систем 

  • Багато ОС успішно працюють на різних апаратних платформах без істотних змін у своєму складі. Багато в чому це пояснюється тим, що, незважаючи на відмінності в деталях, засоби апаратної підтримки ОС більшості комп’ютерів набули тепер багато типових ознак, зокрема ці засоби впливають передусім на роботу компонентів ОС. У результаті в ОС можна виділити досить компактний шар машиннозалежних компонентів ядра й зробити інші шари ОС загальними для різних апаратних платформ.


1.5.2. Типові засоби апаратної підтримки операційних систем

  • 1.5.2. Типові засоби апаратної підтримки операційних систем

  • Чіткої межі між програмною й апаратною реалізацією функцій ОС немає – рішення про те, які функції ОС будуть виконуватися програмно, а які апаратно, приймають розробники апаратного й програмного забезпечення комп’ютера. Проте всі сучасні апаратні платформи мають деякий типовий набір засобів апаратної підтримки ОС, зокрема таких:

  • засобів підтримки привілейованого режиму;

  • засобів трансляції адрес;

  • засобів перемикання процесів;

  • системи переривань;

  • системного таймера;

  • засобів захисту ділянок пам’яті.



Засоби підтримки привілейованого режиму зазвичай ґрунтуються на системному регістрі процесора, який часто називають «словом стану» машини або процесора. Цей регістр має деякі ознаки, що обумовлюють режими роботи процесора, в тому числі й ознаку поточного режиму привілеїв. Зміна режиму привілеїв виконується за рахунок зміни «слова стану» машини внаслідок переривання або виконання привілейованої команди. Кількість градацій привілейованості може бути різною у різних типів процесорів, найбільш часто використовуються два рівні (ядро – користувач) або чотири (наприклад, ядро – супервізор – виконання – користувач у платформи VAX або 0–1–2–3 у процесорів Іntel x86/Pentіum). Засобами підтримки привілейованого режиму є виконання перевірки допустимості виконання активною програмою інструкцій процесора за поточного рівня привілейованості.

  • Засоби підтримки привілейованого режиму зазвичай ґрунтуються на системному регістрі процесора, який часто називають «словом стану» машини або процесора. Цей регістр має деякі ознаки, що обумовлюють режими роботи процесора, в тому числі й ознаку поточного режиму привілеїв. Зміна режиму привілеїв виконується за рахунок зміни «слова стану» машини внаслідок переривання або виконання привілейованої команди. Кількість градацій привілейованості може бути різною у різних типів процесорів, найбільш часто використовуються два рівні (ядро – користувач) або чотири (наприклад, ядро – супервізор – виконання – користувач у платформи VAX або 0–1–2–3 у процесорів Іntel x86/Pentіum). Засобами підтримки привілейованого режиму є виконання перевірки допустимості виконання активною програмою інструкцій процесора за поточного рівня привілейованості.



Засоби трансляції адрес виконують операції перетворення віртуальних адрес, які містяться в кодах процесу, в адреси фізичної пам’яті. Таблиці, призначені для трансляції адрес, зазвичай мають великий обсяг, тому для їх зберігання використовуються ділянки оперативної пам’яті, а апаратура процесора містить тільки вказівники на ці ділянки. Засоби трансляції адрес використовують дані вказівники для доступу до елементів таблиць і апаратного виконання алгоритму перетворення адреси, що значно прискорює процедуру трансляції порівняно з її чисто програмною реалізацією.

  • Засоби трансляції адрес виконують операції перетворення віртуальних адрес, які містяться в кодах процесу, в адреси фізичної пам’яті. Таблиці, призначені для трансляції адрес, зазвичай мають великий обсяг, тому для їх зберігання використовуються ділянки оперативної пам’яті, а апаратура процесора містить тільки вказівники на ці ділянки. Засоби трансляції адрес використовують дані вказівники для доступу до елементів таблиць і апаратного виконання алгоритму перетворення адреси, що значно прискорює процедуру трансляції порівняно з її чисто програмною реалізацією.



Засоби перемикання процесів призначені для швидкого збереження контексту процесу, що припиняється, й відновлення контексту процесу, який стає активним. Уміст контексту містить усі регістри загального призначення процесора, регістр прапорів операцій (тобто прапорів нуля, перенесення, переповнення і т.ін.), а також ті системні регістри і вказівники, які пов’язані з окремим процесом, а не з ОС, наприклад, вказівника на таблицю трансляції адрес процесу. Для зберігання контекстів припинених процесів використовуються ділянки оперативної пам’яті, які підтримуються вказівниками процесора.

  • Засоби перемикання процесів призначені для швидкого збереження контексту процесу, що припиняється, й відновлення контексту процесу, який стає активним. Уміст контексту містить усі регістри загального призначення процесора, регістр прапорів операцій (тобто прапорів нуля, перенесення, переповнення і т.ін.), а також ті системні регістри і вказівники, які пов’язані з окремим процесом, а не з ОС, наприклад, вказівника на таблицю трансляції адрес процесу. Для зберігання контекстів припинених процесів використовуються ділянки оперативної пам’яті, які підтримуються вказівниками процесора.

  • Перемикання контексту виконується за певними командами процесора, наприклад за командою переходу до виконання нового завдання. Така команда викликає автоматичне завантаження даних зі збереженого контексту в регістри процесора, після чого процес триває з перерваного раніше місця.



Система переривань дозволяє комп’ютеру реагувати на зовнішні події, синхронізувати виконання процесів і роботу пристроїв введення-виведення, швидко переходити з однієї програми на іншу. Механізм переривань потрібен для того, щоб сповістити процесор про виникнення в обчислювальній системі якоїсь непередбаченої події або події, яка не синхронізована з циклом роботи процесора. У більшості моделей процесорів виконуваний апаратурою перехід на процедуру оброблення переривань супроводжується заміною «слова стану» машини (або навіть усього контексту процесу), що дозволяє одночасно з переходом за потрібною адресою виконати перехід у привілейований режим. Після завершення процесу оброблення переривань відбувається повернення до виконання перерваного коду.

  • Система переривань дозволяє комп’ютеру реагувати на зовнішні події, синхронізувати виконання процесів і роботу пристроїв введення-виведення, швидко переходити з однієї програми на іншу. Механізм переривань потрібен для того, щоб сповістити процесор про виникнення в обчислювальній системі якоїсь непередбаченої події або події, яка не синхронізована з циклом роботи процесора. У більшості моделей процесорів виконуваний апаратурою перехід на процедуру оброблення переривань супроводжується заміною «слова стану» машини (або навіть усього контексту процесу), що дозволяє одночасно з переходом за потрібною адресою виконати перехід у привілейований режим. Після завершення процесу оброблення переривань відбувається повернення до виконання перерваного коду.



Системний таймер, часто реалізований у вигляді швидкодійного регістра-лічильника, необхідний ОС для витримування інтервалів часу. Для цього в регістр таймера програмно завантажується значення необхідного інтервалу в умовних одиницях, з якого потім автоматично з певною частотою починає відраховува-тися по одиниці. Частота «тиків» таймера, як правило, тісно пов’язана з частотою тактового генератора процесора. (Не слід плутати таймер ні з тактовим генератором, який виробляє сигнали, що синхронізу-ють усі операції в комп’ютері, ні з системним годинником – працюючою на батареях електронною схемою, – які ведуть незалежний відлік часу й календарної дати.) Із досягненням нульового значення лічильника таймер ініціює переривання, яке обробляється процедурою ОС. Переривання від системного таймера використовуються ОС у першу

  • Системний таймер, часто реалізований у вигляді швидкодійного регістра-лічильника, необхідний ОС для витримування інтервалів часу. Для цього в регістр таймера програмно завантажується значення необхідного інтервалу в умовних одиницях, з якого потім автоматично з певною частотою починає відраховува-тися по одиниці. Частота «тиків» таймера, як правило, тісно пов’язана з частотою тактового генератора процесора. (Не слід плутати таймер ні з тактовим генератором, який виробляє сигнали, що синхронізу-ють усі операції в комп’ютері, ні з системним годинником – працюючою на батареях електронною схемою, – які ведуть незалежний відлік часу й календарної дати.) Із досягненням нульового значення лічильника таймер ініціює переривання, яке обробляється процедурою ОС. Переривання від системного таймера використовуються ОС у першу



чергу для спостереження за тим, як окремі процеси витрачають час процесора. Наприклад, у системі розділення часу підчас оброблення чергового переривання від таймера планувальник процесів може примусово передати керування іншому процесу, якщо цей процес вичерпав виділений йому квант часу.

  • чергу для спостереження за тим, як окремі процеси витрачають час процесора. Наприклад, у системі розділення часу підчас оброблення чергового переривання від таймера планувальник процесів може примусово передати керування іншому процесу, якщо цей процес вичерпав виділений йому квант часу.

  • Засоби захисту ділянок пам’яті забезпечують на апаратному рівні перевірку можливості програмного коду здійснювати з даними певної ділянки пам’яті такі операції, як зчитування, запис або виконання (у разі передавання керування). Якщо апаратура комп’ютера підтримує механізм трансляції адрес, то засоби захисту ділянок пам’яті вмонтовуються в цей механізм. Функції апаратури із захисту пам’яті полягають у порівнянні рівнів привілеїв поточного коду процесора й сегмента пам’яті, до якого робиться звернення.



1.5.3. Машиннозалежні компоненти операційної системи

  • 1.5.3. Машиннозалежні компоненти операційної системи

  • Одна й та сама ОС не може без яких-небудь змін установлюватися на комп’ютерах, що відрізняються типом процесора і/або способом організації всієї апаратури. У модулях ядра ОС не можуть не відобразитися такі особливості апаратної платформи, як кількість типів переривань і формат таблиці посилань на процедури оброблення переривань, склад регістрів загального призначення й системних регістрів, стан яких потрібно зберігати в контексті процесу, особливості підключення зовнішніх пристроїв і т. ін.



Однак досвід розроблення ОС показує: ядро можна спроектувати таким чином, що тільки деякі модулі будуть машиннозалежними, а інші не будуть залежати від особливостей апаратної платформи. У добре структурованому ядрі машиннозалежні модулі локалізовані й утворюють програмний шар, що природно примикає до шару апаратури. Така локалізація машиннозалежних модулів суттєво спрощує перенесення ОС на іншу апаратну платформу.

  • Однак досвід розроблення ОС показує: ядро можна спроектувати таким чином, що тільки деякі модулі будуть машиннозалежними, а інші не будуть залежати від особливостей апаратної платформи. У добре структурованому ядрі машиннозалежні модулі локалізовані й утворюють програмний шар, що природно примикає до шару апаратури. Така локалізація машиннозалежних модулів суттєво спрощує перенесення ОС на іншу апаратну платформу.

  • Обсяг машиннозалежних модулів ОС залежить від того, наскільки великі відмінності в апаратних платформах, для яких розробляється ОС. Наприклад, ОС, побудована на 64-бітових адресах, для перенесення на машину з 32-бітовими адресами має бути переписана наново. Одна з найбільш



очевидних відмінностей – незбіжність системи команд процесорів – долається достатньо просто. Операційна система програмується мовою високого рівня, а потім відповідним компілятором виробляється код для конкретного типу процесора. Однак у багатьох випадках відмінності в організації апаратури комп’ютера лежать набагато глибше й подолати їх у такий спосіб не вдається. Наприклад, однопроцесорний і двопроцесорний комп’ютери потребують застосування в ОС зовсім різних алгоритмів розподілу процесорного часу. Аналогічна відсутність апаратної підтримки віртуальної пам’яті приводить до принципової різниці в реалізації підсистеми керування пам’яттю. У таких випадках не обійтися без внесення в код ОС специфіки апаратної платформи, для якої ця ОС призначається.

  • очевидних відмінностей – незбіжність системи команд процесорів – долається достатньо просто. Операційна система програмується мовою високого рівня, а потім відповідним компілятором виробляється код для конкретного типу процесора. Однак у багатьох випадках відмінності в організації апаратури комп’ютера лежать набагато глибше й подолати їх у такий спосіб не вдається. Наприклад, однопроцесорний і двопроцесорний комп’ютери потребують застосування в ОС зовсім різних алгоритмів розподілу процесорного часу. Аналогічна відсутність апаратної підтримки віртуальної пам’яті приводить до принципової різниці в реалізації підсистеми керування пам’яттю. У таких випадках не обійтися без внесення в код ОС специфіки апаратної платформи, для якої ця ОС призначається.



Для зменшення кількості машиннозалежних модулів виробники ОС зазвичай обмежують універсальність машиннонезалежних модулів. Це означає, що їх незалежність має умовний характер і поширюється тільки на кілька типів процесорів і створених на основі цих процесорів апаратних платформ. Цим шляхом пішли, наприклад, розробники ОС Wіndows NT, обмеживши кількість типів процесорів для своєї системи чотирма й поставляючи різні варіанти кодів ядра для однопроцесорних та багатопроцесорних комп’ютерів.

  • Для зменшення кількості машиннозалежних модулів виробники ОС зазвичай обмежують універсальність машиннонезалежних модулів. Це означає, що їх незалежність має умовний характер і поширюється тільки на кілька типів процесорів і створених на основі цих процесорів апаратних платформ. Цим шляхом пішли, наприклад, розробники ОС Wіndows NT, обмеживши кількість типів процесорів для своєї системи чотирма й поставляючи різні варіанти кодів ядра для однопроцесорних та багатопроцесорних комп’ютерів.



Особливе місце серед модулів ядра займають низькорівневі драйвери зовнішніх пристроїв. З одного боку, ці драйвери, як і високорівневі драйвери, входять до складу менеджера введення-виведення, тобто належать до шару ядра, що займає досить високе місце в ієрархії шарів. З другого боку, низькорівневі драйвери відображають усі особливості керованих зовнішніх пристроїв, тому їх можна віднести й до шару машиннозалежних модулів. Така подвійність низькорівневих драйверів ще раз підтверджує схематичність моделі ядра із суворою ієрархією шарів.

  • Особливе місце серед модулів ядра займають низькорівневі драйвери зовнішніх пристроїв. З одного боку, ці драйвери, як і високорівневі драйвери, входять до складу менеджера введення-виведення, тобто належать до шару ядра, що займає досить високе місце в ієрархії шарів. З другого боку, низькорівневі драйвери відображають усі особливості керованих зовнішніх пристроїв, тому їх можна віднести й до шару машиннозалежних модулів. Така подвійність низькорівневих драйверів ще раз підтверджує схематичність моделі ядра із суворою ієрархією шарів.



Для комп’ютерів на основі процесорів Іntel x86/Pentіum розроблення екрануючого машинно-залежного шару ОС дещо спрощується за рахунок убудованої в постійну пам’ять комп’ютера базової системи введення-виведення – BІOS, що містить драйвери для всіх пристроїв, що входять у базову конфігурацію комп’ютера: жорстких і гнучких дисків, клавіатури, дисплея і т. ін. Ці драйвери виконують досить примітивні операції з керованими пристроями, наприклад зчитування групи секторів даних з певної доріжки диска, але за рахунок цих операцій екрануються відмінності апаратних платформ ПК і серверів на процесорах Іntel різних виробників. Розробники ОС можуть користуватися шаром драйверів BІOS як частиною машиннозалежного шару ОС, а можуть і замінити всі або частину драйверів BІOS компонентами ОС.

  • Для комп’ютерів на основі процесорів Іntel x86/Pentіum розроблення екрануючого машинно-залежного шару ОС дещо спрощується за рахунок убудованої в постійну пам’ять комп’ютера базової системи введення-виведення – BІOS, що містить драйвери для всіх пристроїв, що входять у базову конфігурацію комп’ютера: жорстких і гнучких дисків, клавіатури, дисплея і т. ін. Ці драйвери виконують досить примітивні операції з керованими пристроями, наприклад зчитування групи секторів даних з певної доріжки диска, але за рахунок цих операцій екрануються відмінності апаратних платформ ПК і серверів на процесорах Іntel різних виробників. Розробники ОС можуть користуватися шаром драйверів BІOS як частиною машиннозалежного шару ОС, а можуть і замінити всі або частину драйверів BІOS компонентами ОС.



1.5.4. Переносимість операційних систем

  • 1.5.4. Переносимість операційних систем

  • Якщо код ОС може бути порівняно легко перенесений з процесора одного типу на процесор іншого типу й з апаратної платформи одного типу на апаратну платформу іншого типу, то таку ОС називають переносимою (portable), або мобільною.

  • Хоча ОС часто описуються або як переносимі, або як непереносимі, мобільність – це не бінарний стан, а поняття ступеня переносимості. Річ не в тім, чи може бути система перенесена, а в тім, наскільки легко можна це зробити. Для того щоб забезпечити властивість мобільності ОС, розробники повинні додержуватися таких правил.



1. Більша частина коду повинна бути написана мовою, транслятори якої є на всіх машинах, куди передбачається переносити систему. Такими мовами є стандартизовані мови високого рівня. Більшість переносимих ОС написано мовою С, яка має багато особливостей, корисних для розроблення кодів ОС, і компілятори якої широко доступні. Програма, написана мовою асемблеру, є переносимою тільки в тих випадках, коли перенесення ОС планується на комп’ютер, що має ту ж систему команд. В інших випадках асемблер використовується тільки для тих непереносимих частин системи, які повинні безпосередньо взаємодіяти з апаратурою (наприклад, обробник переривань), або для частин, які потребують максимальної швидкості (наприклад, цілочислова арифметика підвищеної точності).

  • 1. Більша частина коду повинна бути написана мовою, транслятори якої є на всіх машинах, куди передбачається переносити систему. Такими мовами є стандартизовані мови високого рівня. Більшість переносимих ОС написано мовою С, яка має багато особливостей, корисних для розроблення кодів ОС, і компілятори якої широко доступні. Програма, написана мовою асемблеру, є переносимою тільки в тих випадках, коли перенесення ОС планується на комп’ютер, що має ту ж систему команд. В інших випадках асемблер використовується тільки для тих непереносимих частин системи, які повинні безпосередньо взаємодіяти з апаратурою (наприклад, обробник переривань), або для частин, які потребують максимальної швидкості (наприклад, цілочислова арифметика підвищеної точності).



2. Обсяг машиннозалежних частин коду, які безпосередньо взаємодіють з апаратними засобами, має бути по можливості мінімізований. Так, наприклад, слід усіляко уникати прямого маніпулювання регістрами й іншими апаратними засобами процесора. Для зменшення апаратної залежності розробники ОС повинні також унеможливити використання за замовчуванням стандартних конфігурацій апаратури або їх характеристик. Апаратно залежні параметри можна «сховати» у програмно-задавані дані абстрактного типу. Для виконання необхідних дій з керування апаратурою за цими параметрами повинен бути написаний набір апаратно залежних функцій. Щоразу, коли якому-небудь модулю ОС потрібно виконати якусь дію, пов’язану з апаратурою,

  • 2. Обсяг машиннозалежних частин коду, які безпосередньо взаємодіють з апаратними засобами, має бути по можливості мінімізований. Так, наприклад, слід усіляко уникати прямого маніпулювання регістрами й іншими апаратними засобами процесора. Для зменшення апаратної залежності розробники ОС повинні також унеможливити використання за замовчуванням стандартних конфігурацій апаратури або їх характеристик. Апаратно залежні параметри можна «сховати» у програмно-задавані дані абстрактного типу. Для виконання необхідних дій з керування апаратурою за цими параметрами повинен бути написаний набір апаратно залежних функцій. Щоразу, коли якому-небудь модулю ОС потрібно виконати якусь дію, пов’язану з апаратурою,



він маніпулює абстрактними даними, використовуючи відповідну функцію з наявного набору. Коли ОС переноситься, то змінюються тільки ці дані й функції, які ними маніпулюють. Наприклад, в ОС Windows NT диспетчер переривань перетворює апаратні рівні переривань конкретного типу процесора в стандартний набір рівнів переривань IRQL, з якими працюють інші модулі ОС. Тому для перенесення Windows NT на нову платформу потрібно переписати, зокрема, ті коди диспетчера переривань, які займаються відображенням рівнів переривання на абстрактні рівні IRQL, а ті модулі ОС, які користуються цими абстрактними рівнями, змін не зажадають.

  • він маніпулює абстрактними даними, використовуючи відповідну функцію з наявного набору. Коли ОС переноситься, то змінюються тільки ці дані й функції, які ними маніпулюють. Наприклад, в ОС Windows NT диспетчер переривань перетворює апаратні рівні переривань конкретного типу процесора в стандартний набір рівнів переривань IRQL, з якими працюють інші модулі ОС. Тому для перенесення Windows NT на нову платформу потрібно переписати, зокрема, ті коди диспетчера переривань, які займаються відображенням рівнів переривання на абстрактні рівні IRQL, а ті модулі ОС, які користуються цими абстрактними рівнями, змін не зажадають.



3. Апаратно-залежний код повинен бути надійно ізольований у декількох модулях, а не бути розподіленим по всій системі. Ізоляції підлягають усі частини ОС, які відображають специфіку як процесору, так і апаратну платформу в цілому. Низькорівневі компоненти ОС, що мають доступ до процесорнозалежних структур даних і регістрів, мають бути оформлені у вигляді компактних модулів, які можна замінити аналогічними модулями для інших процесорів. Для усунення платформної залежності, що виникає через відмінності між комп’ютерами різних виробників, побудованими на тому самому процесорі (наприклад, MIPS R4000), повинен бути введений добре локалізований програмний шар машиннозалежних функцій.

  • 3. Апаратно-залежний код повинен бути надійно ізольований у декількох модулях, а не бути розподіленим по всій системі. Ізоляції підлягають усі частини ОС, які відображають специфіку як процесору, так і апаратну платформу в цілому. Низькорівневі компоненти ОС, що мають доступ до процесорнозалежних структур даних і регістрів, мають бути оформлені у вигляді компактних модулів, які можна замінити аналогічними модулями для інших процесорів. Для усунення платформної залежності, що виникає через відмінності між комп’ютерами різних виробників, побудованими на тому самому процесорі (наприклад, MIPS R4000), повинен бути введений добре локалізований програмний шар машиннозалежних функцій.



В ідеалі шар машиннозалежних компонентів ядра повністю екранує іншу частину ОС від конкретних деталей апаратної платформи (кеш, контролери переривань введення-виведення і т. ін.), принаймні для того набору платформ, який підтримує ця ОС. У результаті відбувається підміна реальної апаратури якоюсь уніфікованою віртуальною машиною, однаковою для всіх варіантів апаратної платформи. Усі шари ОС, розміщені вище від шару машиннозалежних компонентів, можуть бути написані для керування саме цією віртуальною апаратурою. Таким чином, у розробників з’являється можливість створювати один варіант машиннонезалежної частини ОС (включаючи компоненти ядра, утиліти, системні обробні програми) для всього набору підтримуваних платформ.

  • В ідеалі шар машиннозалежних компонентів ядра повністю екранує іншу частину ОС від конкретних деталей апаратної платформи (кеш, контролери переривань введення-виведення і т. ін.), принаймні для того набору платформ, який підтримує ця ОС. У результаті відбувається підміна реальної апаратури якоюсь уніфікованою віртуальною машиною, однаковою для всіх варіантів апаратної платформи. Усі шари ОС, розміщені вище від шару машиннозалежних компонентів, можуть бути написані для керування саме цією віртуальною апаратурою. Таким чином, у розробників з’являється можливість створювати один варіант машиннонезалежної частини ОС (включаючи компоненти ядра, утиліти, системні обробні програми) для всього набору підтримуваних платформ.




База даних захищена авторським правом ©pres.in.ua 2016
звернутися до адміністрації

    Головна сторінка