形式:闭卷笔试。内容:并发编程、进程管理、进程的地址空间。
背景回顾:整个计算机系统世界的 “创建” 从 CPU Reset 开始,Firmware 加载操作系统内核代码,操作系统成为状态机的管理者,初始化第一个进程,从而成为一个中断处理程序和系统调用执行者。《操作系统》课程的很重要部分就是操作系统中的对象和操纵这些对象的 API——我们已经学习了 fork, execve, exit, 和 mmap (munmap/mprotect)。如何用这些 API,以及更多的 API,实现丰富的应用程序?
本讲内容:一些操作系统 API 的补充;UNIX Shell 实现。
通过 freestanding 的 shell,我们阐释了 “可以在系统调用上创建整个操作系统应用世界” 的真正含义:操作系统的 API 和应用程序是互相成就、螺旋生长的:有了新的应用需求,就有了新的操作系统功能。而 UNIX 为我们提供了一个非常精简、稳定的接口 (fork, execve, exit, pipe ,...),纵然有沉重的历史负担,它在今天依然工作得很好。
Freestanding shell 很好地揭开了操作系统上应用程序的 “真面目”;理解 sh.c (包括使用正确的工具) 是非常重要的,因此我们特别在此一提。