再看《操作系统》

缘起

上学的时候我总是看不明白《操作系统》这门课程,我不明白我是这门课程究竟有什么作用,现在想来不明白也是自然的了,那时一个星期能见到操作系统的日子也不超过一天,哪能有什么感觉。毕业几年后,天天与计算机打交道时间长了,有不少东西渐渐也能明白了。我想花些把以前学过的东西整理一下,便有了此篇。

1,什么是操作系统?

一台可以供我们上网,玩游戏的计算机其内部构造是复杂的。我们怎么样让这些硬件配合起来,以方便让我们“玩转”?答案是:借助操作系统(Operating System)。

要说清操作什么是什么,首先得看自己是站在什么样的立场。是操作系统本身,还是用户。把操作系统比喻成一个古时富贵人家的大管家,这个隐喻(Metepher)还是比较贴切的。从管家的角度来看,他需要做的工作比较繁琐,管理家里的各类大小事宜。从老爷(主子)的角度来看,有了大管家可以提高办事效率,不必什么事都事必躬亲,还有就是方便。对于那些老爷的来说没有管家的日子肯定是苦的要死 :-)

将上面管家那个隐喻延伸一下,就可以得到经典的关于什么是操作系统的定义:操作系统是管理计算机资源,提高资源利用率,方便用户的软件。

2,操作系统的层级。

2.1 操作系统在计算机系统中的层级。

操作系统也是软件。但操作系统这种软件离硬件更为接近。整个计算机系统也是分层的,这个跟思想跟OSI网络模型一致:底层封装细节,向上层提供透明的服务。上层不知道底层是什么,只是索取底层的服务。我们来看张图:

图中我们可以清楚地看到操作系统所处的层级。通常应用程序没有办法直接控制硬件资源,比如你在应用程序用使用COM接口,控制信号灯的打开或关闭。表面上你在控制硬件,其实你在呼叫操作系统,让操作系统来控制硬件——也就是说你几乎绕不开OS,直接从User Application来访问Comupter Hardware。足可见操作系统对资源的管控能力了。

2.2 操作系统本身的层级划分。

操作系统足够复杂,复杂到操作系统本身也采用的分层的思想来构建。而具体的构建要看不同的操作系统,但总体的思想大致相同。这就是所谓的“规范(Specification)”和“实现(Implementation)”。

我们再来看一张图:

从图中,我们可以看见操作系统的实现细节。较底层的硬件抽象层(Hardware Abstraction Layer)和驱动程序层。中间的内核层(Kernel)和文件系统层。较为上层的内置库(Libraries)和系统应用程序(System Application)。

注:这里的内核层,其实是Process Management,Virtual Memory,I/O Management等内核功能的总称。

作为比较,我们来看看我们常见的NT系统的内部结构图:

可见NT操作系统也采用分层式的结构。包括较底层的HAL,Device Driver。中间层的File System和GDI Interface。上层的System Service, System Interface等。

3,操作系统需要做些什么?

作为一个大管家,操作系统要做哪些工作呢?我们罗列一下:

为了完成上面的工作,操作系统会面临一些问题,针对这些问题必须作出一些决策,给出尽可能合理的解决方案,这就是《操作系统》这门课程所讲述和研究的内容。

4,到哪了?往哪去?

通过介绍,我们知道了操作系统的位置,又知道了它又是由哪些部分组成的,最后我们列举出了它要完成的工作。接下来我们依次看看操作系统所做的工作,从处理机管理开始。

这便是我们第二篇讨论的内容。

@ 2009-12-24 08:00

Comments:

Sharing your thoughts: