Can We Make Operating Systems Reliable and
Download
Report
Transcript Can We Make Operating Systems Reliable and
Can We Make Operating Systems
Reliable and Secure?
Andrew S. Tanenbaum, Jorrit N. Herder, and Herbert Bos
Vrije Universiteit, Amsterdam
May 2006
Group 36
9962224 胡品捷
9962230 江彥勳
1
Outline
Introduction
Armored Operating Systems
L4 Microkernel
Multiserver Operating Systems
Language-Based Protection
Conclusion
2
Why we need more reliable and secure?
Most computer users are “normal people”
Less problem
More Convenient and Stable
3
Unreliable
Linux kernel
2.5 million lines of code
Windows xp kernel
Huge
Poor fault isolation
5
million lines of code
Example :
6-16 bugs / 1,000 lines of executable code
2-75 bugs / 1,000 lines of executable code
Linux kernel
15000 bugs totally
Windows xp kernel
30000 bugs totally
4
Procedure
1
Kernel
⇧
Fault isolation
• Virus
• Worm
Procedure
2
Procedure
n
5
Armored Operating Systems
Nooks – improve the reliability of OS
Focus on making device divers less dangerous
Goals:
• Protect the kernel against driver
failures.
• Recover automatically when a driver
fails.
• Do all of this with as few changes as
possible to existing drivers and the
kernel.
6
Isolation
Main tool : virtual memory paging map
Page 1
Driver
Running
Page 2
Page 3
Page 4
Read-only
7
Paravirtual Machines
Allow two or more OS
Good fault isolation
Problems can’t spread from one machine to another
8
L4 Microkernel
University of Karlsruhe
Linux -> L4 Linux
9
Linux -> modify -> Paravirtualization
Multiserver Operating Systems
Multiserver architecture
Features
Separate instruction and data spaces
10
Language-Based Protection
New protect system - Singularity
New type safe language – Sing#
Based on C#
Proction : Algol compiler’s “dangerous” code
Idea : Microsoft Research
11
Conclusion
Nooks – each driver individually wrapped in software jacket
Paravirtual machine
– moves the drivers to one or more machines
distinct from the main one
Multiserver – runs each driver and OS component in a separate process
Singularity
– uses a type-safe language
12