SlideShare a Scribd company logo
Faculty of Computer Science Institute for System Architecture, Operating Systems Group




Introduction to Microkernel-
Based Operating Systems
Björn Döbel
Lecture Outline

• Microkernels and what we like about them

• The Fiasco.OC microkernel
      – Kernel Objects
      – Kernel Mechanisms

• OS Services on top of Fiasco.OC
      – Device Drivers
      – Virtualization




TU Dresden, 2012-07-18      Microkernels - Intro
Purpose of Operating Systems

• Manage the available resources
      – Hardware (CPU) and software (file systems)
• Provide users with an easier-to-use interface to access
  resources
      – Unix: data read/write access to sockets instead of writing
        TCP packets on your own
• Perform privileged / HW-specific operations
      – x86: ring0 vs. ring3
      – Device drivers
• Provide separation and collaboration
   – Isolate users / processes from each other
   – Allow cooperation if needed (e.g., sending
     messages between processes)


TU Dresden, 2012-07-18         Microkernels - Intro
Monolithic kernels - Linux


                   Application         Application             Application        Application
User mode

Kernel
mode
                                                   System-Call Interface


                             File Systems     Networking             Processes       Memory
                                  VFS           Sockets              Scheduling    Management
              Linux       File System Impl.    Protocols                IPC       Page allocation
              Kernel                                                              Address spaces
                                   Device Drivers                                   Swapping



                                                      Hardware Access




                                        Hardware
                                        CPU, Memory, PCI, Devices




 TU Dresden, 2012-07-18                       Microkernels - Intro
What's the problem?

• Security issues
      – All components run in privileged mode.
      – Direct access to all kernel-level data.
      – Module loading → easy living for rootkits.

• Resilience issues
      – Faulty drivers can crash the whole system.
      – 75% of today's OS kernels are drivers.

• Software-level issues
      – Complexity is hard to manage.
      – Custom OS for hardware with scarce resources?


TU Dresden, 2012-07-18      Microkernels - Intro
One vision - microkernels

• Minimal OS kernel
      – less error prone
      – small Trusted Computing Base
      – suitable for verification

• System services in user-level servers
      – flexible and extensible

• Protection between individual components
      – systems get
         • More secure – inter-component protection
         • More resilient – crashing component does not
           (necessarily...) crash the whole system

TU Dresden, 2012-07-18      Microkernels - Intro
The microkernel vision

                    Application          Application             Application            Application
User mode


                              File Systems     Networking                Memory
                                   VFS           Sockets               Management
                           File System Impl.    Protocols             Page allocation
                                                                        Swapping
                                     Device Drivers


Kernel
mode
                                                                       Address Spaces
                                  System-Call Interface
                                                                          Threads
                                                                         Scheduling
                                    Hardware Access                          IPC

                    Microkernel




                                       Hardware
                                       CPU, Memory, PCI, Devices




  TU Dresden, 2012-07-18                       Microkernels - Intro
Microkernel-Based Systems

• 1st generation: Mach
      – developed at CMU, 1985 - 1994
      – Foundation for several real systems (e.g.,
        NextOS → Mac OS X)

• 2nd generation: Minix3
      – Andrew Tanenbaum @ VU Amsterdam
      – Focus on restartability

• 2nd/3rd generation:
      – Various kernels of the L4 microkernel family



TU Dresden, 2012-07-18     Microkernels - Intro
The L4 family – a timeline
                                                                                       SeL4
                                                    N1             N2

                                                                                      OKL4v2
Univ. of New South
Wales / NICTA / Open                                               NICTA::
                                                                                             OKL4
Kernel Labs                                                  Pistachio-embedded

                           L4/x86
                                                                                               ABI Specification
      L2, L3       v2               x0            x2/v4
                                                                                               Implementation


Univ. of                                 L4Ka::Hazelnut            L4Ka::Pistachio
Karlsruhe

                          Fiasco/L4v2                                                Nova

                                                          Fiasco
                                                                                     OC                Nova

TU
Dresden                             L4.Sec          Fiasco/L4.Fiasco                      Fiasco.OC

          TU Dresden, 2012-07-18                    Microkernels - Intro
L4 concepts

• Jochen Liedtke:
  “A microkernel does no real work.”
      – Kernel only provides inevitable mechanisms.
      – Kernel does not enforce policies.

• But what is inevitable?
      – Abstractions
         • Threads
         • Address spaces (tasks)
      – Mechanisms
         • Communication
         • Resource Mapping
         • (Scheduling)

TU Dresden, 2012-07-18      Microkernels - Intro
Fiasco.OC – Objects

• OC – Object-Capability system
• System designed around objects providing
  services:
                                          call()
                         Client                           Service 1


                             call()                      call()

                                         Service 2

• Kernel provides
      – Object creation/management
      – Object interaction: Inter-Process Communication
        (IPC)

TU Dresden, 2012-07-18            Microkernels - Intro
Fiasco.OC – Calling objects

• To call an object, we need an address:
      – Telephone number
      – Postal address                         Client            Service 1
      – IP address

                         call(service1.ID)
                                                        Kernel



• Kernel returns ENOTEXISTENT if ID is wrong.
• Security issues:
      – Client could simply “guess” IDs brute-force.
      – Existence/non-existence can be used as a covert
        channel
TU Dresden, 2012-07-18        Microkernels - Intro
Fiasco.OC – Capabilities

       • Capability:
          – Reference to an object
          – Protected by the Fiasco.OC kernel
                   • Kernel knows all capability-object mappings.
                   • Managed as a per-process capability table.
                   • User processes only use indexes into this table.

           Client                                                           Service 1


                                                             Service1
                                1                          Communication
                                                             Channel
                                2
invoke(capability(3))
                                3
                                4                                  Kernel
       TU Dresden, 2012-07-18       Microkernels - Intro
Fiasco.OC: System Calls

• “Everything is an object.”

• 1 system call: invoke_object()
      – Parameters passed in UTCB
      – Types of parameters depend on type of object

• Kernel-provided objects
      – Threads / Tasks / IRQs / …


