1.2 UNIX体系结构
从严格精确意义上来说,一个操作系统能被定义为一个这样的软件:控制计算机的硬件资源并且提供一个程序可以运行的环境。一般地,我们把这样的一个软件叫做kernel,因为它相对小并且处于整个环境的核心位置。图1.1表示出了UNIX系统的体系结构。
(关于图1.1的说明)
kernel与外界的接口是一个叫做系统调用(system calls)的软件层。普通函数库(Libraries of common functions /library routines)建立在这个接口(即系统调用)之上,但是应用程序(applications)既可以直接使用普通函数库,也可以直接使用系统调用软件层。Shell是一个特殊的应用程序,它提供一个接口用来运行其它的应用程序。从一种广泛的角度来讲,一个操作系统是kernel这样的软件和一些其它的软件组成的,这里说的“一些其它的软件”指的是能够makes a computer useful and gives the computer its personality的软件。比如系统实用程序(system utility:提供基本服务和操作的一种程序),应用程序,shell,普通函数库(libraries of common functions)等等。
例如,Linux是GNU操作系统使用的kernel(这里的Linux指的是严格精确意义上的操作系统,而GNU操作系统指的是广泛意义上的操作系统)。一些人把这样的操作系统叫做GNU/Linux操作系统,但是更多的只是简单的被叫做Linux。虽然这样的叫法从严格精确的意义上讲可能是错误的,但却是可以理解的,给了“操作系统”这个词双重的意义,当然这样的叫法也有更简洁的优点。
--------------------------------------------------
关于该节的一些问题:
首先该节是我认为很经典的一节,至少对我来说,该节讲明白了几个很重要的概念
1. 操作系统(operating system):该节从两种意义上讲了这个概念,就是in strict and broad sense。区分出了严格精确意义和广泛意义上的操作系统概念。指出kernel指的就是严格精确意义上的操作系统,并且kernel只干两件事。
2. 图1.1是很经典的一个UNIX体系结构图,从图示看,
1)只能通过系统调用与kernel打交道。
2)应用程序的3个对话对象:shell,系统调用软件层,普通函数库
3.
strict sense : os == kernel
1.controls the hardware resources of the computer
2.provides an environment under which programs can run
broad sense : os == kernle/os in a strict sense + all the other software
here "all the other software "is one can makes a computer useful and gives the computer its personality.
问题:已经发信。