$30 off During Our Annual Pro Sale. View Details »

Microkernel-based operating system development

Microkernel-based operating system development


Diploma thesis presentation, a description of microkernel-based operating system built using open source components. Translated to English (except pictures and graphs that are still in Croatian).

Source code available at: https://github.com/senko/hasenpfeffer

Senko Rašić

March 31, 2006

More Decks by Senko Rašić

Other Decks in Research


  1. Microkernel-based operating
    system development
    Senko Rašić

    View Slide

  2. operating system (OS):
    A part of software that manages
    hardware resources and provides
    a safe environment for processes to
    execute in.

    View Slide

  3. View Slide

  4. the micro-kernel idea:
    Hardware drivers and operating system
    services are regular processes.
    The kernel has only the required basic

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. intensive inter-process comunication
    + slow IPC calls
    = bad performance

    View Slide

  9. mainstream systems:
    Monolithic kernels with some elements
    of microkernel design
    ongoing research:
    L4, Exokernel, ...

    View Slide

  10. L4 microkernel

    recursive address spaces

    highly optimized IPC
    L4Ka::Pistachio – an implementation by the
    University of Karlsruhe

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. Open Source software




    View Slide

  17. Hasenpfeffer

    based on L4 microkernel

    set of servers cooperating through IPC calls

    maximal reuse of available open source
    components (NIH syndrome avoidance)

    View Slide

  18. View Slide

  19. Inter-process communication

    server and client processes

    communication interface

    IDL4 generates server and client stubs
    interface File {
    boolean Read(in Capability_t cap,in unsigned long
    offset, out byteseq_t buffer, inout unsigned long
    unsigned long Size(in Capability_t cap);

    View Slide

  20. Remote procedure calls

    View Slide

  21. capability:
    The privilege to invoke a specific RPC.

    View Slide

  22. Naming system

    View Slide

  23. Name system

    View Slide

  24. Features

    program loading and execution (ELF)

    multiprocessing, multithreading

    standard C library available

    hard disk (IDE) support

    TinyScheme i TinyBasic programming

    View Slide

  25. 3rd party components

    IDE disk driver

    display output, keyboard input

    C library

    TinyScheme interpreter

    TinyBasic interpreter

    View Slide

  26. System boot

    View Slide

  27. Software Development Kit

    Linux system

    GNU C/C++ compiler

    L4Ka::Pistachio development environment

    View Slide

  28. Testing


    VMWare Workstation

    L4 KDB (Kernel Debugger)
    Test environment:
    − floppy disk image for OS boot (using grub)
    − IDE disk image with ext2 filesystem

    View Slide

  29. QEMU & KDB in action

    View Slide

  30. Software development
    #define SECOND 1000000UL
    int main(int argc, char *argv[])
    char buf[1024];
    L4_Sleep(L4_TimePeriod(4 * SECOND));
    printf("Hello, I'm %s!\nWho are you: ", argv[0]);
    fgets(buf, 1023, stdin);
    printf("Howdy, %s\n", buf);
    return 0;

    View Slide

  31. Software development

    Standard C source code

    Build system config (scons)
    − based on L4 system build system

    Build and creation of floppy image

    System boot configuration

    Virtual machine execution and testing

    View Slide

  32. Software development

    View Slide

  33. In summary
    developed system:
    − rudimentary
    − extensable
    − good base for future development
    open source:
    − availability
    − malleability

    View Slide