4. WrmOS: ядро

← 3. WrmOS: загрузчик

5. WrmOS: корневой пэйджер Sigma0 →

Содержание
4.1 Описание
4.2 Параметры конфигурации
4.3 Системные вызовы

4.1 Описание [наверх]


Основным документом на микроядро L4 является L4 Kernel Reference Manual Version X.2. Он описывает API и ABI ядра и принципы семейcтва операционных систем L4.

Ядро — это основная часть WrmOS, которая выполняется на целевом процессоре в привилегированном режиме. Ядром должны осуществляться следующие действия:

  • завершение инициализации системы
    • инициализация MMU
    • инициализация UART для ядра
    • инициализация контроллера прерываний
  • создать приложение корневой пэйджер Sigma0 и запустить его
  • во время работы системы обрабатывать исключительные ситуации, прерывания и системные вызовы

4.2 Параметры конфигурации [наверх]


Ядро имеет следующие конфигурационные параметры:

Имя Файл Описание
usr_krn_dbg cfg/prj/<project-name>.prj Отладочный флаг ядра. Может иметь значение 0 или 1. Флаг позволяет использовать отладочную конфигурацию проекта с assert'ами, дополнительной отладочной выдачей и т.д. (для значения 1) или использовать релизную конфигурацию (для значения 0).
usr_krn_log Флаг включения логирования в ядре. Может быть 0 или 1. Флаг включает внутреннее логирование в ядре, это позволяет видеть активность и собятия ядра.
krn_vaddr cfg/plt/<platform-name>.plt Стартовый адрес виртуального адресного пространства ядра.
krn_tick_usec Тик ядра в микросекундах. Периодический таймер ядра будет генерировать прерывание каждые krn_tick_usec микросекунд.
krn_uart_paddr Физический адрес UART для ядра.
krn_uart_sz Размер UART для ядра в байтах.
krn_uart_bitrate Битовая скорость UART ядра.
krn_uart_irq Номер прерывания UART ядра.
krn_intc_paddr Физический адрес контроллера прерываний.
krn_intc_sz Размер контроллера прерываний в байтах.
krn_timer_paddr Физический адрес таймера ядра.
krn_timer_sz Размер таймера ядра в байтах.
krn_timer_irq Номер прерывания таймеря ядра.

4.3 Системные вызовы [наверх]


Полное описание системных вызовов операционных систем L4 можно найти в документе L4 Kernel Reference Manual Version X.2. Краткое описание системных вызовов находится ниже:

System call Privileged L4 API Description
Kernel Interface Any applications l4_kip() Получить адрес KIP (Kernel Interface Page).
Exchange Registers Any applications l4_exchange_registers() Прочитать или модифицировать: stack pointer, instruction pointer, thread flags, pager, user defined handle.
Thread Control Root-pager, Root-task l4_thread_control() Корневой пэйджер (root-pager) Sigma0 или корневое приложение (root-task) Alpha могут создать или удалить трэд.
System Clock Any applications l4_system_clock() Получить текущее значение системного времени (время работы системы с момента старта в микросекундах).
Thread Switch Any applications l4_thread_switch() Освободить текущий процессор.
Schedule Any applications l4_schedule() Изменить параметры трэда: приоритет, величину кванта времени и другие параметры планирования трэдов.
IPC Any applications l4_ipc()
l4_send()
l4_receive()
Межпроцессное взаимодействие (IPC) — основная операция для межпроцессного взаимодействия и синхронизации.
Unmap Any applications l4_unmap() Отмапить память от вызывающего адресного пространства.
Space Control Root-pager, Root-task l4_space_control() Корневой пэйджер (root-pager) Sigma0 или корневое приложение (root-task) Alpha могут конфигурировать адресное пространство.
Processor Control Root-pager, Root-task --- Управление внутренней частотой, внешней частотой или электрическим напряжением для системного процессора.
Memory Control Root-pager, Root-task l4_memory_control() Установить атрибуты страницы памяти. Например, кэшируемая или нет.
Kernel Debugger Any applications l4_kdb() Вызвать отладчик ядра.

← 3. WrmOS: загрузчик

5. WrmOS: корневой пэйджер Sigma0 →