Microkernel-based operating system development Senko Rašić
operating system (OS): A part of software that manages hardware resources and provides a safe environment for processes to execute in.
 
the micro-kernel idea: Hardware drivers and operating system services are regular processes . The kernel has only the required basic functionality
 
 
 
intensive inter-process comunication + slow IPC calls = bad performance
mainstream systems: Monolithic kernels with some elements of microkernel design ongoing research: L4, Exokernel, ...
L4 microkernel recursive address spaces highly optimized IPC L4Ka::Pistachio – an implementation by the University of Karlsruhe
 
 
 
 
 
Open Source software availability community malleability
Hasenpfeffer based on L4 microkernel set of servers cooperating through IPC calls maximal reuse of available open source components (NIH syndrome avoidance)
 
Inter-process communication server and client processes communication interface IDL 4 generates server and client stubs interface File { boolean Read(in Capability_t cap,in unsigned long offset, out byteseq_t buffer, inout unsigned long size); unsigned long Size(in Capability_t cap); ... }
Remote procedure calls
capability: The privilege to invoke a specific RPC.
Naming system
Name system
Features program loading and execution ( ELF ) multiprocessing, multithreading standard C library available hard disk ( IDE ) support TinyScheme i TinyBasic programming languages
3 rd party components IDE disk driver display output, keyboard input C library TinyScheme interpreter TinyBasic interpreter
System boot
Software Development Kit Linux system GNU C/C++ compiler L4Ka::Pistachio development environment
Testing QEMU VMWare Workstation L4 KDB ( Kernel Debugger ) Test environment: floppy disk image for OS boot (using grub) IDE disk image with ext2 filesystem
QEMU & KDB in action
Software development #include <stdio.h> #include <l4/ipc.h> #define SECOND 1000000UL int main(int argc, char *argv[]) { char buf[1024]; L4_Sleep(L4_TimePeriod(4 * SECOND)); printf(&quot;Hello, I'm %s!\nWho are you: &quot;, argv[0]); fgets(buf, 1023, stdin); printf(&quot;Howdy, %s\n&quot;, buf); return 0; }
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
Software development
In summary developed system: rudimentary extensable microkernel: good base for future development open source: availability malleability

Microkernel-based operating system development

  • 1.
    Microkernel-based operating systemdevelopment Senko Rašić
  • 2.
    operating system (OS):A part of software that manages hardware resources and provides a safe environment for processes to execute in.
  • 3.
  • 4.
    the micro-kernel idea:Hardware drivers and operating system services are regular processes . The kernel has only the required basic functionality
  • 5.
  • 6.
  • 7.
  • 8.
    intensive inter-process comunication+ slow IPC calls = bad performance
  • 9.
    mainstream systems: Monolithickernels with some elements of microkernel design ongoing research: L4, Exokernel, ...
  • 10.
    L4 microkernel recursiveaddress spaces highly optimized IPC L4Ka::Pistachio – an implementation by the University of Karlsruhe
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    Open Source softwareavailability community malleability
  • 17.
    Hasenpfeffer based onL4 microkernel set of servers cooperating through IPC calls maximal reuse of available open source components (NIH syndrome avoidance)
  • 18.
  • 19.
    Inter-process communication serverand client processes communication interface IDL 4 generates server and client stubs interface File { boolean Read(in Capability_t cap,in unsigned long offset, out byteseq_t buffer, inout unsigned long size); unsigned long Size(in Capability_t cap); ... }
  • 20.
  • 21.
    capability: The privilegeto invoke a specific RPC.
  • 22.
  • 23.
  • 24.
    Features program loadingand execution ( ELF ) multiprocessing, multithreading standard C library available hard disk ( IDE ) support TinyScheme i TinyBasic programming languages
  • 25.
    3 rd party components IDE disk driver display output, keyboard input C library TinyScheme interpreter TinyBasic interpreter
  • 26.
  • 27.
    Software Development KitLinux system GNU C/C++ compiler L4Ka::Pistachio development environment
  • 28.
    Testing QEMU VMWareWorkstation L4 KDB ( Kernel Debugger ) Test environment: floppy disk image for OS boot (using grub) IDE disk image with ext2 filesystem
  • 29.
    QEMU & KDBin action
  • 30.
    Software development #include<stdio.h> #include <l4/ipc.h> #define SECOND 1000000UL int main(int argc, char *argv[]) { char buf[1024]; L4_Sleep(L4_TimePeriod(4 * SECOND)); printf(&quot;Hello, I'm %s!\nWho are you: &quot;, argv[0]); fgets(buf, 1023, stdin); printf(&quot;Howdy, %s\n&quot;, buf); return 0; }
  • 31.
    Software development StandardC 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
  • 32.
  • 33.
    In summary developedsystem: rudimentary extensable microkernel: good base for future development open source: availability malleability