Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Апаратна залежність і переносимість ОС
Багато операційних систем успішно працюють на різних апаратних платформах без істотних змін у своєму складі. Багато в чому це пояснюється тим, що, незважаючи на відмінності в деталях, засоби апаратної підтримки ОС більшості комп'ютерів придбали сьогодні багато типових рис, а саме ці засоби в першу чергу впливають на роботу компонентів операційної системи. В результаті в ОС можна виділити досить компактний шар машинно-залежних компонентів ядра і зробити інші шари ОС загальними для різних апаратних платформ.
Машинно-залежні компоненти ОС
Одна і та ж операційна система не може без яких-небудь змін встановлюватися на комп'ютерах, що відрізняються типом процесора або/і способом організації усієї апаратури. У модулях ядра ОС не можуть не відбитися такі особливості апаратної платформи, як кількість типів переривань і формат таблиці посилань на процедури обробки переривань, склад регістрів загального призначення і системних регістрів, стан яких треба зберігати в контексті процесу, особливості підключення зовнішніх пристроїв і багато інших.
Проте досвід розробки операційних систем показує: ядро можна спроектувати таким чином, що тільки частина модулів будуть машинно-залежними, а інші не залежатимуть від особливостей апаратної платформи. У добре структурованому ядрі машинно-залежні модулі локалізовані і утворюють програмний шар, що природно примикає до шару апаратури, як це і показано на мал. 3.8. Така локалізація машинно-залежних модулів істотно спрощує перенесення операційної системи на іншу апаратну платформу.
Об'єм машинно-залежних компонентів ОС залежить від того, наскільки великі відмінності в апаратних платформах, для яких розробляється ОС. Наприклад, ОС, побудована на 32-бітових адресах, для перенесення на машину з 16-бітовими адресами має бути практично переписана наново. Одно з найбільш очевидних відмінностей — неспівпадання системи команд процесорів — долається досить просто. Операційна система програмується на мові високого рівня, а потім відповідним компілятором виробляється код для конкретного типу процесора. Проте у багатьох випадках відмінності в організації апаратури комп'ютера лежать набагато глибше і здолати їх таким чином не вдається. Наприклад, однопроцесорний і двопроцесорний комп'ютери вимагають застосування в ОС абсолютно різних алгоритмів розподілу процесорного часу. Аналогічна відсутність апаратної підтримки віртуальної пам'яті призводить до принципової відмінності в реалізації підсистеми управління пам'яттю. У таких випадках не обійтися без внесення в код операційної системи специфіки апаратної платформи, для якої ця ОС призначається.
Для зменшення кількості машинно-залежних модулів виробники операційних систем зазвичай обмежують універсальність машинно-незалежних модулів. Це означає, що їх незалежність носить умовний характер і поширюється тільки на декілька типів процесорів і створених на основі цих процесорів апаратних платформ. По цьому шляху пішли, наприклад, розробники ОС Windows NT, обмеживши кількість типів процесорів для своєї системи чотирма і поставляючи різні варіанти кодів ядра для однопроцесорних і багатопроцесорних комп'ютерів.
Особливе місце серед модулів ядра займають низькорівневі драйвери зовнішніх пристроїв. З одного боку ці драйвери, як і високорівневі драйвери, входять до складу менеджера введення-виводу, тобто належать шару ядра, що займає досить високе місце в ієрархії шарів. З іншого боку, низькорівневі драйвери відбивають усі особливості керованих зовнішніх пристроїв, тому їх можна віднести і до шару машинно-залежних модулів. Така двоїстість низькорівневих драйверів ще раз підтверджує схемну моделі ядра із строгою ієрархією шарів.
Для комп'ютерів на основі процесорів Intel x86/Pentium розробка екрануючого машинно-залежного шару ОС дещо спрощується за рахунок вбудованої в постійну пам'ять комп'ютера базової системи введення-виводу — BIOS. BIOS містить драйвери для усіх пристроїв, що входять у базову конфігурацію комп'ютера: жорстких і гнучких дисків, клавіатури, дисплея і т. д. Ці драйвери виконують дуже примітивні операції з керованими пристроями, наприклад читання групи секторів даних з певної доріжки диска, але за рахунок цих операцій екрануються відмінності апаратних платформ персональних комп'ютерів і серверів на процесорах Intel різних виробників. Розробники операційної системи можуть користуватися шаром драйверів BIOS як частиною машинно-залежного шару ОС, а можуть і замінити усе або частина драйверів BIOS компонентами ОС.
Переносимість операційної системи
Якщо код операційної системи може бути порівняльний легко перенесений з процесора одного типу на процесор іншого типу і з апаратної платформи одного типу на апаратну платформу іншого типу, то таку ОС називають переносимою (portable), або мобільною.
Хоча ОС часто описуються або як переносимі, або як непереносні, мобільність — цей не бінарний стан, а поняття міри. Питання не в тому, чи може бути система перенесена, а в тому, наскільки легко можна це зробити. Для того, щоб забезпечити властивість мобільності ОС, розробники повинні наслідувати наступні правила.
Велика частина коду має бути написана на мові, транслятори якої є на усіх машинах, куди передбачається переносити систему. Такими мовами є стандартизованные мови високого рівня. Більшість переносимих ОС написана на мові З, який має багато особливостей, корисних для розробки кодів операційної системи, і компілятори якого широко доступні. Програма, написана на асемблері, є переносимою тільки в тих випадках, коли перенесення операційної системи планується на комп'ютер, що має ту ж систему команд. У інших випадках асемблер використовується тільки для тих непереносних частин системи, які повинні безпосередньо взаємодіяти з апаратурою (наприклад, обробник переривань), або для частин, які вимагають максимальної швидкості (наприклад, цілочисельна арифметика підвищеної точності).
Об'єм машинно-залежних частин коду, які безпосередньо взаємодіють з апаратними засобами, має бути по можливості мінімізований. Так, наприклад, слід всіляко уникати прямого маніпулювання регістрами і іншими апаратними засобами процесора. Для зменшення апаратної залежності розробники ОС повинні також унеможливити використання за умовчанням стандартних конфігурацій апаратури або їх характеристик. Апаратно-залежні параметри можна «заховати» в програмно- дані абстрактного типу, що задаються. Для здійснення усіх необхідних дій з управління апаратурою, представленою цими параметрами, має бути написаний набір апаратно-залежних функцій. Кожного разу, коли якому-небудь модулю ОС вимагається виконати деяку дію, пов'язану з апаратурою, він маніпулює абстрактними даними, використовуючи відповідну функцію з наявного набору. Коли ОС переноситься, то змінюються тільки ці дані і функції, які ними маніпулюють. Наприклад, в ОС Windows NT диспетчер переривань перетворить апаратні рівні переривань конкретного типу процесора в стандартний набір рівнів переривань IRQL, з якими працюють інші модулі операційної системи. Тому при перенесенні Windows NT на нову платформу треба переписати, зокрема, ті коди диспетчера переривань, які займаються відображенням рівнів переривання на абстрактні рівні IRQL, а ті модулі ОС, які користуються цими абстрактними рівнями, змін не зажадають.
Апаратно-залежний код має бути надійно ізольований в декількох модулях, а не бути розподілений по усій системі. Ізоляції підлягають усі частини ОС, які відбивають специфіку як процесора, так і апаратної платформи в цілому. Низькорівневі компоненти ОС, що мають доступ до процесорного, - залежним структурам даних і регістрам, мають бути оформлені у вигляді компактних модулів, які можуть бути замінені аналогічними модулями для інших процесорів. Для зняття платформеної залежності, що виникає із-за відмінностей між комп'ютерами різних виробників, побудованими на одному і тому ж процесорі (наприклад, MIPS R4000), має бути введений добре локалізований програмний шар машинно-залежних функцій.
У ідеалі шар машинно-залежних компонентів ядра повністю екранує іншу частину ОС від конкретних деталей апаратної платформи (кеші, контроллери переривань введення-виводу і т. п.), принаймні для того набору платформ, який підтримує ця ОС. В результаті відбувається підміна реальної апаратури деякою уніфікованою віртуальною машиною, однаковою для усіх варіантів апаратної платформи. Усі шари операційної системи, які лежать вище за шар машинно-залежних компонентів, можуть бути написані для управління саме цією віртуальною апаратурою. Таким чином, у розробників з'являється можливість створювати один варіант машинно-незалежної частини ОС (включаючи компоненти ядра, утиліти, системні оброблювальні програми) для усього набору підтримуваних платформ.
Контрольні запитання
Література
Електроний ресурс: http://vv 303.narod.ru/files/inst/olifer/chapter3/default.htm
Дата публикования: 2014-11-19; Прочитано: 1630 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!