微内核 MACH AND L4

本章节主要介绍了计算机的内核,包括一体化内核、微内核、混合内核以及外核,对这四种内核做了介绍以及对比,介绍了UNIX开发的一个新的内核基础,另一个大的方面就是基于微核的系统的性能,介绍了该系统的优点以及和其他的对比。
展开查看详情

1.Microkernels: mach and L4 Hakim Weatherspoon CS6410 1

2.Different Types of Kernel Designs Monolithic kernel Microkernel Hybrid Kernel Exokernel Virtual Machines? Introduction to Kernels

3.All OS services operate in kernel space Good performance Disadvantages Dependencies between system component Complex & huge (millions(!) of lines of code) Larger size makes it hard to maintain E.g. Multics, Unix, BSD, Linux Monolithic Kernels

4.Minimalist approach IPC, virtual memory, thread scheduling Put the rest into user space Device drivers, networking, file system, user interface, even the pager for virtual memory More stable with less services in kernel space Disadvantages Lots of system calls and context switches E.g. Mach, L4, AmigaOS , Minix , K42 Microkernels

5.Monolithic Kernels VS Microkernels

6.Combine the best of both worlds Speed and simple design of a monolithic kernel Modularity and stability of a microkernel Still similar to a monolithic kernel Disadvantages still apply here E.g. Windows NT, NetWare, BeOS Hybrid Kernels

7.Follows end-to-end principle Extremely minimal Fewest hardware abstractions as possible Just allocates physical resources to apps Disadvantages More work for application developers E.g. Nemesis, ExOS Next Tuesday! Exokernels

8.How big should it be? Big debate during the 1980’s The Microkernel Debate

9.Monolithic kernels Advantages: performance Disadvantages: difficult to debug and maintain Microkernels Advantages: more reliable and secure Disadvantages: more overhead Hybrid Kernels Advantages: benefits of monolithic and microkernels Disadvantages: same as monolithic kernels Exokernels Advantages: minimal and simple Disadvantages: more work for application developers Summary: Kernels

10.1 st Generation Microkernels

11.USENIX Summer Conference 1986 Mike Accetta , Robert Baron, William Bolosky , David Golub , Richard Rashid, Avadis Tevanian , and Michael Young Richard Rashid Lead developer of Mach Microsoft Research William Bolosky Microsoft Research Avadis Tevanian Primary figure in development of Mac OS X Apple Computer (former VP and CTO) Mach: A New Kernel Foundation For UNIX Development

12.1 st generation microkernel Based on Accent Memory object Mange system services like network paging and file system Memory via communication Mach

13.Task Basic unit of resource allocation Virtual address space, communication capabilities Thread Basic unit of computation Port Communication channel for IPC Message May contain port capabilities, pointers Memory Object Mach Abstractions

14.No kernel-based file system Kernel is just a cache manager Memory object AKA “paging object” Pager Task that implements memory object External Memory Management

15.E.g. consistent network shared memory Each client maps X with shared pager Use primitives to tell kernel cache what to do Locking Flushing Lots of Flexibility

16.External data manager failure looks like communication failure E.g. need timeouts Opportunities for data manager to deadlock on itself Problems of External Memory Management

17.Does not prohibit caching Reduce number of copies of data occupying memory Copy-to-use, copy-to-kernel More memory for caching “compiling a small program cached in memory…is twice as fast” I/O operations reduced by a factor of 10 Context switch overhead? Performance

18.2 nd Generation Microkernels

19.SOSP 1997 Herman Hartig , Michael Hohmuth , Jochen Liedtke , Sebastian Schonberg, Jean Wolter Herman Hartig Prof at TU Dresden Jochen Liedtke Worked on microkernels Eumel , L3 Is the “L” in L3 and L4 The Performance of Micro-Kernel-Based Systems

20.Evaluates the L4 microkernel Ports Linux to run on top of L4 Suggests improvements The Performance of Micro-Kernel-Based Systems

21.2 nd generation microkernel Similar to Mach Started from scratch, rather than monolithic Even more minimal Uses user-level pages Tasks, threads, IPC L4

22.Linux source has two cleanly separated parts Architecture dependent Architecture independent In L4Linux Architecture dependent code is modified for L4 Architecture independent part is unchanged L4 not specifically modified to support Linux L4Linux

23.Linux kernel as L4 user service Runs as an L4 thread in a single L4 address space Creates L4 threads for its user processes Maps parts of its address space to user process threads (using L4 primitives) Acts as pager thread for its user threads Has its own logical page table Multiplexes its own single thread (to avoid having to change Linux source code) L4Linux

24.The statically linked and shared C libraries are modified Systems calls in the lib call the Linux kernel using IPC For unmodified native Linux applications, there is a “trampoline” The application traps Control bounces to a user-level exception handler The handler calls the modified shared library Binary compatible L4Linux – System Calls

25.A Translation Look-aside Buffer (TLB) caches page table lookups On context switch, TLB needs to be flushed A tagged TLB tags each entry with an address space label, avoiding flushes A Pentium CPU can emulate a tagged TLB for small address spaces A Note on TLBs

26.Compared the following systems Native Linux L4Linux MkLinux (in-kernel) Linux ported to run inside the Mach microkernel MkLinux (user) Linux ported to run as a user process on top of the Mach microkernel Performance - Benchmarks

27.Performance - Microbenchmarks

28.Performance - Macrobenchmarks

29.L4Linux is 5% - 10% slower than native Linux for macrobenchmarks User mode MkLinux is 49% slower (averaged over all loads) In-kernel MkLinux is 29% slower (averaged over all loads) Co-location of kernel is not enough for good performance Performance - Analysis