SlideShare a Scribd company logo
1 of 99
Download to read offline
Microkernel-based Systems
Summer School 2013:
Genode OS Framework
Norman Feske
<norman.feske@genode-labs.com>
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 2
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 3
Myths
Microkernel-based Systems Summer School 2013: Genode OS Framework 4
Problem: Complexity
Today’s commodity OSes Exceedingly complex trusted computing
base (TCB)
TCB of an application on Linux:
Kernel + loaded kernel modules
Daemons
X Server + window manager
Desktop environment
All running processes of the user
→ User credentials are exposed to millions of lines of code
Microkernel-based Systems Summer School 2013: Genode OS Framework 5
Problem: Complexity (II)
Implications:
High likelihood for bugs (need for frequent security updates)
Huge attack surface for directed attacks
Zero-day exploits
Microkernel-based Systems Summer School 2013: Genode OS Framework 6
Problem: Global names
Many examples on traditional systems
I UIDs, PIDs
I network interface names
I port numbers
I device nodes
I ...
Leak information
Name is a potential attack vector (ambient authority)
Microkernel-based Systems Summer School 2013: Genode OS Framework 7
Problem: Resource management
Pretension of unlimited resources
Lack of accounting
→ Largely indeterministic behavior
→ Need for complex heuristics, schedulers
Microkernel-based Systems Summer School 2013: Genode OS Framework 8
Key technologies
Microkernels
Decomponentization, kernelization
Capability-based security
Virtualization
Microkernel-based Systems Summer School 2013: Genode OS Framework 9
Tricky questions
How to...
...build a system without global names?
...trade between parties that do not know each other?
...reclaim kidnapped goods from an alien? (without violence)
...deal with distributed access-control policies?
...transparently monitor communication?
...recycle a subsystem without knowing its internal structure?
Microkernel-based Systems Summer School 2013: Genode OS Framework 10
Even more tricky questions
How to...
...avoid performance hazards through many indirections?
...translate architectural ideas into a real implementation?
Microkernel-based Systems Summer School 2013: Genode OS Framework 11
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 12
A bit of history
Research timeline at TU Dresden
Microkernel-based Systems Summer School 2013: Genode OS Framework 13
A new generation of kernels on the horizon
Microkernel-based Systems Summer School 2013: Genode OS Framework 14
Unique feature: Cross-kernel portability
When started, no suitable microkernel was available
→ Prototyped on Linux and L4/Fiasco
→ Later ported to other kernels
Microkernel-based Systems Summer School 2013: Genode OS Framework 15
Today: Rich OS construction kit
Support of a variety of kernels
OKL4, L4/Fiasco, L4ka::Pistachio, NOVA, Fiasco.OC, Linux, Codezero
Preservation of special kernel features
I OKLinux on OKL4,
I L4Linux on Fiasco.OC,
I Vancouver on NOVA,
I Real-time priorities on L4/Fiasco
Uniform API → kernel-independent components
Many ready-to-use device drivers, protocol stacks, and
3rd-party libraries
Microkernel-based Systems Summer School 2013: Genode OS Framework 16
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 17
Object capabilities
Delegation of rights
Each process lives in a virtual environment
A process that possesses a right (capability) can
I Use it (invoke)
I Delegate it to acquainted processes
Microkernel-based Systems Summer School 2013: Genode OS Framework 18
Recursive system structure
Microkernel-based Systems Summer School 2013: Genode OS Framework 19
Service announcement
Microkernel-based Systems Summer School 2013: Genode OS Framework 20
Session creation
Microkernel-based Systems Summer School 2013: Genode OS Framework 21
Session creation
Microkernel-based Systems Summer School 2013: Genode OS Framework 22
This works recursively
→ Application-specific TCB
Microkernel-based Systems Summer School 2013: Genode OS Framework 23
Combined with virtualization
Microkernel-based Systems Summer School 2013: Genode OS Framework 24
Resource management
Explicit assignment of physical resources to processes
Microkernel-based Systems Summer School 2013: Genode OS Framework 25
Resource management (II)
Resources can be attached to sessions
Microkernel-based Systems Summer School 2013: Genode OS Framework 26
Resource management (III)
Intermediation of resource requests
Microkernel-based Systems Summer School 2013: Genode OS Framework 27
Resource management (IV)
Virtualization of resources
Microkernel-based Systems Summer School 2013: Genode OS Framework 28
Resource management (V)
Server-side heap partitioning
Microkernel-based Systems Summer School 2013: Genode OS Framework 29
Parent interface
void exit(exit_value)
void announce(service_name, root_capability)
session_capability session(service_name, session_args)
void upgrade(to_session_capability, quantum)
void close(session_capability)
Microkernel-based Systems Summer School 2013: Genode OS Framework 30
Root interface
session_capability session(session_args)
void upgrade(session_capability, upgrade_args)
void close(session_capability)
Microkernel-based Systems Summer School 2013: Genode OS Framework 31
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 32
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Microkernel-based Systems Summer School 2013: Genode OS Framework 33
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Debug output
amount write(string)
Microkernel-based Systems Summer School 2013: Genode OS Framework 34
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Physical memory
ram_dataspace_capability alloc(size, cached)
void free(ram_dataspace_capability)
void ref_account(ram_session_capability)
void transfer_quota(ram_session_capability, amount)
amount quota()
amount used()
Microkernel-based Systems Summer School 2013: Genode OS Framework 35
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Object identities
capability alloc(entrypoint_capability)
void free(capability)
Microkernel-based Systems Summer School 2013: Genode OS Framework 36
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Threads
thread_capability create_thread(name)
void kill_thread(thread_capability)
void start(thread_capability, ip, sp)
Microkernel-based Systems Summer School 2013: Genode OS Framework 37
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Memory-mapped I/O
Session arguments base, size, write-combined
io_mem_dataspace_capability dataspace()
Microkernel-based Systems Summer School 2013: Genode OS Framework 38
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Port-based I/O
Session arguments base, size
value inb(address)
value inw(address)
value inl(address)
void outb(address, value)
void outw(address, value)
void outl(address, value)
Microkernel-based Systems Summer School 2013: Genode OS Framework 39
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Device interrupts
Session argument irq number
void wait_for_irq()
Microkernel-based Systems Summer School 2013: Genode OS Framework 40
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Protection domain
void bind_thread(thread_capability)
void assign_parent(parent_capability)
Microkernel-based Systems Summer School 2013: Genode OS Framework 41
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Access to boot modules
Session argument filename
rom_dataspace_capability dataspace()
Microkernel-based Systems Summer School 2013: Genode OS Framework 42
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Address-space management
local_addr attach(dataspace_capability, size, offset,
use_local_addr, local_addr,
executable)
void detach(local_addr)
void add_client(thread_capability thread)
/* managed dataspaces */
dataspace_capability dataspace()
void fault_handler(signal_context_capability)
state state()
Microkernel-based Systems Summer School 2013: Genode OS Framework 43
Core services
LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL
Asynchronous signal delivery
signal_context_capability alloc_context(imprint)
void free_context(signal_context_capability)
void submit(signal_context_capability, count)
signal wait_for_signal()
Microkernel-based Systems Summer School 2013: Genode OS Framework 44
Default demo scenario
Microkernel-based Systems Summer School 2013: Genode OS Framework 45
Configuration
<config>
<parent-provides>
<service name="ROM"/> <service name="RAM"/> <service name="IRQ"/>
<service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/>
<service name="PD"/> <service name="RM"/> <service name="CPU"/>
<service name="LOG"/>
</parent-provides>
<default-route> <any-service> <parent/> <any-child/> </any-service> </default-route>
<start name="pci_drv">
<resource name="RAM" quantum="1M"/>
<provides><service name="PCI"/></provides> </start>
<start name="vesa_drv">
<resource name="RAM" quantum="1M"/>
<provides><service name="Framebuffer"/></provides> </start>
<start name="ps2_drv">
<resource name="RAM" quantum="1M"/>
<provides><service name="Input"/></provides> </start>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides> </start>
<start name="nitpicker">
<resource name="RAM" quantum="1M"/>
<provides><service name="Nitpicker"/></provides> </start>
<start name="launchpad">
<resource name="RAM" quantum="32M"/> </start>
</config>
Microkernel-based Systems Summer School 2013: Genode OS Framework 46
Screenshot
Microkernel-based Systems Summer School 2013: Genode OS Framework 47
Sessions
Microkernel-based Systems Summer School 2013: Genode OS Framework 48
Virtualized framebuffer
Microkernel-based Systems Summer School 2013: Genode OS Framework 49
Sessions including virtualized framebuffer
Microkernel-based Systems Summer School 2013: Genode OS Framework 50
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 51
Remote procedure calls (RPC)
Microkernel-based Systems Summer School 2013: Genode OS Framework 52
Remote procedure calls: Classes
Microkernel-based Systems Summer School 2013: Genode OS Framework 53
Remote procedure calls: New RPC object
Microkernel-based Systems Summer School 2013: Genode OS Framework 54
Remote procedure calls: Invocation
Microkernel-based Systems Summer School 2013: Genode OS Framework 55
Shared memory
Microkernel-based Systems Summer School 2013: Genode OS Framework 56
Asynchronous notifications
Microkernel-based Systems Summer School 2013: Genode OS Framework 57
Asynchronous notifications (II)
Microkernel-based Systems Summer School 2013: Genode OS Framework 58
Mechanisms combined
RPC + shared memory
→ Synchronous bulk data (transaction)
Asynchronous notifications + shared memory
→ Asynchronous bulk data (streaming)
Microkernel-based Systems Summer School 2013: Genode OS Framework 59
Synchronous bulk data transfer
Microkernel-based Systems Summer School 2013: Genode OS Framework 60
Asynchronous bulk data transfer
Microkernel-based Systems Summer School 2013: Genode OS Framework 61
Packet stream in detail
Packet descriptor
Allocated by source
Enqueued in submit / acknowledgement queue
Describes portion of bulk buffer (offset, size)
Carries domain-specific control information
Conditions
Submit queue is full
Submit queue is empty
Acknowledgement queue is full
Acknowledgement queue is empty
→ wakeup via signals
Microkernel-based Systems Summer School 2013: Genode OS Framework 62
Packet stream example
Microkernel-based Systems Summer School 2013: Genode OS Framework 63
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 64
Classification
Kernel enables base platform
Device driver translates device interface to API
Protocol stack translates API to API
Application is leaf node in process tree
Runtime environment has one or more children
Resource multiplexer has multiple clients
combinations are possible
Microkernel-based Systems Summer School 2013: Genode OS Framework 65
Kernel
Microkernel-based Systems Summer School 2013: Genode OS Framework 66
Device driver
Translates device interface to session interface
Uses core’s IO MEM, IO PORT, IRQ services
Single client
Contains no policy
Enforces policy (device-access arbitration)
Microkernel-based Systems Summer School 2013: Genode OS Framework 67
Device driver (2)
Critical because of DMA
MMU protects physical memory from driver code
Driver code accesses device via MMIO
Device has access to whole physical memory (DMA)
→ Device driver can access whole physical memory
IOMMUs can help ...but are no golden bullet
Microkernel-based Systems Summer School 2013: Genode OS Framework 68
Device driver (3)
Even with no IOMMU, isolating drivers has benefits
Taming classes of non-DMA-related bugs
I Memory leaks
I Synchronization problems, dead-locks
I Flawed driver logic, wrong state machines
I Device initialization
Minimizing attack surface from the outside
Microkernel-based Systems Summer School 2013: Genode OS Framework 69
Protocol stack
Translates API to another (or the same) API
Does not enforce policy
Single client
May be co-located with device driver
Microkernel-based Systems Summer School 2013: Genode OS Framework 70
Protocol stack (2)
Libraries
Library Translation
Qt4 Qt4 API → various Genode sessions
lwIP socket API → NIC session
Components translating sessions
Component Translation
TCP terminal Terminal session → NIC session
iso9660 ROM session → Block session
ffat fs File-system session → Block session
Microkernel-based Systems Summer School 2013: Genode OS Framework 71
Protocol stack (3)
Components that filter sessions
Microkernel-based Systems Summer School 2013: Genode OS Framework 72
Protocol stack (4)
Operate on session interfaces, not physical resources
→ May be instantiated any number of times
→ Critical for availablility
→ Not neccessarily critical for integrity and confidentiality
→ Information leakage constrained to used interfaces
complex code should go in here
Microkernel-based Systems Summer School 2013: Genode OS Framework 73
Application
Leaf node in process tree
Uses services
Implements application logic
Provides no service
Microkernel-based Systems Summer School 2013: Genode OS Framework 74
Runtime environment
Hosts other processes as children
Defines and imposes policy!
Examples
Init
Virtual machine monitor
Debugger
Python interpreter
Microkernel-based Systems Summer School 2013: Genode OS Framework 75
Resource multiplexer
Multiplexes session interface
Multiple clients → Potential multi-level component
Free from policy
Enforce policy dictated by parent
Prone to cross-client information leakage
Prone to resource-exhaustion-based DoS
Microkernel-based Systems Summer School 2013: Genode OS Framework 76
Resource multiplexer (2)
→ Often as critical as the kernel
→ Must be as low complex as possible
→ Must work on client-provided resources
→ Must employ heap partitioning
only a few resource multiplexers needed
Microkernel-based Systems Summer School 2013: Genode OS Framework 77
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 78
Case study: Kernelizing the GUI server
Persistent security problems of GUIs
Impersonation
(Trojan horses, phishing, man in the middle)
Spyware
(input loggers, arcane observers)
Robustness/availability risks
(resource-exhaustion-based denial of service
GUI belongs to TCB → low complexity is important!
Microkernel-based Systems Summer School 2013: Genode OS Framework 79
Starting point: DOpE as secure GUI
Microkernel-based Systems Summer School 2013: Genode OS Framework 80
DOpE as secure GUI - Drawbacks
Prone to resource exhaustion by malicious clients
Provides custom look and feel*
I Stands in the way when using legacy software
I May be enhanced by theme support
Complexity of 12,000 LOC
Microkernel-based Systems Summer School 2013: Genode OS Framework 81
Straight-forward attempt: Shrinking DOpE
Revisiting the implementation
Keeping only essential functionality
→ 7,000 LOC
We loose:
Majority of widgets (grid, scale, scrollbar, etc.)
Flexible command interface
Coolness, fancyness, convenience
Real-time support
7,000 LOC are too much for such a crippled GUI!
Microkernel-based Systems Summer School 2013: Genode OS Framework 82
Bottom-up approach
What do we really need in the GUI server?
Widgets? → No
Font support? → No
Window decoration? → No
Textual command interface? → No
Look and feel, gradients, translucency? → No
Hardware abstractions (e. g., color-space conversion)? → No
Windows displaying pixel buffers? → YES
Distribution of input events? → YES
Secure labeling? → YES
Microkernel-based Systems Summer School 2013: Genode OS Framework 83
Buffers and views
Microkernel-based Systems Summer School 2013: Genode OS Framework 84
User interaction
Input-event handling
Only one receiver of each input event
Focused view defines input routing
Routing controlled by the user only
Microkernel-based Systems Summer School 2013: Genode OS Framework 85
Client-side window handling
Report motion events to focused view while a button is pressed
→ Client-side window policies (move, resize, stacking)
→ Key for achieving low server-side complexity
Emergency break
→ Special key regains control over misbehaving applications
Microkernel-based Systems Summer School 2013: Genode OS Framework 86
Trusted path
It is not sufficient to label windows!
A Trojan Horse could present an image of a secure window
Not the secure window must be marked, but all others!
Revoke some degree of freedom from the clients
Dedicated screen area, reserved for the trusted GUI
Revoking the ability to use the whole color space
→ X-Ray mode, activated by special key (x-ray key)
Microkernel-based Systems Summer School 2013: Genode OS Framework 87
Trusted path (2)
Microkernel-based Systems Summer School 2013: Genode OS Framework 88
Nitpicker results
Source-code complexity
GUI server Lines of code
X.org > 80,000
Trusted X 30,000
DOpE 12,000
EWS 4,500
Nitpicker < 2,000
Low performance overhead, no additional copy
Low-complexity clients are possible (Scout: 4,000 LOC)
Microkernel-based Systems Summer School 2013: Genode OS Framework 89
Nitpicker results (2)
Support for legacy software
Protection against spyware
Helps to uncover Trojan horses
Low source-code complexity
→ Poster child of a resource multiplexer
Microkernel-based Systems Summer School 2013: Genode OS Framework 90
Outline
1. Why do we need another operating system?
2. Genode entering the picture
3. Architectural Principles
4. Core - the root of the process tree
5. Inter-process communication
6. Classification of components
7. Kernelization example
8. Components overview
Microkernel-based Systems Summer School 2013: Genode OS Framework 91
Interfaces
LOG Unidirectional debug output
Terminal Bi-directional input and output
synchronous bulk
Timer Facility to block the client
Input Obtain user input
synchronous bulk
Framebuffer Display pixel buffer
synchronous bulk
PCI Represents PCI bus, find and obtain PCI devices
Microkernel-based Systems Summer School 2013: Genode OS Framework 92
Interfaces (2)
ROM Obtain read-only data modules
shared memory
Block Block-device access
packet stream
File system File-system access
packet stream
NIC Bi-directional transfer of network packets
2 x packet stream
Audio out Audio output
packet stream
Microkernel-based Systems Summer School 2013: Genode OS Framework 93
Device drivers
Session type Location
Timer os/src/drivers/timer
Block os/src/drivers/atapi
os/src/drivers/ahci
os/src/drivers/sd card
dde linux/src/drivers/usb drv
Input os/src/drivers/input/ps2
dde linux/src/drivers/usb drv
Framebuffer os/src/drivers/framebuffer/vesa
os/src/drivers/framebuffer/sdl
os/src/drivers/framebuffer/pl11x
os/src/drivers/framebuffer/omap4
Audio out linux drivers/src/drivers/audio out
Terminal os/src/drivers/uart
NIC dde ipxe/src/drivers/nic
dde linux/src/drivers/usb drv
PCI os/src/drivers/pci
Microkernel-based Systems Summer School 2013: Genode OS Framework 94
Resource multiplexers and protocol stacks
Session type Location
LOG os/src/server/terminal log
demo/src/server/nitlog
Framebuffer, demo/src/server/liquid framebuffer
Input os/src/server/nit fb
Nitpicker os/src/server/nitpicker
Terminal os/src/server/terminal crosslink
gems/src/server/terminal
gems/src/server/tcp terminal
Microkernel-based Systems Summer School 2013: Genode OS Framework 95
Resource multiplexers and protocol stacks (2)
Session type Location
Audio out os/src/server/mixer
NIC os/src/server/nic bridge
ROM os/src/server/rom prefetcher
os/src/server/tar rom
os/src/server/iso9660
Block os/src/server/rom loopdev
os/src/server/part blk
gems/src/server/http block
File system os/src/server/ram fs
libports/src/server/ffat fs
Microkernel-based Systems Summer School 2013: Genode OS Framework 96
Protocol-stack libraries
API Location
POSIX libports/lib/mk/libc.mk
libports/lib/mk/libc log.mk
libports/lib/mk/libc fs.mk
libports/lib/mk/libc rom.mk
libports/lib/mk/libc lwip.mk
libports/lib/mk/libc ffat.mk
libports/lib/mk/libc lock pipe.mk
libports/lib/mk/libc terminal.mk
Qt4 qt4/lib/mk/qt *
OpenGL libports/lib/mk/gallium.mk
Microkernel-based Systems Summer School 2013: Genode OS Framework 97
Runtime environments
Runtime Location
Init os/src/init
Loader os/src/server/loader
L4Linux ports-foc/src/l4linux
L4Android ports-foc/src/l4android
OKLinux ports-okl4/src/oklinux
Vancouver ports/src/vancouver
Noux ports/src/noux
GDB Monitor ports/src/app/gdb monitor
Python libports/lib/mk/x86 32/python.mk
Lua libports/lib/mk/moon.mk
Microkernel-based Systems Summer School 2013: Genode OS Framework 98
Thank you
Genode OS Framework
http://genode.org
Genode Labs GmbH
http://www.genode-labs.com
Source code at GitHub
http://github.com/genodelabs/genode
Microkernel-based Systems Summer School 2013: Genode OS Framework 99

More Related Content

What's hot (20)

Sistem Operasi _ Mendeteksi deadlock
Sistem Operasi _ Mendeteksi deadlockSistem Operasi _ Mendeteksi deadlock
Sistem Operasi _ Mendeteksi deadlock
 
Struktur sistem Terdistribusi
Struktur sistem TerdistribusiStruktur sistem Terdistribusi
Struktur sistem Terdistribusi
 
Makalah klasifikasi makhluk hidup
Makalah klasifikasi makhluk hidupMakalah klasifikasi makhluk hidup
Makalah klasifikasi makhluk hidup
 
Bab 6 fungi
Bab 6 fungiBab 6 fungi
Bab 6 fungi
 
Kelompok 5 pencemaran lingkungan
Kelompok 5 pencemaran lingkunganKelompok 5 pencemaran lingkungan
Kelompok 5 pencemaran lingkungan
 
Materi 3. Simplisia.pdf
Materi 3. Simplisia.pdfMateri 3. Simplisia.pdf
Materi 3. Simplisia.pdf
 
Toksikologi klinik 2017
Toksikologi klinik 2017Toksikologi klinik 2017
Toksikologi klinik 2017
 
Ppt fispan
Ppt fispanPpt fispan
Ppt fispan
 
Perilaku Hewan
Perilaku HewanPerilaku Hewan
Perilaku Hewan
 
Imunologi; sistem imun spesifik
Imunologi; sistem imun spesifikImunologi; sistem imun spesifik
Imunologi; sistem imun spesifik
 
Kul1. Ilmu Farmasetika
Kul1. Ilmu FarmasetikaKul1. Ilmu Farmasetika
Kul1. Ilmu Farmasetika
 
Bangsa sapindales
Bangsa sapindalesBangsa sapindales
Bangsa sapindales
 
Ppt Bakteri SMA
Ppt Bakteri SMA Ppt Bakteri SMA
Ppt Bakteri SMA
 
Buah (fructus)
Buah (fructus)Buah (fructus)
Buah (fructus)
 
Ppt Biologi Dasar Kultur jaringan
Ppt Biologi Dasar  Kultur jaringanPpt Biologi Dasar  Kultur jaringan
Ppt Biologi Dasar Kultur jaringan
 
Hubungan Cahaya dan Tanaman
Hubungan Cahaya dan TanamanHubungan Cahaya dan Tanaman
Hubungan Cahaya dan Tanaman
 
Ureter & vesica urinaria,ppt fis kel 4
Ureter & vesica urinaria,ppt fis kel 4Ureter & vesica urinaria,ppt fis kel 4
Ureter & vesica urinaria,ppt fis kel 4
 
Uji Efektivitas Pengawet
Uji Efektivitas PengawetUji Efektivitas Pengawet
Uji Efektivitas Pengawet
 
Kuliah pendahuluan bioo teknologi pertanian
Kuliah pendahuluan bioo teknologi pertanianKuliah pendahuluan bioo teknologi pertanian
Kuliah pendahuluan bioo teknologi pertanian
 
Peran bakteri dalam pengolahan limbah
Peran bakteri dalam pengolahan limbahPeran bakteri dalam pengolahan limbah
Peran bakteri dalam pengolahan limbah
 

Viewers also liked

Сетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и GenodeСетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и GenodeVasily Sartakov
 
Защита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4ReЗащита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4ReVasily Sartakov
 
RnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionRnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionVasily Sartakov
 
Особенности Национального RnD
Особенности Национального RnDОсобенности Национального RnD
Особенности Национального RnDVasily Sartakov
 
Hardware Errors and the OS
Hardware Errors and the OSHardware Errors and the OS
Hardware Errors and the OSVasily Sartakov
 
Operating Systems Meet Fault Tolerance
Operating Systems Meet Fault ToleranceOperating Systems Meet Fault Tolerance
Operating Systems Meet Fault ToleranceVasily Sartakov
 
Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011Vasily Sartakov
 

Viewers also liked (11)

Сетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и GenodeСетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и Genode
 
Intro
IntroIntro
Intro
 
Защита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4ReЗащита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4Re
 
RnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionRnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific Region
 
Особенности Национального RnD
Особенности Национального RnDОсобенности Национального RnD
Особенности Национального RnD
 
Hardware Errors and the OS
Hardware Errors and the OSHardware Errors and the OS
Hardware Errors and the OS
 
Operating Systems Meet Fault Tolerance
Operating Systems Meet Fault ToleranceOperating Systems Meet Fault Tolerance
Operating Systems Meet Fault Tolerance
 
Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011
 
Genode Architecture
Genode ArchitectureGenode Architecture
Genode Architecture
 
Memory, IPC and L4Re
Memory, IPC and L4ReMemory, IPC and L4Re
Memory, IPC and L4Re
 
System Integrity
System IntegritySystem Integrity
System Integrity
 

Similar to Genode OS Framework

Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...mfrancis
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3Diane Allen
 
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...Benoit Combemale
 
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...christopherfairbairn
 
[iOS] Multiple Background Threads
[iOS] Multiple Background Threads[iOS] Multiple Background Threads
[iOS] Multiple Background ThreadsNikmesoft Ltd
 
ZF2 Modular Architecture - Taking advantage of it
ZF2 Modular Architecture - Taking advantage of itZF2 Modular Architecture - Taking advantage of it
ZF2 Modular Architecture - Taking advantage of itSteve Maraspin
 
Agent based web service communicating different is’s and platforms
Agent based web service communicating different is’s and platformsAgent based web service communicating different is’s and platforms
Agent based web service communicating different is’s and platformsIAEME Publication
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidConAmir Zuker
 
SynapseIndia dotnet web development architecture module
SynapseIndia dotnet web development architecture moduleSynapseIndia dotnet web development architecture module
SynapseIndia dotnet web development architecture moduleSynapseindiappsdevelopment
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programmingkim.mens
 
tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notesWE-IT TUTORIALS
 
IRJET - Design Verification of Universal Memory Controller IP Core (UMC) usin...
IRJET - Design Verification of Universal Memory Controller IP Core (UMC) usin...IRJET - Design Verification of Universal Memory Controller IP Core (UMC) usin...
IRJET - Design Verification of Universal Memory Controller IP Core (UMC) usin...IRJET Journal
 
Introduction to Mithril JS
Introduction to Mithril JSIntroduction to Mithril JS
Introduction to Mithril JSMohamed Mohsin K
 
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹GangSeok Lee
 

Similar to Genode OS Framework (20)

Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
 
Genode Components
Genode ComponentsGenode Components
Genode Components
 
3DD 1e 31 Luglio Apertura
3DD 1e 31 Luglio Apertura3DD 1e 31 Luglio Apertura
3DD 1e 31 Luglio Apertura
 
Csharp dot net
Csharp dot netCsharp dot net
Csharp dot net
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3
 
Documentation
DocumentationDocumentation
Documentation
 
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
 
Rev2 HPPS Project 2007
Rev2 HPPS Project 2007Rev2 HPPS Project 2007
Rev2 HPPS Project 2007
 
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
 
.net Framework
.net Framework.net Framework
.net Framework
 
[iOS] Multiple Background Threads
[iOS] Multiple Background Threads[iOS] Multiple Background Threads
[iOS] Multiple Background Threads
 
ZF2 Modular Architecture - Taking advantage of it
ZF2 Modular Architecture - Taking advantage of itZF2 Modular Architecture - Taking advantage of it
ZF2 Modular Architecture - Taking advantage of it
 
Agent based web service communicating different is’s and platforms
Agent based web service communicating different is’s and platformsAgent based web service communicating different is’s and platforms
Agent based web service communicating different is’s and platforms
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
 
SynapseIndia dotnet web development architecture module
SynapseIndia dotnet web development architecture moduleSynapseIndia dotnet web development architecture module
SynapseIndia dotnet web development architecture module
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programming
 
tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
 
IRJET - Design Verification of Universal Memory Controller IP Core (UMC) usin...
IRJET - Design Verification of Universal Memory Controller IP Core (UMC) usin...IRJET - Design Verification of Universal Memory Controller IP Core (UMC) usin...
IRJET - Design Verification of Universal Memory Controller IP Core (UMC) usin...
 
Introduction to Mithril JS
Introduction to Mithril JSIntroduction to Mithril JS
Introduction to Mithril JS
 
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
 

More from Vasily Sartakov

Мейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памятиМейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памятиVasily Sartakov
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems HardeningVasily Sartakov
 
Introduction to Microkernels
Introduction to MicrokernelsIntroduction to Microkernels
Introduction to MicrokernelsVasily Sartakov
 
Advanced Components on Top of L4Re
Advanced Components on Top of L4ReAdvanced Components on Top of L4Re
Advanced Components on Top of L4ReVasily Sartakov
 
Применение Fiasco.OC
Применение Fiasco.OCПрименение Fiasco.OC
Применение Fiasco.OCVasily Sartakov
 
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Vasily Sartakov
 
Образование, наука, бизнес. Сегодня, завтра, послезавтра
Образование, наука, бизнес. Сегодня, завтра, послезавтраОбразование, наука, бизнес. Сегодня, завтра, послезавтра
Образование, наука, бизнес. Сегодня, завтра, послезавтраVasily Sartakov
 

More from Vasily Sartakov (11)

Мейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памятиМейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памяти
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems Hardening
 
Genode Programming
Genode ProgrammingGenode Programming
Genode Programming
 
Genode Compositions
Genode CompositionsGenode Compositions
Genode Compositions
 
Trusted Computing Base
Trusted Computing BaseTrusted Computing Base
Trusted Computing Base
 
Intro
IntroIntro
Intro
 
Introduction to Microkernels
Introduction to MicrokernelsIntroduction to Microkernels
Introduction to Microkernels
 
Advanced Components on Top of L4Re
Advanced Components on Top of L4ReAdvanced Components on Top of L4Re
Advanced Components on Top of L4Re
 
Применение Fiasco.OC
Применение Fiasco.OCПрименение Fiasco.OC
Применение Fiasco.OC
 
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
 
Образование, наука, бизнес. Сегодня, завтра, послезавтра
Образование, наука, бизнес. Сегодня, завтра, послезавтраОбразование, наука, бизнес. Сегодня, завтра, послезавтра
Образование, наука, бизнес. Сегодня, завтра, послезавтра
 

Recently uploaded

_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docxPoojaSen20
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docxPoojaSen20
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 

Recently uploaded (20)

_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docx
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docx
 
9953330565 Low Rate Call Girls In Rohini Delhi NCR
9953330565 Low Rate Call Girls In Rohini  Delhi NCR9953330565 Low Rate Call Girls In Rohini  Delhi NCR
9953330565 Low Rate Call Girls In Rohini Delhi NCR
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 

Genode OS Framework

  • 1. Microkernel-based Systems Summer School 2013: Genode OS Framework Norman Feske <norman.feske@genode-labs.com>
  • 2. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 2
  • 3. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 3
  • 4. Myths Microkernel-based Systems Summer School 2013: Genode OS Framework 4
  • 5. Problem: Complexity Today’s commodity OSes Exceedingly complex trusted computing base (TCB) TCB of an application on Linux: Kernel + loaded kernel modules Daemons X Server + window manager Desktop environment All running processes of the user → User credentials are exposed to millions of lines of code Microkernel-based Systems Summer School 2013: Genode OS Framework 5
  • 6. Problem: Complexity (II) Implications: High likelihood for bugs (need for frequent security updates) Huge attack surface for directed attacks Zero-day exploits Microkernel-based Systems Summer School 2013: Genode OS Framework 6
  • 7. Problem: Global names Many examples on traditional systems I UIDs, PIDs I network interface names I port numbers I device nodes I ... Leak information Name is a potential attack vector (ambient authority) Microkernel-based Systems Summer School 2013: Genode OS Framework 7
  • 8. Problem: Resource management Pretension of unlimited resources Lack of accounting → Largely indeterministic behavior → Need for complex heuristics, schedulers Microkernel-based Systems Summer School 2013: Genode OS Framework 8
  • 9. Key technologies Microkernels Decomponentization, kernelization Capability-based security Virtualization Microkernel-based Systems Summer School 2013: Genode OS Framework 9
  • 10. Tricky questions How to... ...build a system without global names? ...trade between parties that do not know each other? ...reclaim kidnapped goods from an alien? (without violence) ...deal with distributed access-control policies? ...transparently monitor communication? ...recycle a subsystem without knowing its internal structure? Microkernel-based Systems Summer School 2013: Genode OS Framework 10
  • 11. Even more tricky questions How to... ...avoid performance hazards through many indirections? ...translate architectural ideas into a real implementation? Microkernel-based Systems Summer School 2013: Genode OS Framework 11
  • 12. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 12
  • 13. A bit of history Research timeline at TU Dresden Microkernel-based Systems Summer School 2013: Genode OS Framework 13
  • 14. A new generation of kernels on the horizon Microkernel-based Systems Summer School 2013: Genode OS Framework 14
  • 15. Unique feature: Cross-kernel portability When started, no suitable microkernel was available → Prototyped on Linux and L4/Fiasco → Later ported to other kernels Microkernel-based Systems Summer School 2013: Genode OS Framework 15
  • 16. Today: Rich OS construction kit Support of a variety of kernels OKL4, L4/Fiasco, L4ka::Pistachio, NOVA, Fiasco.OC, Linux, Codezero Preservation of special kernel features I OKLinux on OKL4, I L4Linux on Fiasco.OC, I Vancouver on NOVA, I Real-time priorities on L4/Fiasco Uniform API → kernel-independent components Many ready-to-use device drivers, protocol stacks, and 3rd-party libraries Microkernel-based Systems Summer School 2013: Genode OS Framework 16
  • 17. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 17
  • 18. Object capabilities Delegation of rights Each process lives in a virtual environment A process that possesses a right (capability) can I Use it (invoke) I Delegate it to acquainted processes Microkernel-based Systems Summer School 2013: Genode OS Framework 18
  • 19. Recursive system structure Microkernel-based Systems Summer School 2013: Genode OS Framework 19
  • 20. Service announcement Microkernel-based Systems Summer School 2013: Genode OS Framework 20
  • 21. Session creation Microkernel-based Systems Summer School 2013: Genode OS Framework 21
  • 22. Session creation Microkernel-based Systems Summer School 2013: Genode OS Framework 22
  • 23. This works recursively → Application-specific TCB Microkernel-based Systems Summer School 2013: Genode OS Framework 23
  • 24. Combined with virtualization Microkernel-based Systems Summer School 2013: Genode OS Framework 24
  • 25. Resource management Explicit assignment of physical resources to processes Microkernel-based Systems Summer School 2013: Genode OS Framework 25
  • 26. Resource management (II) Resources can be attached to sessions Microkernel-based Systems Summer School 2013: Genode OS Framework 26
  • 27. Resource management (III) Intermediation of resource requests Microkernel-based Systems Summer School 2013: Genode OS Framework 27
  • 28. Resource management (IV) Virtualization of resources Microkernel-based Systems Summer School 2013: Genode OS Framework 28
  • 29. Resource management (V) Server-side heap partitioning Microkernel-based Systems Summer School 2013: Genode OS Framework 29
  • 30. Parent interface void exit(exit_value) void announce(service_name, root_capability) session_capability session(service_name, session_args) void upgrade(to_session_capability, quantum) void close(session_capability) Microkernel-based Systems Summer School 2013: Genode OS Framework 30
  • 31. Root interface session_capability session(session_args) void upgrade(session_capability, upgrade_args) void close(session_capability) Microkernel-based Systems Summer School 2013: Genode OS Framework 31
  • 32. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 32
  • 33. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Microkernel-based Systems Summer School 2013: Genode OS Framework 33
  • 34. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Debug output amount write(string) Microkernel-based Systems Summer School 2013: Genode OS Framework 34
  • 35. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Physical memory ram_dataspace_capability alloc(size, cached) void free(ram_dataspace_capability) void ref_account(ram_session_capability) void transfer_quota(ram_session_capability, amount) amount quota() amount used() Microkernel-based Systems Summer School 2013: Genode OS Framework 35
  • 36. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Object identities capability alloc(entrypoint_capability) void free(capability) Microkernel-based Systems Summer School 2013: Genode OS Framework 36
  • 37. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Threads thread_capability create_thread(name) void kill_thread(thread_capability) void start(thread_capability, ip, sp) Microkernel-based Systems Summer School 2013: Genode OS Framework 37
  • 38. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Memory-mapped I/O Session arguments base, size, write-combined io_mem_dataspace_capability dataspace() Microkernel-based Systems Summer School 2013: Genode OS Framework 38
  • 39. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Port-based I/O Session arguments base, size value inb(address) value inw(address) value inl(address) void outb(address, value) void outw(address, value) void outl(address, value) Microkernel-based Systems Summer School 2013: Genode OS Framework 39
  • 40. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Device interrupts Session argument irq number void wait_for_irq() Microkernel-based Systems Summer School 2013: Genode OS Framework 40
  • 41. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Protection domain void bind_thread(thread_capability) void assign_parent(parent_capability) Microkernel-based Systems Summer School 2013: Genode OS Framework 41
  • 42. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Access to boot modules Session argument filename rom_dataspace_capability dataspace() Microkernel-based Systems Summer School 2013: Genode OS Framework 42
  • 43. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Address-space management local_addr attach(dataspace_capability, size, offset, use_local_addr, local_addr, executable) void detach(local_addr) void add_client(thread_capability thread) /* managed dataspaces */ dataspace_capability dataspace() void fault_handler(signal_context_capability) state state() Microkernel-based Systems Summer School 2013: Genode OS Framework 43
  • 44. Core services LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL Asynchronous signal delivery signal_context_capability alloc_context(imprint) void free_context(signal_context_capability) void submit(signal_context_capability, count) signal wait_for_signal() Microkernel-based Systems Summer School 2013: Genode OS Framework 44
  • 45. Default demo scenario Microkernel-based Systems Summer School 2013: Genode OS Framework 45
  • 46. Configuration <config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="pci_drv"> <resource name="RAM" quantum="1M"/> <provides><service name="PCI"/></provides> </start> <start name="vesa_drv"> <resource name="RAM" quantum="1M"/> <provides><service name="Framebuffer"/></provides> </start> <start name="ps2_drv"> <resource name="RAM" quantum="1M"/> <provides><service name="Input"/></provides> </start> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="nitpicker"> <resource name="RAM" quantum="1M"/> <provides><service name="Nitpicker"/></provides> </start> <start name="launchpad"> <resource name="RAM" quantum="32M"/> </start> </config> Microkernel-based Systems Summer School 2013: Genode OS Framework 46
  • 47. Screenshot Microkernel-based Systems Summer School 2013: Genode OS Framework 47
  • 48. Sessions Microkernel-based Systems Summer School 2013: Genode OS Framework 48
  • 49. Virtualized framebuffer Microkernel-based Systems Summer School 2013: Genode OS Framework 49
  • 50. Sessions including virtualized framebuffer Microkernel-based Systems Summer School 2013: Genode OS Framework 50
  • 51. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 51
  • 52. Remote procedure calls (RPC) Microkernel-based Systems Summer School 2013: Genode OS Framework 52
  • 53. Remote procedure calls: Classes Microkernel-based Systems Summer School 2013: Genode OS Framework 53
  • 54. Remote procedure calls: New RPC object Microkernel-based Systems Summer School 2013: Genode OS Framework 54
  • 55. Remote procedure calls: Invocation Microkernel-based Systems Summer School 2013: Genode OS Framework 55
  • 56. Shared memory Microkernel-based Systems Summer School 2013: Genode OS Framework 56
  • 57. Asynchronous notifications Microkernel-based Systems Summer School 2013: Genode OS Framework 57
  • 58. Asynchronous notifications (II) Microkernel-based Systems Summer School 2013: Genode OS Framework 58
  • 59. Mechanisms combined RPC + shared memory → Synchronous bulk data (transaction) Asynchronous notifications + shared memory → Asynchronous bulk data (streaming) Microkernel-based Systems Summer School 2013: Genode OS Framework 59
  • 60. Synchronous bulk data transfer Microkernel-based Systems Summer School 2013: Genode OS Framework 60
  • 61. Asynchronous bulk data transfer Microkernel-based Systems Summer School 2013: Genode OS Framework 61
  • 62. Packet stream in detail Packet descriptor Allocated by source Enqueued in submit / acknowledgement queue Describes portion of bulk buffer (offset, size) Carries domain-specific control information Conditions Submit queue is full Submit queue is empty Acknowledgement queue is full Acknowledgement queue is empty → wakeup via signals Microkernel-based Systems Summer School 2013: Genode OS Framework 62
  • 63. Packet stream example Microkernel-based Systems Summer School 2013: Genode OS Framework 63
  • 64. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 64
  • 65. Classification Kernel enables base platform Device driver translates device interface to API Protocol stack translates API to API Application is leaf node in process tree Runtime environment has one or more children Resource multiplexer has multiple clients combinations are possible Microkernel-based Systems Summer School 2013: Genode OS Framework 65
  • 66. Kernel Microkernel-based Systems Summer School 2013: Genode OS Framework 66
  • 67. Device driver Translates device interface to session interface Uses core’s IO MEM, IO PORT, IRQ services Single client Contains no policy Enforces policy (device-access arbitration) Microkernel-based Systems Summer School 2013: Genode OS Framework 67
  • 68. Device driver (2) Critical because of DMA MMU protects physical memory from driver code Driver code accesses device via MMIO Device has access to whole physical memory (DMA) → Device driver can access whole physical memory IOMMUs can help ...but are no golden bullet Microkernel-based Systems Summer School 2013: Genode OS Framework 68
  • 69. Device driver (3) Even with no IOMMU, isolating drivers has benefits Taming classes of non-DMA-related bugs I Memory leaks I Synchronization problems, dead-locks I Flawed driver logic, wrong state machines I Device initialization Minimizing attack surface from the outside Microkernel-based Systems Summer School 2013: Genode OS Framework 69
  • 70. Protocol stack Translates API to another (or the same) API Does not enforce policy Single client May be co-located with device driver Microkernel-based Systems Summer School 2013: Genode OS Framework 70
  • 71. Protocol stack (2) Libraries Library Translation Qt4 Qt4 API → various Genode sessions lwIP socket API → NIC session Components translating sessions Component Translation TCP terminal Terminal session → NIC session iso9660 ROM session → Block session ffat fs File-system session → Block session Microkernel-based Systems Summer School 2013: Genode OS Framework 71
  • 72. Protocol stack (3) Components that filter sessions Microkernel-based Systems Summer School 2013: Genode OS Framework 72
  • 73. Protocol stack (4) Operate on session interfaces, not physical resources → May be instantiated any number of times → Critical for availablility → Not neccessarily critical for integrity and confidentiality → Information leakage constrained to used interfaces complex code should go in here Microkernel-based Systems Summer School 2013: Genode OS Framework 73
  • 74. Application Leaf node in process tree Uses services Implements application logic Provides no service Microkernel-based Systems Summer School 2013: Genode OS Framework 74
  • 75. Runtime environment Hosts other processes as children Defines and imposes policy! Examples Init Virtual machine monitor Debugger Python interpreter Microkernel-based Systems Summer School 2013: Genode OS Framework 75
  • 76. Resource multiplexer Multiplexes session interface Multiple clients → Potential multi-level component Free from policy Enforce policy dictated by parent Prone to cross-client information leakage Prone to resource-exhaustion-based DoS Microkernel-based Systems Summer School 2013: Genode OS Framework 76
  • 77. Resource multiplexer (2) → Often as critical as the kernel → Must be as low complex as possible → Must work on client-provided resources → Must employ heap partitioning only a few resource multiplexers needed Microkernel-based Systems Summer School 2013: Genode OS Framework 77
  • 78. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 78
  • 79. Case study: Kernelizing the GUI server Persistent security problems of GUIs Impersonation (Trojan horses, phishing, man in the middle) Spyware (input loggers, arcane observers) Robustness/availability risks (resource-exhaustion-based denial of service GUI belongs to TCB → low complexity is important! Microkernel-based Systems Summer School 2013: Genode OS Framework 79
  • 80. Starting point: DOpE as secure GUI Microkernel-based Systems Summer School 2013: Genode OS Framework 80
  • 81. DOpE as secure GUI - Drawbacks Prone to resource exhaustion by malicious clients Provides custom look and feel* I Stands in the way when using legacy software I May be enhanced by theme support Complexity of 12,000 LOC Microkernel-based Systems Summer School 2013: Genode OS Framework 81
  • 82. Straight-forward attempt: Shrinking DOpE Revisiting the implementation Keeping only essential functionality → 7,000 LOC We loose: Majority of widgets (grid, scale, scrollbar, etc.) Flexible command interface Coolness, fancyness, convenience Real-time support 7,000 LOC are too much for such a crippled GUI! Microkernel-based Systems Summer School 2013: Genode OS Framework 82
  • 83. Bottom-up approach What do we really need in the GUI server? Widgets? → No Font support? → No Window decoration? → No Textual command interface? → No Look and feel, gradients, translucency? → No Hardware abstractions (e. g., color-space conversion)? → No Windows displaying pixel buffers? → YES Distribution of input events? → YES Secure labeling? → YES Microkernel-based Systems Summer School 2013: Genode OS Framework 83
  • 84. Buffers and views Microkernel-based Systems Summer School 2013: Genode OS Framework 84
  • 85. User interaction Input-event handling Only one receiver of each input event Focused view defines input routing Routing controlled by the user only Microkernel-based Systems Summer School 2013: Genode OS Framework 85
  • 86. Client-side window handling Report motion events to focused view while a button is pressed → Client-side window policies (move, resize, stacking) → Key for achieving low server-side complexity Emergency break → Special key regains control over misbehaving applications Microkernel-based Systems Summer School 2013: Genode OS Framework 86
  • 87. Trusted path It is not sufficient to label windows! A Trojan Horse could present an image of a secure window Not the secure window must be marked, but all others! Revoke some degree of freedom from the clients Dedicated screen area, reserved for the trusted GUI Revoking the ability to use the whole color space → X-Ray mode, activated by special key (x-ray key) Microkernel-based Systems Summer School 2013: Genode OS Framework 87
  • 88. Trusted path (2) Microkernel-based Systems Summer School 2013: Genode OS Framework 88
  • 89. Nitpicker results Source-code complexity GUI server Lines of code X.org > 80,000 Trusted X 30,000 DOpE 12,000 EWS 4,500 Nitpicker < 2,000 Low performance overhead, no additional copy Low-complexity clients are possible (Scout: 4,000 LOC) Microkernel-based Systems Summer School 2013: Genode OS Framework 89
  • 90. Nitpicker results (2) Support for legacy software Protection against spyware Helps to uncover Trojan horses Low source-code complexity → Poster child of a resource multiplexer Microkernel-based Systems Summer School 2013: Genode OS Framework 90
  • 91. Outline 1. Why do we need another operating system? 2. Genode entering the picture 3. Architectural Principles 4. Core - the root of the process tree 5. Inter-process communication 6. Classification of components 7. Kernelization example 8. Components overview Microkernel-based Systems Summer School 2013: Genode OS Framework 91
  • 92. Interfaces LOG Unidirectional debug output Terminal Bi-directional input and output synchronous bulk Timer Facility to block the client Input Obtain user input synchronous bulk Framebuffer Display pixel buffer synchronous bulk PCI Represents PCI bus, find and obtain PCI devices Microkernel-based Systems Summer School 2013: Genode OS Framework 92
  • 93. Interfaces (2) ROM Obtain read-only data modules shared memory Block Block-device access packet stream File system File-system access packet stream NIC Bi-directional transfer of network packets 2 x packet stream Audio out Audio output packet stream Microkernel-based Systems Summer School 2013: Genode OS Framework 93
  • 94. Device drivers Session type Location Timer os/src/drivers/timer Block os/src/drivers/atapi os/src/drivers/ahci os/src/drivers/sd card dde linux/src/drivers/usb drv Input os/src/drivers/input/ps2 dde linux/src/drivers/usb drv Framebuffer os/src/drivers/framebuffer/vesa os/src/drivers/framebuffer/sdl os/src/drivers/framebuffer/pl11x os/src/drivers/framebuffer/omap4 Audio out linux drivers/src/drivers/audio out Terminal os/src/drivers/uart NIC dde ipxe/src/drivers/nic dde linux/src/drivers/usb drv PCI os/src/drivers/pci Microkernel-based Systems Summer School 2013: Genode OS Framework 94
  • 95. Resource multiplexers and protocol stacks Session type Location LOG os/src/server/terminal log demo/src/server/nitlog Framebuffer, demo/src/server/liquid framebuffer Input os/src/server/nit fb Nitpicker os/src/server/nitpicker Terminal os/src/server/terminal crosslink gems/src/server/terminal gems/src/server/tcp terminal Microkernel-based Systems Summer School 2013: Genode OS Framework 95
  • 96. Resource multiplexers and protocol stacks (2) Session type Location Audio out os/src/server/mixer NIC os/src/server/nic bridge ROM os/src/server/rom prefetcher os/src/server/tar rom os/src/server/iso9660 Block os/src/server/rom loopdev os/src/server/part blk gems/src/server/http block File system os/src/server/ram fs libports/src/server/ffat fs Microkernel-based Systems Summer School 2013: Genode OS Framework 96
  • 97. Protocol-stack libraries API Location POSIX libports/lib/mk/libc.mk libports/lib/mk/libc log.mk libports/lib/mk/libc fs.mk libports/lib/mk/libc rom.mk libports/lib/mk/libc lwip.mk libports/lib/mk/libc ffat.mk libports/lib/mk/libc lock pipe.mk libports/lib/mk/libc terminal.mk Qt4 qt4/lib/mk/qt * OpenGL libports/lib/mk/gallium.mk Microkernel-based Systems Summer School 2013: Genode OS Framework 97
  • 98. Runtime environments Runtime Location Init os/src/init Loader os/src/server/loader L4Linux ports-foc/src/l4linux L4Android ports-foc/src/l4android OKLinux ports-okl4/src/oklinux Vancouver ports/src/vancouver Noux ports/src/noux GDB Monitor ports/src/app/gdb monitor Python libports/lib/mk/x86 32/python.mk Lua libports/lib/mk/moon.mk Microkernel-based Systems Summer School 2013: Genode OS Framework 98
  • 99. Thank you Genode OS Framework http://genode.org Genode Labs GmbH http://www.genode-labs.com Source code at GitHub http://github.com/genodelabs/genode Microkernel-based Systems Summer School 2013: Genode OS Framework 99