Modern Operating System 4th 中译

简介

一台现代计算机包括*1一个或更多的处理器,一些主存,磁盘,打印机,一个键盘,一只鼠标,一台显示器,网络接口,以及其他的输入输出设备。总而言之,一个复杂的系统。如果一个普通的程序员都必须理解所有的设备如何工作,恐怕没有人写的出任何代码。进一步说,管理众多设备并且高效地使用它们是一个非常有挑战性的工作。因此,计算机装有一层软件,称为操作系统,为用户(普通程序员)提供更好,更简单,更简洁的计算机系统模型,并且负责管理之前提到的所有资源。操作系统即为本书的主题。

大部分读者都使用过一些操作系统,比如Windows, Linux, FreeBSD, OS X,但是外表可以是迷惑性的。与用户交互的程序,当基于文本时通常称之为shell,使用图标时一般称为GUI(Graphic User Interface)——读作“gooey”,事实上并不是操作系统的一部分,尽管只有通过操作系统它才能完成它的工作。

Fig. 1-1是简单的结构图。硬件位于底层,包括芯片,电路板,磁盘,键盘,显示器,以及其他类似的器件。硬件层之上是软件层。大部分电脑有两种操作模式:内核模式(kernel mode)用户模式(user mode)。作为软件层最基础的部分,操作系统运行在内核模式(又称为特权模式 supervisor mode*2)。这个模式下操作系统有所有硬件的访问权限并且可以执行任何指令。其余的软件运行在用户模式,只能使用机器指令的子集。特别的,所有可能影响到计算机控制或者I/O(Input/Output)的指令不能由用户模式的程序执行。我们将会反复讨论kernel mode与user mode的的区别,它在operating system如何工作中起了重要作用。

与用户交互的程序,比如shell或者GUI,位于user mode软件的最底层。它们可以允许用户启动其他应用程序,比如Web浏览器,E-mail阅读器,或者音乐播放器。这些程序也非常依赖于operating system。

Ooperating system的位置在Fig. 1-1中标明,它运行在纯硬件之上并且为其他软件提供服务。

Operating system与正常(user mode)应用程序的重要区别是,如果用户不喜欢自己的E-mail Reader,ta可以安装其他的程序或者自己写一个作为替代。然而用户不能写他自己的时钟中断处理器*3,4,因为这是操作系统的一部分并且受硬件保护,用户不能自行更改。

然而在一些嵌入式系统中(可能没有kernel mode),或者解释系统中(比如基于Java的系统,使用解释而不是硬件来分离组件),这个重要区别可能会变得不甚清晰。

此外,在许多系统中有运行在user mode但是帮助系统或执行特权的程序。例如经常有程序帮助用户更改他们的密码。它并不是操作系统的一部分,也不运行在kernel mode,但是显然它在执行一个敏感功能并且必须被格外保护。在一些系统中这种想法走到了一个极端,以至于传统观念认为应当由operating system处理的部分功能(比如文件系统)运行在用户空间。这种系统是难以划清界限的。运行在kernel mode的部分毫无疑问地属于operating system,然而一些运行在user mode的应用程序也可以说是operating system的一部分,或者至少是与operating system密切相关。

Operating system与用户程序区别莫过于他们驻留在哪里。特别是它们巨大、复杂并且常驻内存。一个operating system(例如Windows或Linux)内核的源代码都在500万行的数量级*5。这代表每页纸打印50行,每卷1000页(比这本书大),打印所有的内核代码需要100卷——足够塞满整个书架。想象一下你得到了一份维护一个operating system内核的工作,第一天老板带你来到一书架代码前并且要求你掌握它。而这仅仅是内核,加入必要的共享库后可以突破7000万行,足够塞满10到20个书架。并且还没有包括基本的应用软件(文件浏览器,播放器等)。

所以现在应该很清楚了,为什么operating systems的生命周期特别之长——它们特别难写,写过一个后,它的主人就不愿意丢掉重写。相反,这样的operating system会使用很长时间。Windows 95/98/Me基本上是同一个operating system,Windows NT/2000/XP/Vista/7是另一个不同的operating system。对用户来说他们看起来很像是因为Microsoft确信Windows NT/2000/XP/Vista/7的图形界面与它要取代的系统很像,尤其是Windows 98 。但是Microsoft也有抛弃Winddows 98的非常棒的理由,我们将会在讲Windows的Chap. 11回到这个话题。

除了Windows,在本书中我们会用到的其他主要例子是UNIX及其变体和克隆。它也已经发展了很多年,随着版本发展,System V,Solaris和Free BSD也从原有的系统分支出去。Linux是个全新的代码库,即使它与UNIX很像并且与UNIX高度兼容。本书中我们会使用UNIX,并且在Chap. 10中了解Linux。

在本章中我们会简要地接触一些operating system概念,包括它们是什么,它们有什么历史,它们的周边,一些基本观念和operating system的结构。这里的重要话题将会在之后的章节深入讨论。


1:译者注:可能有其他配置比如多个显示器。

2:译者注:其他翻译,例如管态,管理员模式。

3:译者注:Clock Interrupt Handler,处理时钟中断。

4:译者注:在一些不完善的操作系统(比如DOS,或者一些全部程序均运行在同一个mode的嵌入式操作系统中)中依旧可以由用户改变。然而不完善的操作系统不在本书讨论之列。

5:译者注:最新的Linux内核已突破1000万行。