• Generic communication object: IPC gate
   – Send message from sender to receiver
   – Used to implement new objects in user-level
     applications

TU Dresden, 2012-07-18      Microkernels - Intro
Kernel vs. Operating System

• Fiasco.OC is not a full                            uClibC     libstdc++   ...
  operating system!                                 IPC Client/Server Framework
      – No device drivers                                User-level libraries
        (except UART + timer)
      – No file system / network
                                                               Ned
        stack / …




                                         L4Re
                                                      Init-style task loader
• A microkernel-based OS
  needs to add these                                           Moe
  services as user-level
                                                              Sigma0
  components
      L4 Runtime         User                      Basic Resouce Manager(s)
                         mode
      Environment
                         Kernel
      (L4Re)             mode
                                                         Fiasco.OC

TU Dresden, 2012-07-18      Microkernels - Intro
Outline for the Next Lectures

• Fiasco.OC's mapping from managed resources
  to kernel objects:
      – CPU           → threads
      – Memory        → tasks (address spaces)
      – Communication → Inter-Process
                        Communication (IPC)

• L4 Runtime Environment
      – Device Drivers
      – L4Linux



TU Dresden, 2012-07-18       Microkernels - Intro
L4 - Threads
                                                      Address Space
• Thread ::= abstraction of execution
      – Unit of CPU scheduling
      – Threads are temporally isolated

• Properties managed by the kernel:                                   Threads

      –   Instruction Pointer (EIP)                       Code
      –   Stack Pointer (ESP)
                                                          Data
      –   CPU Registers / flags
      –   (User-level) TCB

• User-level applications need to                         Stack
      –   allocate stack memory                           Stack
      –   provide memory for application binary
      –   find entry point
      –   ...
TU Dresden, 2012-07-18         Microkernels - Intro
L4 Threads and the Kernel

• Threads run in userland and enter the kernel
      – Through a system call (sysenter / INT 0x30)
      – Forced by HW interrupts or CPU exceptions

• Kernel Info Page
      – Magic memory page mapped into every task
      – Contains kernel-related information
         • Kernel version
         • Configured kernel features
         • System call entry code (allows the kernel to
           decide whether sysenter or INT 0x30 are better
           for a specific platform)


TU Dresden, 2012-07-18      Microkernels - Intro
Thread Control Block (TCB)

• Kernel storage for thread-related information

• One TCB per thread

• Stores user state while thread is inactive

• Extension: User-level Thread Control Block
  (UTCB)
      – Holds data the kernel does not need to trust
      – Mapped into address space
      – Most prominent use: system call parameters


TU Dresden, 2012-07-18      Microkernels - Intro
Thread Scheduling

• Whenever a thread enters the kernel, a
  scheduling decision is made.

• Fiasco.OC: priority- based round-robbin
   – Every thread has a priority assigned.
   – The thread with the highest priority runs until
            • Its time quantum runs out (timer interrupt),
            • Thread blocks (e.g., in a system call), or
            • A higher-priority thread becomes ready
      – Then, the next thread is selected.




TU Dresden, 2012-07-18       Microkernels - Intro
L4Re and Threads

• Fiasco provides thread-related system calls
      – thread_control    → modify properties
      – thread_stats_time → get thread runtime
      – thread_ex_regs    → modify EIP and ESP

• But most L4Re applications don't need to
  bother:
      – L4Re provides full libpthread including
         • pthread_create
         • pthread_mutex_*
         • pthread_cond_*
         • ...

TU Dresden, 2012-07-18     Microkernels - Intro
L4Re Applications

• Every L4Re application starts with
      – An empty address space
         • Memory managed by parent
      – One initial thread
         • EIP set to binary's entry point by ELF loader
      – An initial set of capabilities – the environment
         • Parent
         • Memory allocator
         • Main thread
         • Log
         • ...



TU Dresden, 2012-07-18      Microkernels - Intro
Performing System Calls

• All Fiasco.OC system calls are performed using
  IPC with different sets of parameters.
      – Functions are called l4_ipc_*()
      – Colloquially: invoke
