操作系统分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 概述

操作系统对硬件功能进行了扩充,统一管理和支持各种软件的运行,其他软件则建立在操作系统之上。因此,操作系统在计算机系统中占据着非常重要的地位,它不仅是硬件与所有其他软件之间的接口,而且任何计算机都必须在其硬件平台上加载相应的操作系统之后,才能构成一个可以协调运转的计算机系统。

随着开放源代码方式的兴起,在操作系统方面除了Linux系统之外,Sun公司的Solaris系统也全部开放了源代码。微软公司也在2006 年开放了Windows操作系统的部分源代码,该系统命名为WRK(Windows Research Kernel)。下面将简单介绍这三个系统的基本结构。

1.1 Linux

Linux是一个开放源代码的类UNIX操作系统。最初Linux只能在PC上运行,但现在已经可以在sparc、powerPC、Alpha、mips等CPU上运行。Linux兼容POSIX标准,并且包含大量System V和BSD 4.3的功能。Linux内核的第一个版本是1991年11月在Internet上发布的。Linux内核运行在内核态,其基本功能包括进程调度和管理、主存和虚存管理、VFS和文件管理、设备驱动和管理、网络接口和通信等工作,从而实现资源抽象、资源分配和资源共享等功能。

和UNIX一样,Linux也采用单内核结构,运行时是一个大二进制映像,模块间的交互通过直接调用其他模块中的函数来实现。Linux的内核采用模块化设计,支持可动态装卸内核模块,实现了抢占式内核、支持多线程和内核线程等。

图1-1 Linux内核结构及其与应用程序和硬件的关系

图1-1展示了Linux内核结构及与应用程序和硬件之间的关系。

Linux内核具有下列基本特征:

(1)Linux内核的组织形式为单内核结构。这种结构的最大特点是内部结构简单,子系统间易于访问,因此内核的工作效率较高。同时采用模块化的结构,这有助于不同的人参与不同模块的开发。

(2)Linux支持内核线程。有许多标准的内核线程,其中有一些周期地运行来完成特定的任务(如swapd),其余一些则连续地运行,等待处理某些特定的事件(如inetd和lpd)。内核线程不会被换出,运行效率较高。

(3)Linux虚拟内存管理为不同的硬件平台提供统一的接口。因此Linux内核可以很容易地移植到一个新的硬件平台。

(4)Linux内核支持虚拟文件系统(VFS)。虚拟文件系统不仅为多种逻辑文件系统(如ext2, fat等)提供了统一的接口,而且为各种硬件设备(作为一种特殊文件)也提供了统一接口。

(5)Linux的可加载模块机制使得内核保持独立又易于扩充。该机制可以使内核很容易地增加一个新的模块(如一个新的设备驱动程序),而无须重新编译内核。同时,还可以把一个模块按需添加到内核或从内核中卸下,实现按需定制内核。

Linux内核也需要经过编译、链接之后才能运行。Linux内核的源代码将依赖于体系结构的代码和独立于体系结构的代码分离开来,其重要的源代码子目录如图1-2所示。

图1-2 Linux源代码的组织