SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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 LinuxNational 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 LLVMNational 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 SystemsNational 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 hypervisorLouie Lu
 
Embedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesNational 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 IoTNational Cheng Kung University
 
bfarm-v2
bfarm-v2bfarm-v2
bfarm-v2Zeus 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 2012EneaSoftware
 
Lightweight Virtualization in Linux
Lightweight Virtualization in LinuxLightweight Virtualization in Linux
Lightweight Virtualization in LinuxSadegh 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 Programmingnpinto
 

Was ist angesagt? (20)

Unix v6 Internals
Unix v6 InternalsUnix v6 Internals
Unix v6 Internals
 
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
 
Microkernel Evolution
Microkernel EvolutionMicrokernel Evolution
Microkernel Evolution
 
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
 
Embedded Hypervisor for ARM
Embedded Hypervisor for ARMEmbedded Hypervisor for ARM
Embedded Hypervisor for ARM
 
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
 
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
 
Hints for L4 Microkernel
Hints for L4 MicrokernelHints for L4 Microkernel
Hints for L4 Microkernel
 
Faults inside System Software
Faults inside System SoftwareFaults inside System Software
Faults inside System Software
 
Embedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile Devices
 
Barrelfish OS
Barrelfish OS Barrelfish OS
Barrelfish OS
 
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
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Îź-Kernel Evolution
Îź-Kernel EvolutionÎź-Kernel Evolution
Îź-Kernel Evolution
 
bfarm-v2
bfarm-v2bfarm-v2
bfarm-v2
 
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
 
Lightweight Virtualization in Linux
Lightweight Virtualization in LinuxLightweight Virtualization in Linux
Lightweight Virtualization in Linux
 
Libra Library OS
Libra Library OSLibra Library OS
Libra Library OS
 
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...
 
[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
 

Ähnlich wie Introduction to Microkernel-Based Operating Systems with Fiasco.OC

MIcrokernel
MIcrokernelMIcrokernel
MIcrokernelAbu Azzam
 
Rtos part2
Rtos part2Rtos part2
Rtos part2navakishore
 
淺談探索 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 ToolsBrendan Gregg
 
20120524 cern data centre evolution v2
20120524 cern data centre evolution v220120524 cern data centre evolution v2
20120524 cern data centre evolution v2Tim 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 NettyDaniel 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
 
EEDC Distributed Systems
EEDC Distributed SystemsEEDC Distributed Systems
EEDC Distributed SystemsRoger 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 & Virtualisationwangyuanyi
 
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/CoreShay 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 newAbDul ThaYyal
 
Processes and Threads in Windows Vista
Processes and Threads in Windows VistaProcesses and Threads in Windows Vista
Processes and Threads in Windows VistaTrinh Phuc Tho
 
Arch stylesandpatternsmi
Arch stylesandpatternsmiArch stylesandpatternsmi
Arch stylesandpatternsmilord14383
 

Ähnlich wie Introduction to Microkernel-Based Operating Systems with Fiasco.OC (20)

MIcrokernel
MIcrokernelMIcrokernel
MIcrokernel
 
Rtos part2
Rtos part2Rtos part2
Rtos part2
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
 
Sucet os module_2_notes
Sucet os module_2_notesSucet os module_2_notes
Sucet os module_2_notes
 
20120524 cern data centre evolution v2
20120524 cern data centre evolution v220120524 cern data centre evolution v2
20120524 cern data centre evolution v2
 
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
 
Current Trends in HPC
Current Trends in HPCCurrent Trends in HPC
Current Trends in HPC
 
Walking around linux kernel
Walking around linux kernelWalking around linux kernel
Walking around linux kernel
 
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...
 
EEDC Distributed Systems
EEDC Distributed SystemsEEDC Distributed Systems
EEDC Distributed Systems
 
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
 
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)
 
Isys20261 lecture 06
Isys20261 lecture 06Isys20261 lecture 06
Isys20261 lecture 06
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
 
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.
 
2. microkernel new
2. microkernel new2. microkernel new
2. microkernel new
 
Processes and Threads in Windows Vista
Processes and Threads in Windows VistaProcesses and Threads in Windows Vista
Processes and Threads in Windows Vista
 
Arch stylesandpatternsmi
Arch stylesandpatternsmiArch stylesandpatternsmi
Arch stylesandpatternsmi
 
Userspace networking
Userspace networkingUserspace networking
Userspace networking
 

Mehr von 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 RegionVasily Sartakov
 
Сетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и GenodeСетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и GenodeVasily Sartakov
 
Защита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4ReЗащита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4ReVasily 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
 
Genode OS Framework
Genode OS FrameworkGenode OS Framework
Genode OS FrameworkVasily Sartakov
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems HardeningVasily Sartakov
 
Особенности Национального RnD
Особенности Национального RnDОсобенности Национального RnD
Особенности Национального RnDVasily Sartakov
 
Genode Architecture
Genode ArchitectureGenode Architecture
Genode ArchitectureVasily Sartakov
 
Genode Programming
Genode ProgrammingGenode Programming
Genode ProgrammingVasily Sartakov
 
Genode Compositions
Genode CompositionsGenode Compositions
Genode CompositionsVasily Sartakov
 
Trusted Computing Base
Trusted Computing BaseTrusted Computing Base
Trusted Computing BaseVasily Sartakov
 
Применение Fiasco.OC
Применение Fiasco.OCПрименение Fiasco.OC
Применение Fiasco.OCVasily Sartakov
 
Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011Vasily Sartakov
 
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Vasily Sartakov
 

Mehr von Vasily Sartakov (20)

Мейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памятиМейнстрим технологии шифрованной памяти
Мейнстрим технологии шифрованной памяти
 
RnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionRnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific Region
 
Сетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и GenodeСетевая подсистема в L4Re и Genode
Сетевая подсистема в L4Re и Genode
 
Защита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4ReЗащита памяти при помощи NX-bit в среде L4Re
Защита памяти при помощи NX-bit в среде L4Re
 
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
 
Intro
IntroIntro
Intro
 
Genode OS Framework
Genode OS FrameworkGenode OS Framework
Genode OS Framework
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems Hardening
 
Особенности Национального RnD
Особенности Национального RnDОсобенности Национального RnD
Особенности Национального RnD
 
Genode Architecture
Genode ArchitectureGenode Architecture
Genode Architecture
 
Genode Components
Genode ComponentsGenode Components
Genode Components
 
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
 
System Integrity
System IntegritySystem Integrity
System Integrity
 
Intro
IntroIntro
Intro
 
Применение Fiasco.OC
Применение Fiasco.OCПрименение Fiasco.OC
Применение Fiasco.OC
 
Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011Прикладная Информатика 6 (36) 2011
Прикладная Информатика 6 (36) 2011
 
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
 

KĂźrzlich hochgeladen

Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxMaryGraceBautista27
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomnelietumpap1
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptxiammrhaywood
 
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 

KĂźrzlich hochgeladen (20)

Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptx
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choom
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
 
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 

Introduction to Microkernel-Based Operating Systems with Fiasco.OC

  • 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