MIT 6.828 OverView


  • 6.828 是 MIT 的操作系统工程这门课的课程编号,同时 MIT 还开发了一个用于教学的操作系统 xv6 (x86处理器上(x即指x86)用ANSI标准C重新实现的Unix第六版(Unix V6,通常直接被称为V6))。

  • schedule

6.828 goals

  • 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?

  • processes
  • memory
  • file contents
  • directories and file names
  • security
  • 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 !