2.1.3 Интерфейс прикладного программирования

Интерфейс прикладного программирования (API - Application Programming Interface) это интерфейс, позволяющий различным программным компонентам взаимодействовать друг с другом.
API может быть применён несколькими способами:
- Интегрирован в среду программирования, например C++ или Java API
- В специальном назначении, например Google Maps API или Java API XML для веб-услуг. С помощю Google Maps API можно применить услугу указания местоположения на карте через интерфейс, предоставляемый Google..
- API операционной системы это интерфейс, посредством которого приложения получают доступ к услугам ОС. Примером является Windows API, в котором для каждой службы ОС есть доступная приложениям процедура.
Различные службы, доступные приложениям через Windows API:
- Базовые службы (Base Services), к которым относятся управление процессами и памятью, функции ввода/вывода и безопасности.
- Службы компонентов (Component Services) - для взаимодействия приложений
- Службы пользовательского интерфейса (User Interface Services) - для взаимодействия с различными меню и окнами
- Службы графики и мультимедиа (Multimedia and Graphics Services)
- Обмен сообщениями и совместная работа (Messaging and Collaboration)
- Сетевые службы (Networking)
- Веб-службы (Web Services)
Рисунок 2‑3. Интерфейс программирования приложений расположен между ядром и приложениями. (Источник: Learning Materials for Information Technology Professionals (EUCIP-Mat))
Современные ОС реализуют обработку прерываний (Interrupt), исключений (Exception, Trap) и поддержку системных вызовов (System call). Исключения - это программные прерывания, генерируемые при ошибках или обращениях пользовательских приложений к услугам ОС. Для обращения пользовательских приложения к API используются системные вызовы. В целях безопасности, приложения не могут непосредственно совершать системные вызовы, а должны использовать механизм прерываний, при котором генерируется программное прерывание процессору, что в свою очередь приводит к запуску обработчика прерываний в режиме ядра.
Команда, с помощью которой вызывается системная служба, зависит от процессора. Например, в современных процессорах Intel это команда systenter. При её вызове происходит переход в режим ядра и запуск Менеджера системных служб, адрес которого указывается в регистре MSR (Machine Specific Register). В регистре EAX указывается номер системной службы, а через регистр EDX передаются аргументы вызова. Переход обратно в пользовательский режим происходит с помощью команд sysexit или iretd. Менеджер системных служб находит адреса исполняющих программ (т.е. программ, непосредственно манипулирующих системными службами через программный интерфейс, предоставляемый менеджером системных служб) из специальной таблицы.