- Управление процессами: запуск, остановка, изменение приоритетов, синхронизация;
- Управление памятью: выделение, освобождение, изменение параметров доступа и т.д.;
- Управление I/O: работа с файлами и с виртуальными устройствами.
- Порождённый процесс наследует все ресурсы родителя;
- Порождённый процесс должен заново запрашивать ресурсы у ОС.
- Вызов подпрограммы;
- Программами прерывания – способ вызова системы программ.
- На уровне ОС;
- На уровне системы программирования;
- На уровне внешних библиотек.
- Эффективность выполнения ф.API: скорость, ресурсы;
- Широта предоставляемых возможностей;
- Зависимость программы от архитектуры вычислительной системы.
- API реализована на уровне ОС.
Объектный код включается в ядро ОС, система программирования предоставляет доступ к функциям. Программа обращается к ОС, которая напрямую работает с «железом» – наибольшая эффективность.Недостаток – отсутствие переносимости программ (по исходному коду) и совместимости. WinAPI не соответствует стандарту POSIX.
- На уровне системы программирования.
С помощью библиотек в системе программирования. Эффективность ниже, чем при первом способе. Программа обращается к библиотеке СП, которая обращается затем к ОС.Достоинство – переносимость программ (совместимость).Недостаток. API предоставляет малую функциональность (ограниченный набор функций).
- Реализация с помощью внешних библиотек.
Библиотеки, процедуры и функции предоставляемые сторонними разработчиками в виде динамических библиотек. Если библиотека обращается напрямую к ОС, то её эффективность сравнима с библиотеками СП. Библиотеки могут поддерживать стандарт POSIX. Эффективность сравнима со 2-ым способом.
http://www.business-process.ru/interface/begin_design_interface.html
Интерфейс прикладного программирования (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. Менеджер системных служб находит адреса исполняющих программ (т.е. программ, непосредственно манипулирующих системными службами через программный интерфейс, предоставляемый менеджером системных служб) из специальной таблицы.