OSDev

для всех
Текущее время: 05 май 2024, 10:22

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 08 авг 2010, 16:38 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Посмортел на список системных вызовов своего микроядра. Не слишком ли их много?
Код:
SYSCALL_GET_VERSION = 0
SYSCALL_VIRTUAL_ALLOC_PAGES = 1
SYSCALL_VIRTUAL_GET_PAGES = 2
SYSCALL_VIRTUAL_FREE_PAGES = 3
SYSCALL_HEAP_ALLOC_PAGES = 4
SYSCALL_HEAP_GET_PAGES = 5
SYSCALL_HEAP_FREE_PAGES = 6
SYSCALL_GET_PROCESS_HEAP = 7
SYSCALL_GET_CURRENT_PROCESS = 8
SYSCALL_GET_CURRENT_THREAD = 9
SYSCALL_GET_SYSTEM_PROCESS = 10
SYSCALL_GET_SYSTEM_THREAD = 11
SYSCALL_CREATE_PROCESS_FROM_RAW_BUFFER = 12
SYSCALL_CREATE_THREAD = 13
SYSCALL_TERMINATE_PROCESS = 14
SYSCALL_TERMINATE_THREAD = 15
SYSCALL_EXIT_PROCESS = 16
SYSCALL_EXIT_THREAD = 17
SYSCALL_GET_PROCESS_COUNT = 18
SYSCALL_GET_THREAD_COUNT = 19
SYSCALL_GET_PROCESS_THREAD_COUNT = 20
SYSCALL_GET_PHIS_MEMORY_SIZE = 21
SYSCALL_GET_FREE_PHIS_MEMORY_SIZE = 22
SYSCALL_GET_BOOT_DISK_ID = 23
SYSCALL_GET_THREAD_PROCESS = 24
SYSCALL_GET_NEXT_KERNEL_OBJECT = 25
SYSCALL_GET_PROCESS_NAME = 26
SYSCALL_RENAME_CURRENT_PROCESS = 27
SYSCALL_READ_PHIS_MEMORY_QWORD = 28
SYSCALL_HEAP_ALLOC_MEMORY = 29
SYSCALL_HEAP_FREE_MEMORY = 30
SYSCALL_SET_ENV_VARIABLE = 31
SYSCALL_GET_ENV_VARIABLE = 32
SYSCALL_UNSET_ENV_VARIABLE = 33
SYSCALL_CREATE_SHARED_MEMORY_REGION = 34
SYSCALL_LOCK_SHARED_MEMORY_REGION = 35
SYSCALL_UNLOCK_SHARED_MEMORY_REGION = 36
SYSCALL_CREATE_MESSAGE_QUEUE = 37
SYSCALL_FREE_MESSAGE_QUEUE = 38
SYSCALL_DESTROY_MESSAGE_QEUUE = 39
SYSCALL_SEND_MESSAGE = 40
SYSCALL_GET_MESSAGE = 41
SYSCALL_REGISTER_IRQ_HANDLER = 42
SYSCALL_UNREGISTER_IRQ_HANDLER = 43
SYSCALL_GET_IO_PORTS = 44
SYSCALL_FREE_IO_PORTS = 45
SYSCALL_SWITCH_TO_NEXT_THREAD = 46

Тут ещё не хватает вызовов для получения информации о списке переменных окружения и обработчиков IRQ, а также возможности обработки исключений (типа деления на ноль и пр.)
HEAP_ALLOC_MEMORY/HEAP_FREE_MEMORY - это работа с кучей из которой можно забирать блоки произвольной длины (на самом деле кратные 32 байтам - в функциях производится округление в большую сторону).
HEAP_ALLOC_PAGES/HEAP_FREE_PAGES - работа с кучей из которой можно забирать целые страницы.
VIRTUAL_ALLOC_PAGES - монтирование свободных физических страниц не к адресу из кучи, а к конкретному адресу.
всё что про память и с GET, а не ALLOC - это монтирование конкретного физического адреса. Нужно для драйверов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 авг 2010, 18:46 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Микроядро -- понятие ну очень расплывчатое, а посему и объём функций, им реализуемых, тоже очень и очень расплывчат. Так что много или нет -- решать Вам, основываясь на Вашем видении системы в целом и его микроядра в частности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 сен 2011, 09:09 

Зарегистрирован: 24 сен 2011, 08:15
Сообщения: 1
Откуда: St. Petersburg
По мне, так слишком много. Но это по мне, привыкшему к L4... У L4 всего 11 системных вызовов.
Код:
KernelInterface() -- позволяет получить адрес таблицы KIP
ExchangeRegisters() -- заменяет или возвращает состояние регистров треда
ThreadControl() -- служит для добавления или удаления тредов в адресное пространство.
SystemClock() -- получает системное время.
Schedule() -- используется шедулерами для задания значения кванта времени, приоритета и других параметров
ThreadSwitch() -- вызывающий тред освобождает процессор и дает возможность передачи управления другому треду
Unmap() -- выполняет операцию unmap для указанных flexpages (виртуальных страниц памяти)
SpaceControl() -- управляет адресными пространствами
IPC() -- выполняет операцию приема/передачи сообщения.
ProcessorControl() -- управляет параметрами процессора(-ов). Может менять внешнюю и внутреннюю частоту процессора и его вольтаж
MemoryControl() -- управляет атрибутами страниц памяти

Всё остальное(включая шедулер(ы) и менеджер(ы) памяти), по идеологии честных микроядерных систем, вынесено в юзерспейс.

Вобще, рекомендую почитать вот эту статью... Микроядро L4 как основа ядра ОС.

_________________
[osFree dev. support team] http://www.osfree.org


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

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


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

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


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

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