操作系统思考中文版
在许多计算机科学的课程中,操作系统都是高级话题。学生在上这门课之前,它们已经知道了如何使用C语言编程,他们也可能上过计算机体系结构(组成原理)的课程。通常这门课的目标是让学生们接触操作系统的设计与实现,并带有一些他们未来在该领域所研究的隐含假设,或者让他们手写OS的一部分。
这本书为一些不同的读者准备,并且具有不同的目标。我为欧林工学院中一门叫做软件系统的课程编写了它。
多数学生在学完Python编程之后上了这门课,所以目标之一就是帮助他们学习C语言。对于课程的这一部分,我使用了O’Reilly的《Head First C》(中译本为《嗨翻C语言》)作为补充。
我的一些学生从没有写过操作系统,但是它们中许多人都会使用C语言编写底层的应用,或者与嵌入式打交道。我的课程包括操作系统的要素、网络、数据库、和嵌入式系统,而且强调了程序员需要知道的一些话题。
这本书并不假设你学过计算机体系结构。在讲解过程中,我会解释所需的东西。
如果这本书成功了,它会带给你对程序运行中所发生事情的深入理解,并且你可以使它们运行速度更快以及更加可靠。
第一章解释了编译语言和解释语言的一些差异,以及编译器工作原理的一些洞察。推荐阅读《嗨翻C语言》的第一章。
第二章解释了操作系统如何使用进程来保证运行中的程序不相互影响。
第三章解释了虚拟内存和地址翻译。推荐阅读《嗨翻C语言》的第二章。
第四章有关文件系统和数据流。推荐阅读《嗨翻C语言》的第三章。
第五章描述了数值、字母和其它值如何编码,同时展示了按位运算。
第六章解释了如何使用动态内存管理,它如何工作。推荐阅读《嗨翻C语言》的第六章。
第七章有关缓存和存储器层次结构。
第八章有关多任务和调度。
第九章有关POSIX线程和互斥体。推荐阅读《嗨翻C语言》的第十二章,和《Little Book of Semaphores》的第一和第二章。
第十章有关POSIX条件变量和生产者/消费者问题。推荐阅读《Little Book of Semaphores》的第三和第四章。
第十一章有关POSIX信号量和C中的实现。