[an error occurred while processing this directive]
Screen Version
School of Computer Science & Engineering
University of New South Wales

 Advanced Operating Systems 
 COMP9242 2002/S2 
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?

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

L4 implementation techniques


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
[an error occurred while processing this directive]