Chinaunix首页 | 论坛 | 博客
  • 博客访问: 311789
  • 博文数量: 48
  • 博客积分: 4510
  • 博客等级: 中校
  • 技术积分: 556
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 18:19
文章分类

全部博文(48)

文章存档

2012年(1)

2011年(9)

2010年(1)

2009年(12)

2008年(25)

分类:

2009-03-17 00:53:13

Operating System: Design and Implementation(3rd) 读后


Operating System: Design and Implementation(3rd) 是一本介绍 OS 原理和实现的书,其中介绍的实现是 MINIX 3。作为一本教科书和入门书,此书的亮点在于其对 microkernel OS MINIX 3 的介绍。如果你对其他 microkernel 结构的 OS 的实现比较熟悉,那么此书对你恐怕就没有太大价值。但如果你只是熟悉一些 Unix-like 类的 monolithic kernel,例如 Linux 的实现,而又对 microkernel 的实现比较感兴趣,那么此书对 MINIX 3 的描述还是相当有参考价值的。

首先,说说书的结构,及不同情况下的阅读方式。

全书共六章,主要内容集中在第 2 ~ 5 章,各章的结构都是第一部分先介绍基本原理,然后第二部分是 MINIX 3 实现的描述,最后第三部分是 MINIX 3 实现代码的剖析。老实说,此书对 OS 原理的介绍并无什么特别出彩的地方,如果你对实现部分兴趣不是太大,完全可以只看各章的第一部分,然后浏览下第二部分,第三部分直接略过。嘿,既然对实现兴趣不大,为嘛不换本书呢?个人推荐 Operating System Concepts (8th/7th) :-D

当然,如果你对 OS 原理已相当熟悉,那么就可以直接跳到各章的第二部分开始看,然后结合代码看第三部分。

其余两章,第一章是 OS 概念及历史的介绍,包括 system call 的列表,对 Unix-like 系统 system call 列表不熟悉的可以看下;第六章是对扩展阅读材料的介绍以及文献列表。


其次,说说 MINIX 3.

1. MINIX 3 本身是个 microkernel 结构的 OS,其结构如下: 

        ---------------------------------------------------------  -+
        |       User process ...                                |   |
        ---------------------------------------------------------   | -- User mode
        |       Servers (PM, FS, ...)                           |   |
        ---------------------------------------------------------   |
        |       Device driver (Disk driver, TTY driver, ...)    |  -+
        ---------------------------------------------------------  -+
        |       Kernel  | Clock task | System task              |   | -- Kernel mode
        ---------------------------------------------------------  -+

Kernel 实现了进程调度、中断处理、消息传递,以及一些硬件相关的操作,例如 I/O 端口的访问、寄存器的操作,等等。另外,处理时钟中断的 clock task,作为 kernel 和外界接口的 system task 也作为独立的进程运行于内核空间。

其他的像 device driver, 各种 server (如进程管理器 PM,文件系统 FS,等等)都运行于用户空间,虽然它们有一些用户进程所不具有的特权。

2. MINIX 3 实现了比较完整的 POSIX

    MINIX 3 对 POSIX 的实现比较完整,通过研究它的代码,可以清楚的了解一些 system call 是如何实现的。但是注意,一些 system call,例如 fork, exec, 其实现是和 OS 其他部分,尤其是内存管理,紧密相关的。了解 MINIX 3 的实现并不一定会对了解其他系统,例如 Linux 的实现有太大的帮助。

    另外,通过阅读 FS 的实现,对 FS 本身也可以有一个比较深入的了解。遗憾的是书中并没有对一些特殊文件,例如 /dev/tcp 的操作做详细的介绍。

3、书中描述的 MINIX 3 的一些不足

    书中描述的 MINIX 3 有一个严重不足就是其内存管理过于简单。虽然这种简单自有其道理(例如内存很大,例如 MINIX 3 预期主要运行在一些资源受限型系统中,不需要太复杂的内存管理,等等),但它对把 MINIX 3 作为一个通用 OS 来使用还是带来了一些问题。为了弥补内存管理过于简单带来的问题(堆和栈的总空间在可执行文件的头部指定,加载时一次指定且不能变化),甚至专门引入了 chmem 这个命令,用来修改可执行文件头部指定的占用空间大小信息。

    其次,由于 MINIX 3 不支持 kernel thread,因此在本书中对 thread 也没有太多的描述。

    另外,MINIX 3 的文件系统似乎也有些过于简单。

    据称,在最新的 MINIX 3 代码中已实现了 virtual memory.
阅读(3039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~