6.828 是 MIT 的操作系统工程这门课的课程编号，同时 MIT 还开发了一个用于教学的操作系统 xv6 (x86处理器上(x即指x86)用ANSI标准C重新实现的Unix第六版(Unix V6，通常直接被称为V6))。
- Understand operating systems in detail by designing and implementing a small O/S
- Hands-on experience with building systems (“Applying 6.033”)
What do applications want from an O/S?
- Abstract the hardware for convenience and portability
- Multiplex the hardware among multiple applications
- Isolate applications to contain bugs
- Allow sharing among applications
What is an OS?
- e.g. OSX, Windows, Linux
- the small view: a h/w management library
- the big view: physical machine -> abstract one w/ better properties
Organization: layered picture
- h/w: CPU, mem, disk
- kernel: [various services]
- user: applications, e.g. vi and gcc
- we care a lot about the interfaces and internel kernel structure
What services does an O/S kernel typically provide?
- file contents
- directories and file names
- many others: users, IPC, network, time, terminals
What does an O/S abstraction look like?
- Applications only see them via system calls
- Examples, from UNIX / Linux:
fd = open("out", 1); write(fd, "hello\n", 6); pid = fork();
Why is O/S design/implementation hard/interesting?
- the environment is unforgiving: weird h/w, no debugger
- it must be efficient (thus low-level?)
…but abstract/portable (thus high-level?)
- powerful (thus many features?)
…but simple (thus a few composable building blocks?)
- features interact:
fd = open(); ...; fork()
- behaviors interact: CPU priority vs memory allocator.
- open problems: security, multi-core
My System Information
Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trusty
Start your journey !
Subscribe to drone - 以终为始，慎终如始.
Get the latest posts delivered right to your inbox