[CSE]  Advanced Operating Systems 
 COMP9242 2002/S2 
UNSW

PRINTER Printer-Friendly Version
Administration               
- Notices
- Course Intro
- Consultations
# On-line Survey (closed)
- Survey Results
 
Work
- Lectures
- Milestone 0
- Project Admin
- Project Spec
- Project FAQ
- Exam
 
Documentation
- ASysT Lab
- L4 source browser
- Sulima ISA Simulator
R4x00 ISA Summary 
MIPS R4700 ReferenceMIPS R4000 User Manual 
- Network Driver
- GT64111
 
Related Info
- Aurema OS Prize
- OS Hall of Fame
 
History
- 2000
- 1999
- 1998
 
Staff
- Gernot Heiser (LiC)

 
Valid HTML 4.0!
next up previous
Next: Case in Point: LLinux [Härtig Up: 05-uk Previous: A Critique of the

Subsections

\(\mu\)-kernel Design Principles


Minimality:
If it doesn't have to be in the kernel, it shouldn't be in the kernel
Appropriate abstractions
which can be made fast
and allow efficient implementation of services
Well written:
It pays to shave a few cycles off
TLB refill handler or the IPC path
Unportable:
must be targeted to specific hardware
 $.$
no problem if it's small, and higher layers are portable
 $.$
Example: Liedtke reports significant rewrite of memory management when porting from 486 to Pentium
==>
``abstract hardware layer'' is too costly

Non-portability example: i486 vs Pentium:

 $.$
Size and associativity of TLB
 $.$
Size and organisation of cache (larger line size - restructured IPC)
 $.$
Segment regs in Pentium used to simulate tagged TLB
==>
different trade-offs

What must a \(\mu\)-kernel provide?

  • Virtual memory/address spaces
  • threads,
  • fast IPC,
  • unique identifiers (for IPC addressing).

\(\mu\)-kernel does not have to provide:

  • file system
    • use user-level server (as in Mach)
  • device drivers
    • user-level driver invoked via interrupt (= IPC)
  • page-fault handler
    • use user-level pager

L4 implementation techniques


  • Appropriate system calls to reduce number of kernel invocations
    • e.g., reply & receive next
  • Rich message structure
    • value and reference parameters in message
  • Copy message only once (i.e. not user\(\rightarrow\)kernel\(\rightarrow\)user)
  • Short messages in registers
  • As many syscall parameters in registers as possible
  • One kernel stack (for interrupt handling) per thread (in TCB)

Performance

System CPU MHz RPC cyc/IPC semantics
L4 R4600 100 1.7 100 full
L4 Alpha 433 0.2 45 full
L4 Pentium 166 1.5 121 full
L4 486 50 10 250 full
QNX 486 33 76 1254 full
Mach R2000 16.7 190 1584 full
SCR RPC CVAX 12.5 464 2900 full
Mach 486 50 230 5750 full
Amoeba 68020 15 800 6000 full
Spin Alpha 21064 133 102 6783 full
Mach Alpha 21064 133 104 6916 full
Exo-tlrpc R2000 116.7 6 53 restricted
Spring SparcV8 40 11 220 restricted
DP-Mach 486 66 16 528 restricted
LRPC CVAX 12.5 157 981 restricted


next up previous
Next: Case in Point: LLinux [Härtig Up: 05-uk Previous: A Critique of the
Gernot Heiser 2002-08-28