40 lines
1.6 KiB
ReStructuredText
40 lines
1.6 KiB
ReStructuredText
.. _overview:
|
|
|
|
Overview
|
|
########
|
|
|
|
The |codename| is composed of a microkernel operating on top of a nanokernel.
|
|
Device drivers must operate on top of either a microkernel or a nanokernel
|
|
and must be developed accordingly. Applications can be developed to operate
|
|
on top of a nanokernel, a microkernel or both.
|
|
|
|
The |codename| provides three scheduling or execution contexts. The
|
|
:abbr:`ISRs (Interrupt Service Routines)` are the execution context closest
|
|
to the hardware. They are followed by the fibers execution context. Finally,
|
|
the tasks comprise the third and last execution context.
|
|
|
|
ISRs can interrupt fibers and tasks. By default, it is possible to nest ISRs
|
|
but that option can be disabled. The main purpose of ISRs is to mark fibers
|
|
and tasks as runnable.
|
|
|
|
Fibers are typically used for device drivers and performance critical work.
|
|
They are cooperatively scheduled and each fiber possesses a priority. Fibers
|
|
run until they yield or call a blocking
|
|
:abbr:`API (Application Program Interface)`. Once a fiber is marked as not
|
|
runnable, the next highest priority fiber runs.
|
|
|
|
Tasks are used, primarily for data processing. A task is scheduled only when
|
|
no fibers are marked as runnable. Tasks can be preempted and the highest
|
|
priority task runs first. Tasks of equal priority use round-robin time-
|
|
slicing between them.
|
|
|
|
The following sections describe the general functionality and basic
|
|
characteristics of the nanokernel and the microkernel as well as the
|
|
principles behind the development of drivers and applications.
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
overview_nanokernel
|
|
overview_microkernel
|
|
overview_apps |