MINIX 3 API

Введение

MINIX 3 очень модульная система. Она состоит из компонентов, некоторые из которых могут предоставлять сервисы другим компонентом, некоторые из которых используют сервисы, предоставляемые другими компонентами, а некоторые из этих компонентов делают и первое и второе. Компонент, предоставляющий сервисы, делает это через API (Application Programming Interface), которое являет собой набор параметризованных методов, которые могут быть вызваны другими компонентами. Такой вызов производится, когда пользователь сервиса выполняет библиотечную функцию, которая создаёт короткое сообщение фиксированного размера, содержающее номер метода и параметры, которые пересылаются провайдеру сервиса. После того как провайдер сервиса закончит свою работу, он посылает ответное сообщение. Вызовы обычно являются блокирующими, но в некоторых случаях возможны неблокирующие вызовы. Чтобы написать компонент, надо понимать API, которое компонент будет предоставлять и те API, которые он будет использовать. Целью этого документа является обеспечение создателей компонентов ссылками на различные API.

Ядро

Ядро предоставляет API, которое используется драйверами и серверами для получения сервисов ядра. Вызовы ядра можно грубо разделить на следующие категории: Ввод/Вывод, копирование, управление временем, ... Не каждый вызов ядра может быть доступен для каждого компонента системы, битовая карта в каждой записи таблицы процессов показывает какие вызовы ядра может делать процесс. Битовая карта компонента создаётся вручную после того как закончен драйвер, на основании того, какие вызовы ему потребуются. Таким образом, отлавливаются случайные вызовы ядра, которые драйвер не должен совершать. Полное описание вызовов ядра доступно в справочном руководству по ядру, доступному в следующих форматах:

Драйверы устройств

У драйверов есть 3 API: с ядром, с файловым сервером, и с сервером реинкарнации. API ядра позволяет драйверам получать сервисы ядра, такие как возможность выполнять Ввод/Вывод и перемещать данные между адресными пространствами. API файлового сервера определяют сервисы, которые драйверы предоставляют для файлового сервера, такие как чтение и запись блоков данных. И, наконец, API сервера реинкарнации описывает способ, при помощи которого он (сервер реинкарнации) определяет находится ли драйвер в рабочем состоянии и как драйверы должны отвечать чтобы не быть "убитыми". Эти 3 вида API описаны в следующих документах:

API

Провайдер сервиса

Пользователь сервиса

Вызовы ядра

Ядро

Драйверы устройств

Вызовы драйвера

Драйвер

Файловый сервер

Реинкарнация

Драйвер

Сервер реинкарнации

Серверы

Серверы вызываются прогрммами пользователя чтобы получить сервисы POSIX. В свою очередь, они делают вызоы ядра и вызовы драйверов для выполнения необходимой работы. Ниже приведены соответсвующие API для серверов.

API

Провайдер сервиса

Пользователь сервиса

Вызовы ядра

Ядро

Сервер

Вызовы драйвера

Драйвер

Файловый сервер

Реинкарнация

Сервер

Сервер реинкарнации

POSIX

Сервер

Программы пользователя

Minix3Wiki: MINIX3-APIs_ru (last edited 2008-08-28 08:45:06 by Qrilka)