Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

 

Сервісні функції

Набор сервісних функцій, доступних драйверу, зазвичай є підмножиною стандартної бібліотеки тієї мови високого рівня, на якому зазвичай пишуться драйвери. У більшості сучасних ОС це С. Прі виборі цієї підмножини використовується простий критерій: віддаляються або замінюються на більш менш обмежені всі функції, які так чи інакше містять в собі системні виклики. Так, функції memcpy або sprintf цілком можна залишити malloc доведеться замінити на еквівалент (у ядрі Linux ця функція називається kmaiioc), а fwrite драйверу навряд чи знадобиться, особливо якщо врахувати, що робота багатьох драйверів починається до того, як буде змонтована хоч одна файлова система.
Важливу роль серед сервісних функцій займають операції, що часто виконуються однією командою, але такий, яку компілятори ЯВУ в звичайних умовах не генерують. Це, перш за все, операції звернення до регістрів введення-виводу в машинах з окремим адресним простором введення-виводу, а також команди дозволу і заборони переривань. На З такі операції реалізуються у вигляді макровизначень, що містять асемблерну вставку.
Правила кодування драйверів в багато ОС вимагають, щоб навіть на машинах з єдиним адресним простором звернення до регістрів пристроїв відбувалися за допомогою макросів. Такий код може бути легке портнро-ван на процесор з окремим адресним простором. У наш час, коли одні і ті ж пристрої і одні і ті ж периферійні шини підключаються до різних процесорів, портірованіє драйверів між різними процесорами здійснюється вельми часто.
При портірованії драйвера розробник повинен також брати до уваги відмінності в порядку байтів пристрою і поточного процесора. Для приведення цього параметра у відповідність зазвичай надаються функції або макроси перестановки байтів як в одному слові, так і в блоках значного розміру.

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017