您的位置:首页 > 其它

第一章 操作系统概述(二)

2015-02-02 11:36 381 查看
1.1.2 广义的操作系统产品

在前面的内核界定中,是以运行中的状态来划定操作系统边界的,这实际上是唯一准确的界定方法,但是对初次接触内核这一概念的人而言,还是会有些抽象,下面我们尝试把这一概念与用户日常使用操作系统的经验建立一些关联,以便有一个直观的概念。

当我们使用操作系统这一术语时,实际有两种不同的语义,当我们把操作系统作为研究对象时是狭义的语义,特指内核,本书后面章节不加特别说明时采用此狭义语义;用户使用的操作系统常常是广义的语义(本书中一般使用“操作系统产品”指代这一语义),在内核之外还要包含大量应用软件提供基本的操作环境,如果仅有内核在运行,用户是完全无法操作计算机机的。操作系统产品的典型例子是一个新安装完成的系统,其主要构成部分如图1-1所示。



图1-1 操作系统产品组成

(1)操作系统内核:内核管理计算机系统中所有底层资源,屏蔽所有其他程序对硬件的直接访问,但是会以“系统调用”形式提供相应的资源访问服务,任何内核之外的软件最终都要通过内核使用系统资源。

(2)系统函数库:编程时一般不会直接使用内核提供的系统调用接口,因为直接调用需要按照内核的规定设置一些CPU寄存器的值,最后以特定机器指令触发,所以必须用汇编语言编写。正常情况下这个调用过程会经过系统函数库的封装,最终以库函数的形式提供高级语言的调用接口。系统函数库可能由不同层次的多个函数库组成,并且可能有针对不同编程语言的绑定,但是最基础的还是直接封装了操作系统内核系统调用的C库。所有的应用软件都会直接或间接调用C库,即使编程时使用的不是C语言;例如使用Java语言开发程序,最终会通过Java虚拟机来执行,而Java虚拟机所提供的各种功能都会通过调用C库中的函数最终通过操作系统内核实现。

(3)操作环境:实际是一些特定功能的应用程序集合,由于提供了用户操作计算机的基本接口而与其他的应用软件有所区别。操作环境分为两大类:命令行接口和图形用户界面接口;前者以字符界面形式提供,实现命令行接口的关键应用程序被称为shell,shell程序按行读取用户的输入,根据输入内容进行相应的内部处理或执行外部命令,从而完成用户要求的任务;后者则提供一个图形化的访问入口,用户通过鼠标或触屏等操作方式启动特定程序,从而完成用户任务。图形用户界面不是由单一应用程序实现,需要多种应用程序协调工作,例如需要“窗口管理器”实现所有窗口一致的外观呈现和公共操作,需要“桌面管理器”来呈现桌面的隐喻,在桌面上显示图标元素并响应用户的点击操作。

(4)应用软件:特指操作系统产品自带的一些应用软件,不像操作环境相关的应用软件那么重要和关键,这些软件可以实现用户常常需要的一些特定功能,会比较容易地找到同等功能的其他软件进行替换。这些应用软件被归入到操作系统产品中是因为它们随操作系统捆绑销售,不需要额外获取安装。不同时期操作系统自带软件集合会有一些差别,例如早期Windows是不带IE浏览器的,后来成为标准配置部分,之后又曾经因反垄断诉讼被裁定在欧洲销售版本中不准捆绑IE浏览器,最终发现用户无法接受而不了了之。IE浏览器就有很多可替代的产品,如Firefox、Chrome等。

介绍广义的操作系统产品,目的之一是希望读者对于操作系统的产品化有一些概念,虽然本书主要讲解内核,但应该知道一个操作系统产品要想在市场上得到成功,内核在其中只占很小的一部分。以本书会大量引述的Linux系统为例,其实开源软件界一直有呼声要求使用规范的名字——GNU/Linux,因为Linux本身仅仅是内核,作为操作系统产品,其中包含的大量程序来自开源的GNU项目,包括系统函数库、开发工具、shell、大量工具软件等等,这些程序的总量远远超过Linux内核。如果读者对Linux有所了解,大概会听说过一些Linux发行公司,如Redhat、Ubuntu等,这些公司基本不直接进行内核开发,其数百人甚至上千人的技术团队主要从事的都是外围软件的开发,或者是不同开源软件部件之间的适配和打包。

如前所述,内核的界定是根据运行态区分的,所以这是一个动态概念;如果想要找到内核的静态对应物,可以从一个已安装的操作系统中查找特定文件。例如,Linux系统下,/boot/目录下vmlinuz开头的文件就是压缩过的内核映像文件;Windows下内核对应的文件不止一个,默认情况下在C:\Windows\System32目录下可以找到相应文件:ntoskrnl.exe或者ntkrnlpa.exe对应NT内核,hal.dll对应硬件抽象层,win32k.sys对应Win32内核。观察内核对应文件的大小,能对内核在操作系统产品中所占比重有个定性的认识:这些文件大概都是在10个MB以下,即使考虑这些映像文件有压缩、一些内核模块在其他地方存放,但是相对一个新安装操作系统几个GB的空间占用,内核在其中所占比例还是很小的。

一些读者可能会有这样的疑问:既然内核是动态界定的,那么运行中的内核有多大呢?或者说内核会占据多少物理内存呢?这个问题是无法明确回答的,因为内核占据的物理内存空间是动态变化的,如果你的计算机配备的内存多,内核可能会多占一些,通过增加内核中的缓冲区提高设备访问性能;如果系统负载持续增加,内核又可能会释放一些物理内存给应用程序使用。可以确定的是任何一种内核都会有最低物理内存空间要求,低于此配置则内核无法正常工作,但具体的最低配置要求随操作系统以及版本而异。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: