API, POSIX і бібліотека С

Зазвичай прикладні програми не розробляються з безпосереднім використанням системних викликів, при цьому використовуються програмні інтерфейси додатків (Application Programing Interface, API) Це є важливим, так як в такому випадку немає необхідності в кореляції між інтерфейсами, які використовують програми, і інтерфейсами, які надає ядро Різні API визначають набір програмних інтерфейсів, які використовуються додатками Ці інтерфейси можуть бути реалізовані за допомогою одного системного виклику, декількох системних викликів, а також взагалі без використання системних викликів Насправді, може існувати один і той же програмний інтерфейс додатків для різних операційних систем, у той час як реалізація цих API може для різних ОС істотно відрізнятися

Один з найбільш популярних програмних інтерфейсів додатків в світі Unix-подібних систем базується на стандарті POSIX Технічно стандарт POSIX включає в себе набір стандартів IЕЕЕ2, метою якого є забезпечення стерпного стандарту операційної системи, приблизно базується на ОС Unix ОС Linux відповідає стандарту POSIX

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

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

1Длі апаратної платформи x86 існує близько 250 системних викликів (для кожної апаратної платформи дозволяється визначати свої унікальні системні виклики) Хоча не для всіх операційних систем опубліковані дійсні системні виклики, але за оцінками для деяких операційних систем таких викликів більше тисячі

2 IEEE, eye-trple-E (Інститу т інженерів в по електротехнік е і радіоелектроніці, Institut e of Electrical and Electronics Engineers) є безприбуткової професійною асоціацією, діючої в багатьох технічних областях і відповідає за багато важливих стандарти, такі як стандарт POSIX Більше информаци і доступно за адресою: http://wwnieeeor g

виклику в print f ()

-> prirtf () в бібліотеці С -> write () в бібліотеці З Системний виклик write ()

Додаток> Бібліотека С&gt   Ядро

Рис 51 Взаємини між додатком, бібліотекою С і ядром на прикладі виклику функції printf ()

Додатково бібліотека функцій С також представляє велику частину APIстандарта POSIX

З точки зору прикладного програміста, системні виклики не істотні: все, з чим працює програміст, – це інтерфейс API З іншого боку, ядро ​​має відношення тільки до системних викликів: все, що роблять бібліотечні виклики і призначені для користувача програми з системними викликами, – це для ядра не суттєво Проте з точки зору ядра таки важливо памятати про потенційні можливості використання системного виклику для того, щоб по можливості підтримувати універсальність і гнучкість системних викликів

Загальний девіз для інтерфейсів ОС Unix – це надавати механізм, а не стратегію. Іншими словами, системні виклики існують для того, щоб забезпечити певну функцію в найбільш абстрактному сенсі А те, яким чином використовується ця функція, ядра не стосується

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*