• Generic parameters (in registers):
      – Capability to invoke
      – Timeout (how long do I want to block at most? –
        let's assume L4_IPC_NEVER for now.)
      – Message tag describing the rest of the message
          • Protocol
          • Number of words in UTCB
• Message-specific parameters in UTCB message
  registers
TU Dresden, 2012-07-18      Microkernels - Intro
Writing Output

• L4Re environment passes a LOG capability

      – Implements the L4_PROTO_LOG protocol
         • By default implemented in kernel and
           printed out to serial console

      – UTCB content:
         • Message reg 0: log operation to perform
           (e.g., L4_VCON_WRITE_OP)
         • Message reg 1: number of characters
         • Message reg 2...: characters to write


TU Dresden, 2012-07-18      Microkernels - Intro
Writing Output: The Code

#include <l4/re/env.h>
#include <l4/sys/ipc.h>

[..]

l4re_env_t *env = l4re_env();     // get environment
l4_msg_regs_t *mr = l4_utcb_mr(); // get msg regs

mr->mr[0] = L4_VCON_WRITE_OP;
mr->mr[1] = 7; // 'hellon' = 6 chars + 0 char
memcpy(&mr->mr[2], “hellon”, 7);

l4_msgtag_t tag, ret;
tag = l4_msgtag(L4_PROTO_LOG, 4, /* 4 msg words /
                      0, L4_IPC_NEVER);

ret = l4_ipc_send(env->log, l4_utcb(), tag); // System Call!

if (l4_msgtag_has_error(ret)) {
  /* error handling */
}
 TU Dresden, 2012-07-18      Microkernels - Intro
Writing Output: The Code

#include <l4/re/env.h>
#include <l4/sys/ipc.h>

[..]

l4re_env_t *env = l4re_env(); // get environment
l4_msg_regs_t mr = l4_utcb_mr(); // get msg regs
                 In real code, please just do
mr->mr[0] = L4_VCON_WRITE_OP;
mr->mr[1] = 7; // 'hellon' = 6 chars + 0 char
memcpy(&mr->mr[2], “hellon”, 7);
                          puts(“hello”);
l4_msgtag_t tag, ret;
tag = l4_msgtag(L4_PROTO_LOG, 4, /* 4 msg words /
                      0, 0, L4_IPC_NEVER);

ret = l4_ipc_send(env->log, l4_utcb(), tag); // System Call!

if (l4_msgtag_has_error(ret)) {
  /* error handling */
}
 TU Dresden, 2012-07-18       Microkernels - Intro
Multithreading

• Fiasco.OC allows multithreading
      – Many threads sharing the same address space
      – Spread across multiple physical CPUs

• Classical Problem: critical sections

global: int i = 0;

Thread 1                            Thread 2

for (unsigned j = 0; j < 10;        for (unsigned j = 0; j < 10;
     ++j)                                ++j)
   i += 1;                                  i += 1;

 • The result is rarely i == 20!
TU Dresden, 2012-07-18         Microkernels - Intro
Synchronization

for (unsigned j = 0; j < 10; ++j)

            i += 1;       Critical Section


• Critical Sections need to be protected
      – Disable interrupts → infeasible for user space
      – Spinning → burns CPU / energy / time quanta

• What we want: blocking lock
      – Thread tests flag: critical section free yes/no
      – waits (sleeping) until section is free


TU Dresden, 2012-07-18      Microkernels - Intro
Expected behavior

                                            Thread1 leaves
                                             critical section

Thread 1




Thread 2
                          Threads try to                  Thread2 leaves
                           enter critical                  critical section
                             section                                          time




 TU Dresden, 2012-07-18                          Microkernels - Intro
Synchronization - pthreads

• L4Re provides libpthread, so we can simply use
  pthread_mutex operations:

    pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;

    [..]

    for (unsigned j = 0; j < 10; ++j) {
        pthread_mutex_lock(&mtx);
        i += 1;
        pthread_mutex_unlock(&mtx);
    }

• Fiasco.OC's IPC primitives allow for another solution,
  though.


TU Dresden, 2012-07-18      Microkernels - Intro
Synchronization: Serializer Thread

• IPC operations are synchronous by default:
      – Sender and receiver both need to be in an IPC system call
• There's a combination of sending and receiving a
  message: l4_ipc_call().
• This allows synchronization using a serializer thread:

  Thread 1
                         Blocking         Done
                           call

 Serializer
                         Blocking          Reply
                           call

  Thread 2


TU Dresden, 2012-07-18              Microkernels - Intro      time
Downloading and Compiling

• Fiasco.OC and L4Re are available from
  http://os.inf.tu-dresden.de/L4Re

• There are download and build instructions.
      – We will use the 32bit versions for this course
          → simply leave all configuration settings at their defaults
      – Note, you have to do 2 separate builds: one for
        Fiasco.OC and one for the L4Re.
      – GCC-4.7 did not work for me at the moment.




TU Dresden, 2012-07-18          Microkernels - Intro
L4Re directory structure

• src/l4
• Important subdirectories: pkg/, conf/
• pkg/contains all applications (each in its own
  package)
      – Packages have subdirs again:
         • server/ → the application program
         • lib/ → library to be used by clients
         • include/ → header files shared between
           server and clients




TU Dresden, 2012-07-18      Microkernels - Intro
Running Fiasco.OC/L4Re

• We'll use QEMU to run our setups.
• L4Re's build system has QEMU support
  integrated, which is configured through files
  in src/l4/conf:
      – modules.lst → contains multiboot setup info,
        similar to a GRUB menu.lst
      – Makeconf.boot → contains overall settings
        (where to search for binaries, qemu, ...)




TU Dresden, 2012-07-18     Microkernels - Intro
modules.lst
                                                          Have this once in your
        modaddr 0x01100000                                  modules.lst file.


Each entry has a name                                             roottask is the initial task
                                                                to boot. --init rom/hello asks
        entry hello                                               it to load the hello binary
        roottask moe --init=rom/hello                            from the ROM file system
        module l4re
        module hello

                                  modules are additional
                               files. They are loaded into
                                memory and can then be
                              accessed through the ROM
                              file system under the name
                                     rom/<filename>.


    TU Dresden, 2012-07-18         Microkernels - Intro
Makeconf.boot

• Start from the example in src/l4/conf
  (rename it to Makeconf.boot)

• At least set:
      – MODULE_SEARCH_PATH (have it include the
        path to your Fiasco.OC build directory)




TU Dresden, 2012-07-18     Microkernels - Intro
Booting QEMU

• Go to L4Re build directory

• Run “make qemu”
      – Select 'hello' entry from the dialog
         • If there's no dialog, you need to install the
           'dialog' package.
         • You can also circument the dialog:
           make qemu E=<entry>
           where entry is the name of a modules.lst
           entry.




TU Dresden, 2012-07-18     Microkernels - Intro
Assignments

• Download and compile Fiasco.OC and L4Re.

• Run the hello world example in QEMU.

• Modify the hello world example (it is in
  l4/pkg/hello/server/src):
      – Replace the puts() call with a manual system
        call to the log object.
      – You can use the example code from these
        slides.



TU Dresden, 2012-07-18     Microkernels - Intro
Further Reading

• P. Brinch-Hansen: The Nucleus of a Multiprogramming
  System
    http://brinch-hansen.net/papers/1970a.pdf
    Microkernels were invented in 1969!


• J. Liedtke: On microkernel construction
    http://os.inf.tu-dresden.de/papers_ps/jochen/Mikern.ps
    Shaping the ideas found in L4 microkernels.

• D. Engler et al.: Exokernel – An operating system
  architecture for application-level resource management
    http://pdos.csail.mit.edu/6.828/2008/readings/engler95exokernel.pdf
    Taking user-level policy implementation to the extreme.



TU Dresden, 2012-07-18        Microkernels - Intro
Ad

More Related Content

What's hot (20)

Unix v6 Internals
Unix v6 InternalsUnix v6 Internals
Unix v6 Internals
National Cheng Kung University
 
olibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linuxolibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linux
National Cheng Kung University
 
Microkernel Evolution
Microkernel EvolutionMicrokernel Evolution
Microkernel Evolution
National Cheng Kung University
 
Implement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVMImplement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVM
National Cheng Kung University
 
Embedded Hypervisor for ARM
Embedded Hypervisor for ARMEmbedded Hypervisor for ARM
Embedded Hypervisor for ARM
National Cheng Kung University
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
National Cheng Kung University
 
A tour of F9 microkernel and BitSec hypervisor
A tour of F9 microkernel and BitSec hypervisorA tour of F9 microkernel and BitSec hypervisor
A tour of F9 microkernel and BitSec hypervisor
Louie Lu
 
Hints for L4 Microkernel
Hints for L4 MicrokernelHints for L4 Microkernel
Hints for L4 Microkernel
National Cheng Kung University
 
Faults inside System Software
Faults inside System SoftwareFaults inside System Software
Faults inside System Software
National Cheng Kung University
 
Embedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile Devices
National Cheng Kung University
 
Barrelfish OS
Barrelfish OS Barrelfish OS
Barrelfish OS
Juan Mancilla
 
Construct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoTConstruct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoT
National Cheng Kung University
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
National Cheng Kung University
 
μ-Kernel Evolution
μ-Kernel Evolutionμ-Kernel Evolution
μ-Kernel Evolution
Sergio Shevchenko
 
bfarm-v2
bfarm-v2bfarm-v2
bfarm-v2
Zeus G
 
Enea Linux and LWRT FTF China 2012
Enea Linux and LWRT FTF China 2012Enea Linux and LWRT FTF China 2012
Enea Linux and LWRT FTF China 2012
EneaSoftware
 
Lightweight Virtualization in Linux
Lightweight Virtualization in LinuxLightweight Virtualization in Linux
Lightweight Virtualization in Linux
Sadegh Dorri N.
 
Libra Library OS
Libra Library OSLibra Library OS
Libra Library OS
Eric Van Hensbergen
 
Cache Consistency – Requirements and its packet processing Performance implic...
Cache Consistency – Requirements and its packet processing Performance implic...Cache Consistency – Requirements and its packet processing Performance implic...
Cache Consistency – Requirements and its packet processing Performance implic...
Michelle Holley
 
[Harvard CS264] 05 - Advanced-level CUDA Programming
[Harvard CS264] 05 - Advanced-level CUDA Programming[Harvard CS264] 05 - Advanced-level CUDA Programming
[Harvard CS264] 05 - Advanced-level CUDA Programming
npinto
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
National Cheng Kung University
 
A tour of F9 microkernel and BitSec hypervisor
A tour of F9 microkernel and BitSec hypervisorA tour of F9 microkernel and BitSec hypervisor
A tour of F9 microkernel and BitSec hypervisor
Louie Lu
 
bfarm-v2
bfarm-v2bfarm-v2
bfarm-v2
Zeus G
 
Enea Linux and LWRT FTF China 2012
Enea Linux and LWRT FTF China 2012Enea Linux and LWRT FTF China 2012
Enea Linux and LWRT FTF China 2012
EneaSoftware
 
Lightweight Virtualization in Linux
Lightweight Virtualization in LinuxLightweight Virtualization in Linux
Lightweight Virtualization in Linux
Sadegh Dorri N.
 
Cache Consistency – Requirements and its packet processing Performance implic...
Cache Consistency – Requirements and its packet processing Performance implic...Cache Consistency – Requirements and its packet processing Performance implic...
Cache Consistency – Requirements and its packet processing Performance implic...
Michelle Holley
 
[Harvard CS264] 05 - Advanced-level CUDA Programming
[Harvard CS264] 05 - Advanced-level CUDA Programming[Harvard CS264] 05 - Advanced-level CUDA Programming
[Harvard CS264] 05 - Advanced-level CUDA Programming
npinto
 

Similar to Introduction to Microkernels (20)

MIcrokernel
MIcrokernelMIcrokernel
MIcrokernel
Abu Azzam
 
Rtos part2
Rtos part2Rtos part2
Rtos part2
navakishore
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
National Cheng Kung University
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
Brendan Gregg
 
Sucet os module_2_notes
Sucet os module_2_notesSucet os module_2_notes
Sucet os module_2_notes
SRINIVASUNIVERSITYEN
 
00-WindowsKernelOverview_University of Tokyo_July 2004.pdf
00-WindowsKernelOverview_University of Tokyo_July 2004.pdf00-WindowsKernelOverview_University of Tokyo_July 2004.pdf
00-WindowsKernelOverview_University of Tokyo_July 2004.pdf
vtkhuyenhd
 
20120524 cern data centre evolution v2
20120524 cern data centre evolution v220120524 cern data centre evolution v2
20120524 cern data centre evolution v2
Tim Bell
 
Zero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyZero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with Netty
Daniel Bimschas
 
Current Trends in HPC
Current Trends in HPCCurrent Trends in HPC
Current Trends in HPC
Putchong Uthayopas
 
Walking around linux kernel
Walking around linux kernelWalking around linux kernel
Walking around linux kernel
Dharshana Kasun Warusavitharana
 
Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...
Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...
Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...
CSCJournals
 
EEDC Distributed Systems
EEDC Distributed SystemsEEDC Distributed Systems
EEDC Distributed Systems
Roger Rafanell Mas
 
Visual comparison of Unix-like systems & Virtualisation
Visual comparison of Unix-like systems & VirtualisationVisual comparison of Unix-like systems & Virtualisation
Visual comparison of Unix-like systems & Virtualisation
wangyuanyi
 
An Introduce of OPNFV (Open Platform for NFV)
An Introduce of OPNFV (Open Platform for NFV)An Introduce of OPNFV (Open Platform for NFV)
An Introduce of OPNFV (Open Platform for NFV)
Mario Cho
 
Isys20261 lecture 06
Isys20261 lecture 06Isys20261 lecture 06
Isys20261 lecture 06
Wiliam Ferraciolli
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
Shay Cohen
 
Microx - A Unix like kernel for Embedded Systems written from scratch.
Microx - A Unix like kernel for Embedded Systems written from scratch.Microx - A Unix like kernel for Embedded Systems written from scratch.
Microx - A Unix like kernel for Embedded Systems written from scratch.
Waqar Sheikh
 
2. microkernel new
2. microkernel new2. microkernel new
2. microkernel new
AbDul ThaYyal
 
Processes and Threads in Windows Vista
Processes and Threads in Windows VistaProcesses and Threads in Windows Vista
Processes and Threads in Windows Vista
Trinh Phuc Tho
 
Arch stylesandpatternsmi
Arch stylesandpatternsmiArch stylesandpatternsmi
Arch stylesandpatternsmi
lord14383
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
Brendan Gregg
 
00-WindowsKernelOverview_University of Tokyo_July 2004.pdf
00-WindowsKernelOverview_University of Tokyo_July 2004.pdf00-WindowsKernelOverview_University of Tokyo_July 2004.pdf
00-WindowsKernelOverview_University of Tokyo_July 2004.pdf
vtkhuyenhd
 
20120524 cern data centre evolution v2
20120524 cern data centre evolution v220120524 cern data centre evolution v2
20120524 cern data centre evolution v2
Tim Bell
 
Zero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyZero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with Netty
Daniel Bimschas
 
Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...
Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...
Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...
CSCJournals
 
Visual comparison of Unix-like systems & Virtualisation
Visual comparison of Unix-like systems & VirtualisationVisual comparison of Unix-like systems & Virtualisation
Visual comparison of Unix-like systems & Virtualisation
wangyuanyi
 
An Introduce of OPNFV (Open Platform for NFV)
An Introduce of OPNFV (Open Platform for NFV)An Introduce of OPNFV (Open Platform for NFV)
An Introduce of OPNFV (Open Platform for NFV)
Mario Cho
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
Shay Cohen
 
Microx - A Unix like kernel for Embedded Systems written from scratch.
Microx - A Unix like kernel for Embedded Systems written from scratch.Microx - A Unix like kernel for Embedded Systems written from scratch.
Microx - A Unix like kernel for Embedded Systems written from scratch.
Waqar Sheikh
 
Processes and Threads in Windows Vista
Processes and Threads in Windows VistaProcesses and Threads in Windows Vista
Processes and Threads in Windows Vista
Trinh Phuc Tho
 
Arch stylesandpatternsmi
Arch stylesandpatternsmiArch stylesandpatternsmi
Arch stylesandpatternsmi
lord14383
 
Ad

More from Vasily Sartakov (20)

Мейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памятиМейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памяти
Vasily Sartakov
 
RnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionRnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific Region
Vasily Sartakov
 
Сетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и GenodeСетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и Genode
Vasily Sartakov
 
Защита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4ReЗащита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4Re
Vasily Sartakov
 
Hardware Errors and the OS
Hardware Errors and the OSHardware Errors and the OS
Hardware Errors and the OS
Vasily Sartakov
 
Operating Systems Meet Fault Tolerance
Operating Systems Meet Fault ToleranceOperating Systems Meet Fault Tolerance
Operating Systems Meet Fault Tolerance
Vasily Sartakov
 
Genode OS Framework
Genode OS FrameworkGenode OS Framework
Genode OS Framework
Vasily Sartakov
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems Hardening
Vasily Sartakov
 
Особенности Национального RnD
Особенности Национального RnDОсобенности Национального RnD
Особенности Национального RnD
Vasily Sartakov
 
Genode Architecture
Genode ArchitectureGenode Architecture
Genode Architecture
Vasily Sartakov
 
Genode Components
Genode ComponentsGenode Components
Genode Components
Vasily Sartakov
 
Genode Programming
Genode ProgrammingGenode Programming
Genode Programming
Vasily Sartakov
 
Genode Compositions
Genode CompositionsGenode Compositions
Genode Compositions
Vasily Sartakov
 
Trusted Computing Base
Trusted Computing BaseTrusted Computing Base
Trusted Computing Base
Vasily Sartakov
 
System Integrity
System IntegritySystem Integrity
System Integrity
Vasily Sartakov
 
Intro
IntroIntro
Intro
Vasily Sartakov
 
Применение Fiasco.OC
Применение Fiasco.OCПрименение Fiasco.OC
Применение Fiasco.OC
Vasily Sartakov
 
Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011
Vasily Sartakov
 
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Vasily Sartakov
 
Мейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памятиМейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памяти
Vasily Sartakov
 
RnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionRnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific Region
Vasily Sartakov
 
Сетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и GenodeСетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и Genode
Vasily Sartakov
 
Защита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4ReЗащита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4Re
Vasily Sartakov
 
Hardware Errors and the OS
Hardware Errors and the OSHardware Errors and the OS
Hardware Errors and the OS
Vasily Sartakov
 
Operating Systems Meet Fault Tolerance
Operating Systems Meet Fault ToleranceOperating Systems Meet Fault Tolerance
Operating Systems Meet Fault Tolerance
Vasily Sartakov
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems Hardening
Vasily Sartakov
 
Особенности Национального RnD
Особенности Национального RnDОсобенности Национального RnD
Особенности Национального RnD
Vasily Sartakov
 
Применение Fiasco.OC
Применение Fiasco.OCПрименение Fiasco.OC
Применение Fiasco.OC
Vasily Sartakov
 
Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011
Vasily Sartakov
 
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Vasily Sartakov
 
Ad

Recently uploaded (20)

Anti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptxAnti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptx
Mayuri Chavan
 
YSPH VMOC Special Report - Measles Outbreak Southwest US 4-30-2025.pptx
YSPH VMOC Special Report - Measles Outbreak  Southwest US 4-30-2025.pptxYSPH VMOC Special Report - Measles Outbreak  Southwest US 4-30-2025.pptx
YSPH VMOC Special Report - Measles Outbreak Southwest US 4-30-2025.pptx
Yale School of Public Health - The Virtual Medical Operations Center (VMOC)
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
Introduction to Vibe Coding and Vibe Engineering
Introduction to Vibe Coding and Vibe EngineeringIntroduction to Vibe Coding and Vibe Engineering
Introduction to Vibe Coding and Vibe Engineering
Damian T. Gordon
 
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdfBiophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
PKLI-Institute of Nursing and Allied Health Sciences Lahore , Pakistan.
 
The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...
Sandeep Swamy
 
Political History of Pala dynasty Pala Rulers NEP.pptx
Political History of Pala dynasty Pala Rulers NEP.pptxPolitical History of Pala dynasty Pala Rulers NEP.pptx
Political History of Pala dynasty Pala Rulers NEP.pptx
Arya Mahila P. G. College, Banaras Hindu University, Varanasi, India.
 
SPRING FESTIVITIES - UK AND USA -
SPRING FESTIVITIES - UK AND USA            -SPRING FESTIVITIES - UK AND USA            -
SPRING FESTIVITIES - UK AND USA -
Colégio Santa Teresinha
 
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptxSCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
Ronisha Das
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
How to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odooHow to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odoo
Celine George
 
Social Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy StudentsSocial Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy Students
DrNidhiAgarwal
 
Handling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptxHandling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptx
AuthorAIDNationalRes
 
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Library Association of Ireland
 
Presentation on Tourism Product Development By Md Shaifullar Rabbi
Presentation on Tourism Product Development By Md Shaifullar RabbiPresentation on Tourism Product Development By Md Shaifullar Rabbi
Presentation on Tourism Product Development By Md Shaifullar Rabbi
Md Shaifullar Rabbi
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Library Association of Ireland
 
How to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of saleHow to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of sale
Celine George
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
milanasargsyan5
 
Anti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptxAnti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptx
Mayuri Chavan
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
Introduction to Vibe Coding and Vibe Engineering
Introduction to Vibe Coding and Vibe EngineeringIntroduction to Vibe Coding and Vibe Engineering
Introduction to Vibe Coding and Vibe Engineering
Damian T. Gordon
 
The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...
Sandeep Swamy
 
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptxSCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
Ronisha Das
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
How to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odooHow to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odoo
Celine George
 
Social Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy StudentsSocial Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy Students
DrNidhiAgarwal
 
Handling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptxHandling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptx
AuthorAIDNationalRes
 
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Library Association of Ireland
 
Presentation on Tourism Product Development By Md Shaifullar Rabbi
Presentation on Tourism Product Development By Md Shaifullar RabbiPresentation on Tourism Product Development By Md Shaifullar Rabbi
Presentation on Tourism Product Development By Md Shaifullar Rabbi
Md Shaifullar Rabbi
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Library Association of Ireland
 
How to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of saleHow to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of sale
Celine George
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
milanasargsyan5
 

Introduction to Microkernels

  • 1. Faculty of Computer Science Institute for System Architecture, Operating Systems Group Introduction to Microkernel- Based Operating Systems Björn Döbel
  • 2. Lecture Outline • Microkernels and what we like about them • The Fiasco.OC microkernel – Kernel Objects – Kernel Mechanisms • OS Services on top of Fiasco.OC – Device Drivers – Virtualization TU Dresden, 2012-07-18 Microkernels - Intro
  • 3. Purpose of Operating Systems • Manage the available resources – Hardware (CPU) and software (file systems) • Provide users with an easier-to-use interface to access resources – Unix: data read/write access to sockets instead of writing TCP packets on your own • Perform privileged / HW-specific operations – x86: ring0 vs. ring3 – Device drivers • Provide separation and collaboration – Isolate users / processes from each other – Allow cooperation if needed (e.g., sending messages between processes) TU Dresden, 2012-07-18 Microkernels - Intro
  • 4. Monolithic kernels - Linux Application Application Application Application User mode Kernel mode System-Call Interface File Systems Networking Processes Memory VFS Sockets Scheduling Management Linux File System Impl. Protocols IPC Page allocation Kernel Address spaces Device Drivers Swapping Hardware Access Hardware CPU, Memory, PCI, Devices TU Dresden, 2012-07-18 Microkernels - Intro
  • 5. What's the problem? • Security issues – All components run in privileged mode. – Direct access to all kernel-level data. – Module loading → easy living for rootkits. • Resilience issues – Faulty drivers can crash the whole system. – 75% of today's OS kernels are drivers. • Software-level issues – Complexity is hard to manage. – Custom OS for hardware with scarce resources? TU Dresden, 2012-07-18 Microkernels - Intro
  • 6. One vision - microkernels • Minimal OS kernel – less error prone – small Trusted Computing Base – suitable for verification • System services in user-level servers – flexible and extensible • Protection between individual components – systems get • More secure – inter-component protection • More resilient – crashing component does not (necessarily...) crash the whole system TU Dresden, 2012-07-18 Microkernels - Intro
  • 7. The microkernel vision Application Application Application Application User mode File Systems Networking Memory VFS Sockets Management File System Impl. Protocols Page allocation Swapping Device Drivers Kernel mode Address Spaces System-Call Interface Threads Scheduling Hardware Access IPC Microkernel Hardware CPU, Memory, PCI, Devices TU Dresden, 2012-07-18 Microkernels - Intro
  • 8. Microkernel-Based Systems • 1st generation: Mach – developed at CMU, 1985 - 1994 – Foundation for several real systems (e.g., NextOS → Mac OS X) • 2nd generation: Minix3 – Andrew Tanenbaum @ VU Amsterdam – Focus on restartability • 2nd/3rd generation: – Various kernels of the L4 microkernel family TU Dresden, 2012-07-18 Microkernels - Intro
  • 9. The L4 family – a timeline SeL4 N1 N2 OKL4v2 Univ. of New South Wales / NICTA / Open NICTA:: OKL4 Kernel Labs Pistachio-embedded L4/x86 ABI Specification L2, L3 v2 x0 x2/v4 Implementation Univ. of L4Ka::Hazelnut L4Ka::Pistachio Karlsruhe Fiasco/L4v2 Nova Fiasco OC Nova TU Dresden L4.Sec Fiasco/L4.Fiasco Fiasco.OC TU Dresden, 2012-07-18 Microkernels - Intro
  • 10. L4 concepts • Jochen Liedtke: “A microkernel does no real work.” – Kernel only provides inevitable mechanisms. – Kernel does not enforce policies. • But what is inevitable? – Abstractions • Threads • Address spaces (tasks) – Mechanisms • Communication • Resource Mapping • (Scheduling) TU Dresden, 2012-07-18 Microkernels - Intro
  • 11. Fiasco.OC – Objects • OC – Object-Capability system • System designed around objects providing services: call() Client Service 1 call() call() Service 2 • Kernel provides – Object creation/management – Object interaction: Inter-Process Communication (IPC) TU Dresden, 2012-07-18 Microkernels - Intro
  • 12. Fiasco.OC – Calling objects • To call an object, we need an address: – Telephone number – Postal address Client Service 1 – IP address call(service1.ID) Kernel • Kernel returns ENOTEXISTENT if ID is wrong. • Security issues: – Client could simply “guess” IDs brute-force. – Existence/non-existence can be used as a covert channel TU Dresden, 2012-07-18 Microkernels - Intro
  • 13. Fiasco.OC – Capabilities • Capability: – Reference to an object – Protected by the Fiasco.OC kernel • Kernel knows all capability-object mappings. • Managed as a per-process capability table. • User processes only use indexes into this table. Client Service 1 Service1 1 Communication Channel 2 invoke(capability(3)) 3 4 Kernel TU Dresden, 2012-07-18 Microkernels - Intro
  • 14. Fiasco.OC: System Calls • “Everything is an object.” • 1 system call: invoke_object() – Parameters passed in UTCB – Types of parameters depend on type of object • Kernel-provided objects – Threads / Tasks / IRQs / … • Generic communication object: IPC gate – Send message from sender to receiver – Used to implement new objects in user-level applications TU Dresden, 2012-07-18 Microkernels - Intro
  • 15. Kernel vs. Operating System • Fiasco.OC is not a full uClibC libstdc++ ... operating system! IPC Client/Server Framework – No device drivers User-level libraries (except UART + timer) – No file system / network Ned stack / … L4Re Init-style task loader • A microkernel-based OS needs to add these Moe services as user-level Sigma0 components L4 Runtime User Basic Resouce Manager(s) mode Environment Kernel (L4Re) mode Fiasco.OC TU Dresden, 2012-07-18 Microkernels - Intro
  • 16. Outline for the Next Lectures • Fiasco.OC's mapping from managed resources to kernel objects: – CPU → threads – Memory → tasks (address spaces) – Communication → Inter-Process Communication (IPC) • L4 Runtime Environment – Device Drivers – L4Linux TU Dresden, 2012-07-18 Microkernels - Intro
  • 17. L4 - Threads Address Space • Thread ::= abstraction of execution – Unit of CPU scheduling – Threads are temporally isolated • Properties managed by the kernel: Threads – Instruction Pointer (EIP) Code – Stack Pointer (ESP) Data – CPU Registers / flags – (User-level) TCB • User-level applications need to Stack – allocate stack memory Stack – provide memory for application binary – find entry point – ... TU Dresden, 2012-07-18 Microkernels - Intro
  • 18. L4 Threads and the Kernel • Threads run in userland and enter the kernel – Through a system call (sysenter / INT 0x30) – Forced by HW interrupts or CPU exceptions • Kernel Info Page – Magic memory page mapped into every task – Contains kernel-related information • Kernel version • Configured kernel features • System call entry code (allows the kernel to decide whether sysenter or INT 0x30 are better for a specific platform) TU Dresden, 2012-07-18 Microkernels - Intro
  • 19. Thread Control Block (TCB) • Kernel storage for thread-related information • One TCB per thread • Stores user state while thread is inactive • Extension: User-level Thread Control Block (UTCB) – Holds data the kernel does not need to trust – Mapped into address space – Most prominent use: system call parameters TU Dresden, 2012-07-18 Microkernels - Intro
  • 20. Thread Scheduling • Whenever a thread enters the kernel, a scheduling decision is made. • Fiasco.OC: priority- based round-robbin – Every thread has a priority assigned. – The thread with the highest priority runs until • Its time quantum runs out (timer interrupt), • Thread blocks (e.g., in a system call), or • A higher-priority thread becomes ready – Then, the next thread is selected. TU Dresden, 2012-07-18 Microkernels - Intro
  • 21. L4Re and Threads • Fiasco provides thread-related system calls – thread_control → modify properties – thread_stats_time → get thread runtime – thread_ex_regs → modify EIP and ESP • But most L4Re applications don't need to bother: – L4Re provides full libpthread including • pthread_create • pthread_mutex_* • pthread_cond_* • ... TU Dresden, 2012-07-18 Microkernels - Intro
  • 22. L4Re Applications • Every L4Re application starts with – An empty address space • Memory managed by parent – One initial thread • EIP set to binary's entry point by ELF loader – An initial set of capabilities – the environment • Parent • Memory allocator • Main thread • Log • ... TU Dresden, 2012-07-18 Microkernels - Intro
  • 23. Performing System Calls • All Fiasco.OC system calls are performed using IPC with different sets of parameters. – Functions are called l4_ipc_*() – Colloquially: invoke • Generic parameters (in registers): – Capability to invoke – Timeout (how long do I want to block at most? – let's assume L4_IPC_NEVER for now.) – Message tag describing the rest of the message • Protocol • Number of words in UTCB • Message-specific parameters in UTCB message registers TU Dresden, 2012-07-18 Microkernels - Intro
  • 24. Writing Output • L4Re environment passes a LOG capability – Implements the L4_PROTO_LOG protocol • By default implemented in kernel and printed out to serial console – UTCB content: • Message reg 0: log operation to perform (e.g., L4_VCON_WRITE_OP) • Message reg 1: number of characters • Message reg 2...: characters to write TU Dresden, 2012-07-18 Microkernels - Intro
  • 25. Writing Output: The Code #include <l4/re/env.h> #include <l4/sys/ipc.h> [..] l4re_env_t *env = l4re_env(); // get environment l4_msg_regs_t *mr = l4_utcb_mr(); // get msg regs mr->mr[0] = L4_VCON_WRITE_OP; mr->mr[1] = 7; // 'hellon' = 6 chars + 0 char memcpy(&mr->mr[2], “hellon”, 7); l4_msgtag_t tag, ret; tag = l4_msgtag(L4_PROTO_LOG, 4, /* 4 msg words / 0, L4_IPC_NEVER); ret = l4_ipc_send(env->log, l4_utcb(), tag); // System Call! if (l4_msgtag_has_error(ret)) { /* error handling */ } TU Dresden, 2012-07-18 Microkernels - Intro
  • 26. Writing Output: The Code #include <l4/re/env.h> #include <l4/sys/ipc.h> [..] l4re_env_t *env = l4re_env(); // get environment l4_msg_regs_t mr = l4_utcb_mr(); // get msg regs In real code, please just do mr->mr[0] = L4_VCON_WRITE_OP; mr->mr[1] = 7; // 'hellon' = 6 chars + 0 char memcpy(&mr->mr[2], “hellon”, 7); puts(“hello”); l4_msgtag_t tag, ret; tag = l4_msgtag(L4_PROTO_LOG, 4, /* 4 msg words / 0, 0, L4_IPC_NEVER); ret = l4_ipc_send(env->log, l4_utcb(), tag); // System Call! if (l4_msgtag_has_error(ret)) { /* error handling */ } TU Dresden, 2012-07-18 Microkernels - Intro
  • 27. Multithreading • Fiasco.OC allows multithreading – Many threads sharing the same address space – Spread across multiple physical CPUs • Classical Problem: critical sections global: int i = 0; Thread 1 Thread 2 for (unsigned j = 0; j < 10; for (unsigned j = 0; j < 10; ++j) ++j) i += 1; i += 1; • The result is rarely i == 20! TU Dresden, 2012-07-18 Microkernels - Intro
  • 28. Synchronization for (unsigned j = 0; j < 10; ++j) i += 1; Critical Section • Critical Sections need to be protected – Disable interrupts → infeasible for user space – Spinning → burns CPU / energy / time quanta • What we want: blocking lock – Thread tests flag: critical section free yes/no – waits (sleeping) until section is free TU Dresden, 2012-07-18 Microkernels - Intro
  • 29. Expected behavior Thread1 leaves critical section Thread 1 Thread 2 Threads try to Thread2 leaves enter critical critical section section time TU Dresden, 2012-07-18 Microkernels - Intro
  • 30. Synchronization - pthreads • L4Re provides libpthread, so we can simply use pthread_mutex operations: pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; [..] for (unsigned j = 0; j < 10; ++j) { pthread_mutex_lock(&mtx); i += 1; pthread_mutex_unlock(&mtx); } • Fiasco.OC's IPC primitives allow for another solution, though. TU Dresden, 2012-07-18 Microkernels - Intro
  • 31. Synchronization: Serializer Thread • IPC operations are synchronous by default: – Sender and receiver both need to be in an IPC system call • There's a combination of sending and receiving a message: l4_ipc_call(). • This allows synchronization using a serializer thread: Thread 1 Blocking Done call Serializer Blocking Reply call Thread 2 TU Dresden, 2012-07-18 Microkernels - Intro time
  • 32. Downloading and Compiling • Fiasco.OC and L4Re are available from http://os.inf.tu-dresden.de/L4Re • There are download and build instructions. – We will use the 32bit versions for this course → simply leave all configuration settings at their defaults – Note, you have to do 2 separate builds: one for Fiasco.OC and one for the L4Re. – GCC-4.7 did not work for me at the moment. TU Dresden, 2012-07-18 Microkernels - Intro
  • 33. L4Re directory structure • src/l4 • Important subdirectories: pkg/, conf/ • pkg/contains all applications (each in its own package) – Packages have subdirs again: • server/ → the application program • lib/ → library to be used by clients • include/ → header files shared between server and clients TU Dresden, 2012-07-18 Microkernels - Intro
  • 34. Running Fiasco.OC/L4Re • We'll use QEMU to run our setups. • L4Re's build system has QEMU support integrated, which is configured through files in src/l4/conf: – modules.lst → contains multiboot setup info, similar to a GRUB menu.lst – Makeconf.boot → contains overall settings (where to search for binaries, qemu, ...) TU Dresden, 2012-07-18 Microkernels - Intro
  • 35. modules.lst Have this once in your modaddr 0x01100000 modules.lst file. Each entry has a name roottask is the initial task to boot. --init rom/hello asks entry hello it to load the hello binary roottask moe --init=rom/hello from the ROM file system module l4re module hello modules are additional files. They are loaded into memory and can then be accessed through the ROM file system under the name rom/<filename>. TU Dresden, 2012-07-18 Microkernels - Intro
  • 36. Makeconf.boot • Start from the example in src/l4/conf (rename it to Makeconf.boot) • At least set: – MODULE_SEARCH_PATH (have it include the path to your Fiasco.OC build directory) TU Dresden, 2012-07-18 Microkernels - Intro
  • 37. Booting QEMU • Go to L4Re build directory • Run “make qemu” – Select 'hello' entry from the dialog • If there's no dialog, you need to install the 'dialog' package. • You can also circument the dialog: make qemu E=<entry> where entry is the name of a modules.lst entry. TU Dresden, 2012-07-18 Microkernels - Intro
  • 38. Assignments • Download and compile Fiasco.OC and L4Re. • Run the hello world example in QEMU. • Modify the hello world example (it is in l4/pkg/hello/server/src): – Replace the puts() call with a manual system call to the log object. – You can use the example code from these slides. TU Dresden, 2012-07-18 Microkernels - Intro
  • 39. Further Reading • P. Brinch-Hansen: The Nucleus of a Multiprogramming System http://brinch-hansen.net/papers/1970a.pdf Microkernels were invented in 1969! • J. Liedtke: On microkernel construction http://os.inf.tu-dresden.de/papers_ps/jochen/Mikern.ps Shaping the ideas found in L4 microkernels. • D. Engler et al.: Exokernel – An operating system architecture for application-level resource management http://pdos.csail.mit.edu/6.828/2008/readings/engler95exokernel.pdf Taking user-level policy implementation to the extreme. TU Dresden, 2012-07-18 Microkernels - Intro