Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Програмна сумісність



Апаратна залежність і переносимість ОС

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

Машинно-залежні компоненти ОС

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

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

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

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

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

Для комп'ютерів на основі процесорів Intel x86/Pentium розробка екрануючого машинно-залежного шару ОС дещо спрощується за рахунок вбудованої в постійну пам'ять комп'ютера базової системи введення-виводу — BIOS. BIOS містить драйвери для усіх пристроїв, що входять у базову конфігурацію комп'ютера: жорстких і гнучких дисків, клавіатури, дисплея і т. д. Ці драйвери виконують дуже примітивні операції з керованими пристроями, наприклад читання групи секторів даних з певної доріжки диска, але за рахунок цих операцій екрануються відмінності апаратних платформ персональних комп'ютерів і серверів на процесорах Intel різних виробників. Розробники операційної системи можуть користуватися шаром драйверів BIOS як частиною машинно-залежного шару ОС, а можуть і замінити усе або частина драйверів BIOS компонентами ОС.

Переносимість операційної системи

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

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

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

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

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

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

Контрольні запитання

  1. Що таке апаратна незалежність ОС?
  2. Як реалізовується переносимість ОС на разні платформи?
  3. Що таке машинний залежні компоненти?

Література

Електроний ресурс: http://vv 303.narod.ru/files/inst/olifer/chapter3/default.htm





Дата публикования: 2014-11-19; Прочитано: 1630 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...