General System Structure
- Microkernel: Provides only a minimal set of mechanisms that are necessary to support applications.
- Runtime Environment: Aims at providing more convenient abstractions for application development.
- Applications: Run on top of the system and use services provided by the Runtime Environment.
The Fiasco.OC Microkernel
- lowest-level piece of software
- only program that runs in privileged processor mode
- does not include complex services
- services are implemented in kernel objects
- tasks hold references called capabilities (in their respective “object space”, which is a kernel-protected table)
- if a task owns a capability, it may grant other tasks the same (or fewer) rights
- capabilities are a concept that enables flexibility
Inter Process Communication (IPC)
- It is always synchronous
- The basic communication mechanism
- also used to resolve hardware exceptions, faults and for virtual memory management
Kernel Objects
- Task comprises a memory address space, an object space, and on X86 an IO-port address space
- Thread is bound to a task and executes code.
- Factory is used by applications to create, control and restrict kernel objects
- IPC gate is used to create a secure communication channel between different tasks
- IRQ objects provide access to hardware interrupts.
- Vcon Provides access to the in-kernel debugging console
- Scheduler implements scheduling policy and assignment of threads to CPUs
taken from: http://os.inf.tu-dresden.de/L4Re/doc/