Семейства API на примере OC QNX
Общее множество вызовов API реализуемое операционной системой (ОС) реального времени QNX, естественным образом разделяется на три независимых подгруппы:
• Native QNX API - это самодостаточный набор вызовов, развиваемый со времен ранних версий QNX является естественным базисом этой системы, отображающим «микроядерность» ее архитектуры, но по соображениям возможной совместимости и переносимости он является также и исключительной принадлежностью этой ОС.
• POSIX (BSD(Berkeley Software Distribution)) API - это уровень API, регламентируемый постоянно расширяющейся системой стандартов группы POSIX, которым должны следовать все ОС, претендующие на принадлежность к семейству UNIX.
• System V API (POSIX) - это та часть API, которая заимствует модели, принятые в UNIX-ax, относящихся к ветви развития System V, а не к ветви BSD.
Native QNX API
Именно этот слой является базовым слоем, реализующим функциональность самой системы QNX. Два последующих слоя в значительной мере являются лишь «обертками», которые ретранслируются в вызовы native QNX API после выполнения реструктуризации или перегруппировки аргументов вызова в соответствии с синтаксисом, требуемым этим вызовом.
Совершенно естественно, что прикладное программное приложение может быть полностью прописано в этом API (как, впрочем, и в каждом другом из описываемых ниже), но это не лучший выбор по двум причинам: во-первых, из соображений переносимости, а во-вторых, этот слой является самым «мобильным» - разработчики могут изменить его отдельные вызовы при последующем развитии системы. Примером вызова этого слоя является, в частности, ThreadCreate(), применяемый для создания нового потока. Тем не менее нужно сразу отметить, что многие возможности и модели (например, реакция на сигналы в потоках, тонкое управление поведением мьютексов и другие моменты) не могут быть реализованы в рамках POSIX-модели и выражаются только в native API QNX.
POSIX (BSD) API
Эта часть API наиболее полно соответствует API ОС UNIX, относящихся к ветви BSD (BSD, FreeBSD, NetBSD и другие). Эквивалентом названного выше для native API ThreadCreate() здесь будет выступать pthread_create().Как раз все, что будет выражено в этом API далее по тексту, может быть перенесено на все UNIX-подобные операционные системы.
Содержимое стандартов POSIX:
· 1003.1а (OS Definition) - определяет базовые интерфейсы ОС;
· 1003.1b (Realtime Extensions) - описывает расширения реального времени, такие как модель сигналов реального времени, диспетчеризация по приоритетам, таймеры, синхронный и асинхронный ввод-вывод, IPC-механизмы (разделяемая память, сообщения);
· 1003.1с (Threads) - определяет функции поддержки потоков, такие как управление потоками, атрибуты потоков, примитивы синхронизации (мьютексы, условные переменные, барьеры и др., но не семафоры), диспетчеризация.
System V API
Этот набор API является базовым для второй ветви UNIX - System V (AT&T Unix System V). Как и оба предыдущих, этот набор API самодостаточен для реализации практически всех возможностей ОС, но использует для этого совершенно другие модели, например сетевую абстракцию TLI(Transport Level Interface) вместо сокетов BSD. Для области рассматриваемых нами механизмов - потоков, процессов, синхронизирующих примитивов и др. - в POSIX API и System V API почти всегда существуют функциональные аналоги, отличающиеся при этом как синтаксически, так и семантически. Например, в POSIX API семафор представлен типом sem_t и основными операциями с ним sem_wait() и sem_post (), а в System V API семафор описывается структурой ядра sem, а операции (и wait, и post) осуществляются вызовом semop(). Кроме того, операции производятся не над единичными семафорами, а над наборами (массивами) семафоров (в наборе может быть и один семафор). Как отсюда видно, логика использования принципиально единообразных примитивов существенно отличается.
Оболочка операционной системы - интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.
Графический интерфейс пользователя (Graphical user interface, GUI) -разновидность пользовательского интерфейса, в котором элементы интерфейса (меню, кнопки, значки, списки и т. п.), представленные пользователю на дисплее, исполнены в виде графических изображений.
ГИП(GUI) –система средств для взаимодействия пользователя с компьютером, основанная на представлении всех доступных пользователю системных объектов и функций в виде графических компонентов экрана.
Интерфейс командной строки (Command line interface, CLI) - разновидность интерфейса между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд).
Виртуальная машина (Virtual Machine, VM) - программный элемент, который функционирует так же, как и пользовательские приложения поверх базовой ОС.
Применение:
- Обеспечение параллельного выполнения множества операций.
- Имитация функциональных возможностей ПО и аппаратных средств, физически недостающих системе.
Схема работы VM
Список литературы:
1.Гордеев, Молчанов. СПО.
2.Таненбаум. Разработка ОС.
3.Эр. Лав. Linux Система ПО.
4.Дейтел, Дейтел.
5.QNX Unix. Анатомия параллелизма.
6.Пратт Зелковиу.
1.
Дата добавления: 2017-01-29; просмотров: 893;