OSDev

для всех
Текущее время: 26 дек 2024, 13:13

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: API ядра (v. 2)
СообщениеДобавлено: 17 июн 2009, 09:27 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
Основная сущность в ядре - объект. Объект имеет атрибуты и имя. Если установлен атрибут "публичный", объект имеет имя, и его можно подключить к своему процессу при помощи системного вызова (см. ниже). Объекты поддерживают все или часть из универсальных методов, в зависимости от типа, а так же собственные методы:
[*]Создать
[*]Передать права
[*]Забрать права
[*]Ожидать события (специфичного для объекта или уничтожения)
[*]Подписаться на событие
[*]Уничтожить
[*]Вызвать
[*]Передать
[*]Получить атрибуты
[*]Установить атрибуты

Передача и отбирание прав доступно только владельцу объекта. Общее право для всех типов объектов - владелец, его нельзя отобрать. Остальные права - специфичные для типа объекта.

При уничтожении объекта удаляется хендл объекта, принадложащий текущему процессу, и уменьшается число ссылок. Когда число ссылок достигает 0, уничтожаются сам объект и все объекты, владельцем которых является уничтоженный объект.

Метод передачи возвращает идентификатор для указанного объекта и процесса, который можно передать процессу.

Объекты бывают следующих типов:
[*]Процесс. Представляет собой контейнер для других объектов. Метод "Вызвать" не доступен.
[*]Поток. Вызов потока начинает выполнение процесса в контексте владельца.
[*]Регион памяти. Поддерживает специальные методы: подключить, отключить, установить имя и флаг разделения. Метод "Вызвать" не доступен.
[*]Регион ввода-вывода. Доступен на платформах, на которых есть порты. Поддерживает методы подключить и отключить. Подключение является эксклюзивным.
[*]Ящик сообщений. Владелец ящика может подписать его на события других объектов, но нельзя подписать ящик на события ящиков. Поддерживает право "можно вызвать", которое присваивается всем процессам, подключающим публичный ящик.

Помимо методов существует вызов перечисления, который возвращает в виде региона памяти информацию о объектах с указанными атрибутами - тип, владелец и т.п., и вызов подключения публичного объекта по имени с правами по умолчанию, специфичными для типа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: API ядра
СообщениеДобавлено: 17 июн 2009, 10:51 

Зарегистрирован: 02 май 2007, 14:25
Сообщения: 126
Кстати, в своё время я задумался, что такой системный вызов, как gift, будет очень полезен. Суть его: процесс дарит другому (фактически, разделяет) shared-регион, созданный уже после запуска обоих процессов.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB