操作系统原理与Linux实例设计(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-27 08:11:16

点击下载

作者:蒲晓蓉,周瑞,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

操作系统原理与Linux实例设计(第2版)

操作系统原理与Linux实例设计(第2版)试读:

前言

计算机技术的发展不仅极大地促进了科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。因此,计算机教育在各国备受重视,具备计算机知识与能力已成为21世纪人才的基本素质之一。

计算机操作系统是现代计算机系统中的核心基础系统软件,操作系统设计原理与实现技术是计算机专业人员必须掌握的基本知识。操作系统经典原理不仅适合于具体操作系统的实现,同时也对应用程序设计具有很好的指导意义。因此,学习和研究操作系统的一般原理,了解操作系统涉及的关键术语、数据结构、经典算法,对于计算机专业知识的构建是非常必要和重要的。然而,单纯的原理介绍太过于理论化,结合一个具体操作系统实例进行分析,将有助于对操作系统原理的理解,提高系统级应用程序设计能力。

本书从原理性和实用性出发,以现代操作系统原理为基础,较深入地介绍Linux操作系统中的部分功能实现与应用编程技术。全书共6章,第1章为概述,第2章详细地分析多进程的并发控制,第3章介绍现代操作系统的存储管理技术与Linux的存储实现,第4章分析输入/输出设备管理及Linux的设备管理技术,第5章介绍文件管理系统的原理及Linux的虚拟文件系统实现,第6章介绍嵌入式操作系统。

本教材基于操作系统的一般原理,结合Linux操作系统关键功能模块的实现,既有理论基础的支撑,又配合实际操作系统实例分析。通过学习本书内容,读者可以:

● 系统了解计算机操作系统的一般原理;

● 认识操作系统的各大功能模块;

● 掌握计算机操作系统的经典算法和数据结构;

● 以Linux操作系统为例,学习如何编程实现操作系统的具体功能模块;

● 借鉴操作系统的原理和算法,指导计算机应用程序的设计和开发。

本书语言简明、通俗易懂,具有很强的专业性、技术性和实用性。本书是作者在对计算机专业和软件专业学生进行多年计算机操作系统教学的基础上逐年积累编写而成的,力求读者能利用操作系统的基本原理,理解和解释相应的操作系统实例。然而,众所周知,每一个操作系统实例的具体实现都是十分复杂的,且源于基本原理,又在基本原理的基础上进行了很大的发展和改进。本书注重操作系统通用原理的介绍,对实例分析部分仅仅是一个引入,有兴趣的读者还需要参考大量的文献,深入了解一个操作系统的实现。本书每一章都附有一定量的习题,供学生课后练习以巩固所学知识。本书提供教学用多媒体电子课件和习题解答,请登录华信教育资源网(http://www.hxedu.com.cn)注册下载。

本书可作为计算机专业和软件专业本科以及硕士研究生的计算机操作系统结构分析课程教材,也可供相关领域的工程技术人员学习和参考。

本书中关于操作系统原理部分由蒲晓蓉编写,李玉军负责第1章Linux操作系统简介、Linux系统调用分析与设计、第4章Linux的设备管理和第5章Linux的文件系统等内容的撰写,薛瑞尼负责第2章Linux的进程管理和第3章Linux的存储管理等部分内容的撰写,周瑞负责第6章嵌入式操作系统的撰写,全书由蒲晓蓉统稿。本书第1版的Linux实例部分由刘丹编写,为本次改版打下了良好的基础,在此表示感谢!本书的编写参考了大量近年来出版的相关技术资料,吸取了许多专家和同仁的宝贵经验,在此向他们深表感谢!

由于笔者经验和知识等方面的不足,加之时间仓促,最后的成品未能达到笔者预期的效果,书中难免存在错误和不足,敬请读者和专家批评指正。

编 者

于电子科技大学

2014年6月第1章 概述1.1 计算机系统资源与操作系统

计算机系统资源包括硬件资源和软件资源两大类,其中,硬件资源是计算机的基础,为计算机软件提供了运行平台;计算机软件进一步丰富了计算机硬件的功能,为用户提供使用计算机的环境。图1.1示意了计算机系统资源的结构。底层是计算机硬件,由处理器、内存、输入/输出设备和系统总线4个部分组成。其中,处理器控制计算机的操作,执行数据处理功能。对于单处理机系统,它通常称为中央处理器(处理机)。内存用于存储数据和程序,由于内存的数据不能被永久保存,因此常称为随机存储器(RAM)或主存储器。输入/输出设备包括外存(磁盘、磁带、光盘等)、键盘、显示器、打印机、绘图仪以及通过I/O接口与外界通信的设备。处理机和内存是计算机运行的核心部件,二者合称为“主机”。系统总线为处理器、内存和输入/输出设备间的通信提供一些结构和机制。图1.1 计算机系统资源的结构

硬件之上是操作系统。操作系统是计算机必须配置的最基本的系统软件,是其他系统软件及应用程序的基础。其主要功能之一就是隐藏底层硬件具体操作的复杂细节,为用户提供方便使用计算机的环境及程序设计和执行环境。例如,用户可以直观地向计算机发出“保存文件(Save)”命令,而不必关心“磁头移动、查找空闲磁盘块、分配磁盘空间”等操作细节。这一切烦琐的操作细节全由操作系统控制相应的部件完成,使用户轻松、方便地使用计算机。

在操作系统之上是其他系统软件,主要包括命令解释器(Shell)、窗口(Windows)系统、编译器、编辑器及其他某些独立于应用的程序。它们通常由计算机厂商提供,而不是操作系统的组成部分。操作系统专指特权保护模式下运行的软件,它受硬件保护,且不允许用户修改。该运行模式又称为核心态(kernel mode)或管态(supervisor mode)。编译器、编辑器及应用程序等运行在较低的保护模式下,该模式称为用户态(user mode)。

系统软件之上是应用软件,这些软件可以是购买的产品,也可以由用户自行开发,它们用来解决特定的问题,如字处理、表格处理、工程计算、数据库管理、电子邮件收发或者电子游戏等。

可见,操作系统是计算机硬件和其他软件及计算机用户之间的联系纽带。如果没有操作系统,用户几乎是无法使用计算机的。那么,操作系统究竟是什么?对于现代操作系统,人们常用以下四种观点来描述:用户环境的观点、虚拟机的观点、资源管理的观点和作业组织的观点。

1.用户环境的观点

从图1.1可见,计算机的用户大体可以分为终端用户、程序员和系统设计者三类。除操作系统设计者需要直接面对计算机硬件以外,一般用户包括终端用户和程序员都工作在操作系统之上。用户环境观点认为操作系统是计算机用户使用计算机系统的接口(Interface,也称为界面),它为计算机用户提供了方便的工作环境。用户利用操作系统为他们提供的各种服务、功能接口及系统调用等来使用计算机系统及其各类系统资源,而不必知道各种系统资源的细节和控制过程。操作系统为计算机用户提供了两种接口,即用户接口(User Interface,也称为命令接口)和程序接口(即操作系统提供的系统调用的集合,也称为应用编程接口,Application Programming Interface,API)。终端用户通过鼠标、键盘等使用操作系统提供的用户接口。程序员利用操作系统提供的程序接口设计应用程序,这一类程序员常称为系统程序员,他们基于操作系统进行程序设计,如基于UNIX或Windows、Linux程序设计等。还有一类程序员称为应用程序员,他们利用操作系统之上的系统工具设计应用程序,通过系统工具获得操作系统的服务。用户通常以使用者或程序员的角度评判一个操作系统,评价标准一般包括使用方便性、稳定性、安全性、性价比高低等,这些也是推动操作系统发展的关键性因素。

用户可以通过这样几种方式使用操作系统:

① 直接使用键盘命令或Shell命令语言。

② 利用鼠标器点击窗口中的图标,以执行相应的应用程序,如Windows操作系统的图形用户接口(GUI)。

③ 调用操作系统内部功能模块,即系统调用接口。这些接口和各种应用程序为用户开发和运行应用软件提供了便利的环境和手段。

操作系统的发展过程也是用户界面不断改进的过程。人机界面问题一直都是用户和系统设计者十分关注的问题。操作系统用户界面已经从字符界面、菜单界面、窗口界面发展到目前的图形界面和多媒体界面,智能、自然的人机界面是将来的一个发展方向,目前已日益成为领域研究热点。

2.虚拟机的观点

虚拟机(Virtual Machine)的观点认为操作系统是建立在计算机硬件平台上的虚拟机器,它为应用软件提供了许多比计算机硬件功能更强或计算机硬件所没有的功能。虚拟机的观点是基于程序设计人员的观点,也称为扩展机器的观点。安装有操作系统的计算机极大地扩展了原计算机的功能,把用户面对的一个包含有各种硬件部件的计算机系统的操作和使用由复杂变得简单,从低级操作上升为高级操作,把基本功能扩展为多种功能。

操作系统在虚拟机中充当管理员和协调员的角色,管理计算机的处理器、存储器、时钟、磁盘、网络接口以及打印机等硬件设备,以及计算机中文件的存储、读/写等,并协调多任务、多进程之间的运行。设想在一台计算机上运行的3个程序同时试图在一台打印机上输出计算结果,如果控制不当,那么可能头几行是程序1的输出数据,接下来几行是程序2的输出数据,然后又是程序3的输出数据,等等,最终打印结果显然不是用户所需要的。为了避免这种混乱,操作系统可以将打印输出首先缓冲到磁盘上,然后逐个打印每个输出结果。当前一个打印任务完成以后,操作系统再启动下一次打印任务,将那些暂存在磁盘上的输出结果送到打印机打印,同时其他程序可以继续运行,产生新的输出结果,而这些程序并不知道它们的输出有没有立即送至打印机。

操作系统虚拟机是逻辑上的概念,它不是一台单独的机器,而是与计算机硬件紧密结合在一起的,在用户面前呈现的是一台比裸机功能丰富、操作简单的高级计算机。一台硬件配置完全相同的计算机,可以配置不同的操作系统,用于不同的环境。例如,一台硬件配置相同的个人计算机可以配置Windows操作系统及相关应用程序,用于文字处理或管理数据库;也可以配置实时操作系统,用于工业控制;或者配置多用户分时操作系统(如UNIX),可以使多人同时使用该计算机;还可以配置网络操作系统,管理网络资源等。可见,操作系统虚拟机不仅可以扩充系统功能,甚至还能“扩充”计算机数量,使多个用户同时使用一台计算机,每个用户都感觉自己独占该计算机。后一种操作系统即是本书介绍的重点,内容涉及如何实现多个任务同时执行以及实现这类操作系统时所遇到的各类问题及解决技术。

3.资源管理的观点

资源管理观点认为操作系统是计算机系统中各类资源的管理者,它负责分配、回收以及控制系统中的各种软、硬件资源。资源管理的观点是目前对操作系统描述的主要观点。本书将按照资源管理的观点介绍操作系统的原理,了解操作系统如何管理系统资源。

当一台计算机(或网络)有多个用户时,由于用户间可能相互影响,所以管理和保护存储器、I/O设备以及其他设备的需求随之增加。而且用户往往不仅需要共享硬件,还要共享信息(文件、数据库等)。此时,操作系统的首要任务是跟踪资源的使用状况、满足资源请求、提高资源利用率,以及协调各程序和用户对资源的使用冲突。资源管理的主要功能包括:(1)监视资源。监视系统资源的使用情况,包括系统中各类资源的总数,资源的分配状态(已分配或未分配),资源的使用状态(正在被使用或空闲),谁在使用,统计资源的使用历史,等等。(2)分配资源。处理对资源的使用请求,调解请求中的冲突,确定资源分配策略。当多个进程或者多个用户竞争某个资源时,根据资源分配的条件、原则和环境,决定把资源分给谁,分配多少资源,何时分配资源(是立即分配,还是暂缓分配)等。同时,记录资源分配情况,更新相应的数据结构和表格的内容。(3)回收资源。当使用者不需要某资源时,系统将对该资源进行处理。如果是可重复使用的资源,则进行资源回收,更新相应的数据结构和表格的内容,以备再次使用。(4)保护资源。系统需要保护资源,防止它们被有意无意地破坏。防止非授权的操作或非法用户的访问。例如,防止用户非法修改系统数据。在多用户系统中,要保护每个用户的数据及程序,防止彼此间的干扰和冲突。允许多个用户使用共享资源,并对共享资源进行保护。

4.作业组织的观点

现在很少有计算机用户知道操作系统中作业(JOB)这个概念,然而它曾经被广泛地使用。随着个人计算机的出现和普及,作业逐渐被新的名词取代。目前,在巨型机和大型服务器上,作业的概念仍然存在。在这样的服务器上(称为主机)安装了能支持多个用户程序运行的操作系统,用户通过与主机相连的前端机(一般为普通工作站或PC)以批文件方式提交作业,请求主机逐个运行。主机操作系统负责组织、协调各个作业的运行,报告执行结果或错误信息。专门的作业控制软件将作业批量地提交给主机,有效减少了作业间切换的人工干预,大大提高了系统的工作效率。这种工作方式有利于有效利用造价高且性能强大的主机资源。

由于主机系统中存在多道程序、程序间并发执行和共享资源,操作系统必须对用户作业和任务进行管理,组织并控制系统工作的流程,建立相关的数据结构、操作模式和管理程序。随着操作系统的发展,根据系统工作的层次和并发控制程度,在操作系统中引入了任务、进程、线程及对象等概念,操作系统需要对它们进行组织和管理,我们将在后续章节中详细讨论这些概念及其原理。

综上所述,操作系统对计算机用户而言是一个用户环境,一个工作平台,是人与机器交互的界面。对系统设计者来说是一种具有强大功能的系统资源管理器,一种包含有各种数据结构和算法的集成式软件系统。据此,我们可以把操作系统定义为:操作系统是计算机系统中的一个系统软件,管理和控制计算机系统中的硬件和软件资源,合理地组织计算机的工作流程,以便有效利用这些资源为用户提供一个功能强、使用方便的工作环境,从而在计算机与用户之间起到接口的作用。1.2 操作系统的发展1.2.1 推动操作系统发展的关键因素

操作系统的形成与发展经历了漫长的时期。自20世纪50年代中期第一个简单批处理操作系统诞生以来,随着计算机硬件的发展,操作系统得到了迅猛的发展。20世纪60年代中期产生了多道程序批处理系统,不久又出现了基于多道程序的分时系统。20世纪80年代因为微机和计算机局域网的迅速发展,形成并发展了微机操作系统和网络操作系统。

那么,是什么力量推动着操作系统的发展呢?这个问题可以归结为以下几个方面。

1.计算机硬件升级和新硬件的出现

计算机硬件是操作系统运行的基础,硬件的发展推动着操作系统的发展。例如,字符界面终端发展到图形用户终端,后者允许用户通过屏幕上的窗口同时查看多个应用程序,这就要求操作系统提供更高级的支持。存储管理方面,当分页(Paging)硬件机制出现以后,操作系统也需要支持分页管理技术,从而解决了分区管理中存在的问题(后面的存储管理部分将有介绍)。

2.提供新的服务,方便使用

推动操作系统发展的关键因素之一是为了满足用户不断增长的要求。方便使用是用户最广泛的需求,从批处理系统到分时系统,人机交互环境得到了极大的改善,用户使用计算机更加直接、方便。个人计算机操作系统如Windows系列增加了“即插即用”功能,同样是为了满足用户对多种计算机外设的使用需要。

3.提高计算机资源利用效率

在计算机发展的初期,计算机硬件资源特别昂贵,如何有效利用计算机的各种资源是研究和改进操作系统的一个非常重要的目标。所以,出现了批处理操作系统和多道程序设计技术。

4.更正软件错误

任何一种软件(包括操作系统)都不可避免地存在一些错误和漏洞,在使用一段时间以后发现了错误,就需要进行更正。所以,研发操作系统的公司常常需要发布“补丁”程序或升级操作系统,甚至开发新的操作系统。

5.计算机体系结构的发展

计算机体系结构的发展也是推动操作系统发展的一个关键因素。单处理机操作系统发展到多处理机操作系统,是由于计算机体系结构由单处理机系统发展到了多处理机系统。当分布式系统和计算机网络出现以后,相应地又出现了分布式操作系统和网络操作系统。1.2.2 操作系统发展的几个典型转变

早期的电子数字计算机是由成千上万的电子管和许多开关装置组成的庞然大物。用户在这种机器上操作和编程完全以手工方式进行,且编程只能用机器语言,采用接插板或开关板控制计算机操作,由氖灯或数码管显示。显然,此阶段的计算机没有操作系统。

20世纪50年代晶体管计算机出现了,卡片穿孔成为程序编制和记录的方法,不再使用插板,而形成一种可以“阅读”的程序。命令、程序和数据用汇编语言或FORTRAN语言描述出来,并制成卡片,通过读卡机输入计算机,计算机运行完当前卡片上的任务以后,将计算结果从打印机上输出,接着再接收下一个来自卡片的任务。为了有效利用计算机资源,出现了能自动管理用户提交的各种应用程序的(单道)批处理程序,又称为监督程序或管理程序,这种单道批处理控制程序被称为早期操作系统。其基本操作步骤为:首先收集一批作业(卡),然后用一台专用计算机,称为输入/输出计算机,将作业逐个读到磁带上保存起来,再将磁带装到磁带机上。然后,由批处理程序将磁带上的第一个作业读入计算机,运算结束后将结果输出到输出磁带上,该计算机不负责打印输出。每当一个作业运行结束,批处理程序自动从输入磁带读入下一个作业并运行。当收集的这一批作业全部执行结束后,操作员取下输入磁带和输出磁带,用输入磁带录入下一批作业,将输出磁带送到专用输出计算机,进行脱机打印。

这种批处理控制程序解决了作业间的自动转接问题,减少了机器时间的浪费,但它还未真正实现对作业的控制和管理,存在较多的问题和不足。其一,不管作业大小,只要它一旦占用处理机开始执行,则必须一直占据处理机,直到运行完毕。其二,资源利用率低。作业运行过程中通常都有一些计算和一些输入/输出操作,计算时,I/O设备空闲;输入/输出数据时,处理机空闲。而内存仅装入一个作业,也会浪费很多内存空间。其三,对短作业不公平。因为它们等待执行的时间可能远远超过它们实际执行的时间。其四,交互性差。作业由批处理程序控制运行,用户无法实时控制。如果运行期间出现故障,也只能停下来,重新运行。

单道批处理系统中,任意时刻只允许一道作业在内存中运行。由于作业运行期间可能需要一段时间计算,一段时间进行输入/输出,而相对于处理机的计算速度,输入/输出的速度是非常慢的。这就意味着在一个作业的运行过程中,处理机可能会长时间空闲。为了提高系统资源利用率和系统吞吐量,在20世纪60年代中期出现了多道程序设计技术,由此形成了多道批处理系统。这里批处理的概念与单道批处理系统一样,用户提交的作业首先存放在外存,并排成一个队列。然后,由作业调度程序按照一定的算法从该队列中一次选取一个或若干个作业装入内存执行。这里的多道是指允许多个程序同时存在于主存中,按照某种原则分派处理机逐个执行这些程序。当某个程序占用处理机执行过程中遇到了输入/输出语句,可以启动专门负责输入/输出的系统服务程序完成输入/输出操作,而处理机切换到另一个程序执行。与单个执行程序相比,多道程序设计技术大大提高了处理机的利用率和系统吞吐量。这种为了提高系统吞吐量和资源利用率,允许多个程序同时驻留内存,使处理机在这些程序之间切换,在一段时间内,执行完多个程序的处理技术称为多道程序设计技术(multiprogramming)。现代操作系统大多都采用了多道程序设计技术。

多道批处理系统比单道批处理系统的资源利用率及系统吞吐量等性能有了很大的提高。但是,这需要相应的硬件和软件支持,而且带来了一系列新的问题需要解决。(1)处理机的分配与回收。多道程序批处理系统中,多个程序竞争处理机的使用权,如何公平地分配和回收处理机,且保证其利用率是非常重要的。当程序执行被中断时,如何记录当前的处理机信息,使下次执行时能从中断点正确地恢复信息,继续执行。(2)内存的分配与保护。多个程序同时驻留内存,需要确保用户程序不会非法修改系统程序和数据,用户程序之间也不能相互干扰。如何在有限的内存空间装入尽量多的程序,提高内存的利用率。(3)I/O设备的共享与效率。多道程序对资源的竞争也包括对I/O设备的竞争。如何分配这些I/O设备,如何既方便用户对设备的使用,又能提高设备利用率。如何减少慢速I/O设备对快速处理机的速度制约。(4)文件的有效管理。如何有效管理文件,使其方便用户的使用,并保证数据的安全性和一致性。如何合理地组织外存上的文件,使之既能满足文件读/写效率,又能保证外存的利用效率。如何保护文件只被授权的用户以合法的方式访问。(5)作业的组织。如何选取作业(选取哪些,选取多少)进入内存,使之既满足用户的要求,又能提高整个系统的性能。例如,有些作业属于计算型,即以计算为主;有些作业属于I/O型,即以I/O为主。均衡地选取这两类作业进入内存,将有利于系统资源的平衡使用。

多道批处理系统的出现有效提高了系统资源的利用率和吞吐量。但是,批处理系统交互性很差,程序员不能即时调试自己的程序,无法与计算机进行直接交互操作。为了改进系统的响应时间和性能,提供交互式操作环境,促使了分时系统的出现。其实质是在多道程序技术的基础之上,为多个用户配置一个联机终端。在分时系统中,多个用户可以轮流使用处理机执行自己的程序,能得到计算机快速的交互式响应。同时,当处理机空闲时还能运行后台的大作业。

为了提高单道分时系统中处理机的利用率,引入了“前台”和“后台”的概念,形成具有分时处理功能和批处理功能的分时系统。在这样的分时系统中,将内存划分为“前台区”和“后台区”两部分,“前台区”存放按时间片“调入”和“调出”的作业流,“后台区”存放批处理作业。仅当前台作业调入/调出,或前台无作业可运行时,方可运行“后台区”中的作业。由于前台的分时任务通常是用户提交的一些简短命令,执行时间较短。因此,计算机能够为许多用户提供交互式的快速服务,同时在处理机空闲时运行后台较大的批作业。

分时系统为交互式作业提供了快速的响应服务,但还不能满足某些对响应时间要求非常严格的任务需要。例如,炼钢、炼油过程中,当检测到当前温度达到某个值时,需要添加某种原料,如果系统未按要求实施相应的控制,将出现灾难性后果。航空网络售票系统也需要即时更新数据库记录,否则将导致数据不一致。这些系统不是一般的分时系统,而属于实时系统,它们对任务的响应时间有更严格的要求。1.2.3 操作系统的进一步发展

随着微电子技术和大规模集成电路的发展,大规模及超大规模集成技术用于计算机,将运算器、控制器和相应接口集成在一块芯片上,产生了微处理器,于是个人计算机时代到来了。为个人计算机配置的操作系统称为现代操作系统。目前,个人计算机操作系统种类繁多,更新速度极快,主要有UNIX、OS/2、Windows系列、Linux等,其中最具代表性的是Windows系列、Linux和UNIX。

20世纪80年代中期,由于计算机网络的迅速发展,网络操作系统和分布式操作系统得到了广泛应用。网络操作系统与单处理机操作系统并无本质区别,前者需要一个网络接口控制器及一些用于驱动的低层软件,同时还需要相应的远程登录软件和远程文件访问软件。而一个分布式系统由多台处理机组成,这些处理机被一个分布式操作系统控制,将用户的一个应用程序分布在多台处理机上同时运行。这就要求分布式操作系统能合理地调度各处理机,使整个系统获得最大的并行度。但所有这些处理机、处理机的调度以及任务的划分等细节对用户来说都是不透明的,用户只感觉到系统快捷的响应速度和强大的功能。

随着工业化程度的进一步提高和操作系统的微型化,嵌入式操作系统越来越受到社会的认同和重视,其应用已深入到众多行业和领域。1.3 现代操作系统的设计概述

本质上,操作系统是计算机中的一种系统软件。按照软件工程的观点看,操作系统的设计必须遵循需求分析、系统设计、编码实现、产品测试等必要过程,如图1.2所示。本节主要介绍操作系统设计过程中的需求分析、体系结构设计以及必要的数据结构等知识。图1.2 软件设计的典型过程

软件系统的系统需求是指,人们从软件系统的外部对软件系统提出的诸多期望。这些期望包括三种类型:①软件系统能提供的服务;②软件系统在提供这些服务时需要满足的限制条件;③软件系统具有适应某些变化的能力。其中,第一类系统需求是后两类系统需求赖以存在的基础,称为软件系统的功能性需求,后两类系统需求称为软件系统的非功能性需求。1.3.1 操作系统的功能性需求

操作系统的主要功能是有效管理系统资源,合理控制系统工作流程,方便用户使用。资源管理的主要目标是提高资源的利用率,合理地为用户作业分配资源,使系统能有条不紊地运行。

现代计算机系统中的重要资源包括硬件资源、软件资源和用户资源。为此,操作系统的主要任务就是管理包括处理机、存储器、输入/输出设备、数据文件以及用户和程序接口等资源。此外,随着计算机软硬件技术的发展和应用的需要,现代操作系统还对网络与通信资源、安全机制与设施资源、多媒体资源等的管理和协调进行了新的功能扩充。下面分别介绍操作系统应该具备的主要功能。

1.接口功能

操作系统为用户提供的人机交互界面称为接口,通常以命令或系统调用的形式呈现给用户。命令供用户通过键盘终端与计算机交互,系统调用则供用户编程时使用。这两种接口分别称为命令接口和程序接口。其中,命令接口又分为字符方式和图形化方式两类。(1)命令接口。命令接口通过在用户和操作系统之间提供高级通信来控制程序运行,用户通过输入设备(终端、键盘、鼠标、触摸屏等)发出一系列命令告诉操作系统执行所需功能,包含联机命令(on-line)和脱机命令(off-line)两类接口。联机命令接口由一组键盘命令及命令解释程序组成。用户通过终端或控制台输入命令,系统启动命令解释程序对其进行解释执行,用户通过输入各种命令控制作业的运行。联机命令因系统不同而异,一般包括系统管理、环境设置、执行权限管理、文件管理、编辑、编译、链接装配、执行程序和通信等几大类。脱机命令接口又称为批处理用户接口,由一组作业控制语言JCL组成,控制批处理作业的运行。批处理作业的用户不能直接与自己的作业交互,而是事先用JCL把需要对作业进行的控制写在作业说明书上,将作业连同作业说明书一起提交给系统。系统按照作业说明书上的逐条命令执行作业,期间用户无法直接与自己的作业交互,直到作业运行完毕。

虽然用户可以通过联机用户接口来取得操作系统的服务,并控制自己的应用程序的运行,但要求用户能熟记各种命令的名字和格式,并严格按照规定的格式输入命令,这既不方便又费时间。于是,图形用户接口便应运而生。在20世纪90年代新推出的主要操作系统中,大都提供了图形用户接口。其中,最具代表性的当数微软公司的Windows操作系统。

然而,采用图形界面要使用大量的系统资源,需要占用相当的存储空间和磁盘空间,增加系统的运行时间、通信时间及切换时间。图形的显示要求性能较高的显示器及相关的配套元件。所幸的是,计算机硬件的发展速度极快,硬件的更新换代完全能适应软件的升级发展,图形用户界面得到了计算机运行速度、内外存空间及显示精度等各方面技术的支持。如今,系统界面的友好性和易用性逐渐成为操作系统中的重要部分,用户在很大程度上以这两个标准来判断一个系统的优劣。(2)程序接口。也称为系统调用,是操作系统对运行程序提供服务并与之通信的一种机制。用户在程序中利用程序接口访问系统资源、取得操作系统的服务,如申请和释放外设等资源、控制程序的执行进度等。程序接口由一系列系统调用组成,每个系统调用都是一个能完成特定功能的子程序。一些较低级的编程语言可以直接使用系统调用,而高级语言(如C语言)则提供了与系统调用对应的库函数,应用程序中通过调用库函数来使用系统调用。除了向所有用户程序提供程序接口外,操作系统的其他部分都要使用程序接口。

系统调用是一种特殊的过程调用,通常由特定的机器指令完成。它除了提供一种调用操作系统子程序的有效方法外,还将系统转入特权方式。系统调用作为一种低级过程,可通过汇编语言或者高级语言的子程序库存取。程序员利用系统调用,在源程序一级动态请求和释放系统资源,调用系统中已有的系统功能来完成那些与机器硬件部分相关的工作,以及控制程序的执行速度等,从而屏蔽操作系统的具体动作细节,让程序员利用其功能,大大简化了编程难度。

2.处理机管理功能

处理机是计算机系统的心脏,合理分配处理机,并有效控制和管理其运行是处理机管理的主要任务。在多道程序环境下,处理机的分配和运行都是以进程为基本单位的,因此对处理机的管理可以归结为对进程的管理。主要包括进程控制、进程同步、进程通信和进程调度等方面。(1)进程控制。当用户作业要运行时,应为之建立一个或多个进程,并为它分配除处理机之外的所有资源,将它们放入进程就绪队列。当进程运行完成时,立即撤销该进程,以便及时释放其所占用的资源。进程控制的基本功能是创建和撤销进程以及控制进程的状态转换。(2)进程同步。所谓进程同步是指系统对并发执行的进程进行协调。最基本的进程同步方式是使诸进程以互斥方式访问临界资源。此外,对于彼此相互合作完成共同任务的诸进程,则应由系统对它们的运行速度加以协调。(3)进程通信。对于相互合作的进程,在它们运行时,相互之间往往要交换一定的信息。例如,进程A需要把它运行的结果数据传送给另一相关进程B;而进程B仅在收到该数据后方能开始执行;必要时,进程B还应向进程A发送确认信息。我们把这种进程间所进行的信息交换称为进程通信。(4)进程调度。当一个正在执行的进程已经完成或因某事件而无法继续执行时,系统应进行进程调度,重新分配处理机。进程调度是指按一定算法,如最高优先权算法,从进程就绪队列中选出一个进程,把处理机分配给它,为该进程设置运行现场并使之运行。

3.存储器管理功能

存储器管理的主要任务是:①为多道程序的并发执行提供良好的环境;②便于用户使用存储器;③提高存储器的利用率;④为尽量多的用户提供足够大的存储空间。为实现上述任务,存储器管理应具有以下四种功能。(1)内存分配。多道程序能并发执行的首要条件是,各道程序都有自己的内存空间。因此,为每道程序分配内存是存储器管理的基本功能。对内存的分配可按两种方式进行:①静态分配。每个作业所要求的内存空间是在目标模块被链接装入时确定的。作业一旦被装入后,在其整个运行期间都不允许再申请内存,也不允许作业在内存中“移动”。②动态分配。作业所要求的基本内存空间也是在装入时确定的,但在作业运行过程中还可以继续申请附加内存空间,也允许作业在内存中“移动”,还可以分为连续分配与非连续分配方式。(2)内存保护。为保证各道程序都能在自己的内存空间运行而互不干扰,要求每道程序在执行时能随时检查对内存的所有访问是否合法。必须防止因一道程序的错误而扰乱了其他程序,尤其应防止用户程序侵犯操作系统的内存区。因此,不少计算机都设置了硬件保护设施,再加上软件的配合来实现内存保护功能。

内存分配和保护功能可为多道程序的运行提供良好的环境。(3)地址映射。由目标程序所限定的地址范围称为该程序的地址空间。地址空间中的地址是逻辑地址。内存空间是内存物理地址的集合。在多道程序系统中,操作系统必须提供这种功能,可以把程序地址空间中的逻辑地址转换为内存空间对应的物理地址。我们把这种地址转换过程称为地址映射。显然,地址映射功能可使用户不必关心物理存储空间的分配细节,从而为用户编程提供了方便。(4)内存扩充。由于物理内存的大小可能限制大型作业或多个作业的并发执行,为了满足用户的要求并改善系统性能,必须对内存加以扩充。但我们无须真正地增加内存空间,而只需借助于虚拟存储技术便可获得这样的效果,使系统能运行内存需求量远比物理内存大得多的作业,或让更多的作业并发执行。

4.输入/输出设备管理功能

输入/输出设备常简称为设备。设备管理的主要任务是:①为用户程序分配I/O设备;②完成用户程序请求的I/O操作;③提高处理机和I/O设备的利用率;④改善人机界面。为实现上述任务,设备管理程序应具有下述功能。(1)缓冲管理。几乎所有的外围设备与处理机交换信息时,都要利用缓冲来缓和处理机和I/O设备间速度不匹配的矛盾,以及提高处理机与设备、设备与设备间操作的并行程度,从而提高处理机和I/O设备的利用率。因此,在系统中设置了许多类型的缓冲,系统必须对它们进行有效管理。(2)设备分配。系统根据用户所请求的设备类型和所采用的分配算法对设备进行分配,并将未获得所需设备的进程放进相应设备的等待队列。(3)设备处理。启动指定的I/O设备,完成用户规定的I/O操作,并对由设备发来的中断请求进行及时响应,根据中断类型进行相应的处理。(4)虚拟设备功能。通常,把一次仅允许一个进程使用的设备称为独占设备。系统可通过某种技术使该设备成为能被多个用户共享的设备,以提高设备利用率及加快程序的执行过程。可使每个用户都感觉到自己在独占该设备。如前所述,这种只为用户所感觉到而实际上并不存在的设备,称为逻辑设备或虚拟设备。

5.文件管理功能

计算机要处理大量的数据,这些数据以文件的形式存储在磁盘和磁带等辅助存储器中。操作系统中必须具备文件管理功能,称为文件系统,它主要负责管理用户文件和系统文件,管理文件的存储空间,保证文件数据的安全,以及方便用户使用文件。可以将文件管理归纳为文件目录管理、文件的逻辑组织与访问方式、文件的物理组织(存储空间的管理)、空闲磁盘空间的管理以及文件共享与安全等几个方面。(1)目录管理。文件目录是联系用户和外存中文件数据之间的纽带,为了找到外存中的文件,必须首先找到文件的目录项,其中包含文件名、文件属性、文件在存储空间中的起始位置等信息。系统中的若干目录项组成目录文件。为了提高文件的检索速度,目录文件的组织形式和查找方法是至关重要的。用户通过目录对文件进行按名存取,而不必关心文件存储的具体细节,从而方便用户使用文件。(2)文件的逻辑组织与访问方式。文件的逻辑组织结构决定了文件的访问方式,典型的文件逻辑组织结构有:堆文件、顺序文件、索引顺序文件、索引文件以及直接访问文件(哈希文件)。堆文件适合于批量数据处理,对单条记录的操作效率极低。顺序文件按照记录的关键字排序,检索单条记录的效率较高,但插入和更新单条记录效率较低。索引顺序文件能提高记录的检索效率。索引文件组织方式便于记录的检索、插入及更新等操作。直接访问文件也称为哈希文件,通过哈希函数计算记录的存储/访问位置,适合于记录的随机访问。(3)文件存储空间的管理,即文件的物理组织。系统中的绝大多数文件都保存在辅助存储器中。通常情况下,历史数据用磁带或光盘保存,而日常需要经常使用的文件保存在磁盘上。如何组织管理磁盘上的大量文件和空闲空间,如何有效利用磁盘空间,以及如何快速检索磁盘文件等,是存储空间管理的主要任务。(4)文件共享与安全。无论是个人计算机,还是大型计算机系统,文件共享是常有的事。系统文件被用户共享,用户文件之间的共享使计算机资源得到了充分的利用。文件共享的方式有多种:链接目录项、利用基本文件目录、利用索引节点以及利用符号链等均可实现文件共享。另外,文件共享也带来了系统安全性问题,影响文件安全性的主要因素是数据丢失和非法入侵。为此,需要通过人工管理及为文件设置存取控制机制来预防非法入侵系统,通过系统容错技术及系统备份来防止数据丢失。1.3.2 操作系统的非功能性需求

非功能性需求是指那些不直接与系统具体功能相关的一类需求,它与系统的总体特性相关,包括可靠性、响应时间、存储空间及资源的有效利用等。操作系统的非功能性需求涉及系统性能或效率、公平性、可靠性、安全性、可扩展性、可移植性等。事实上,当功能需求已基本满足时,操作系统设计的重点已转移到非功能性需求,如资源利用率、系统性能提高、系统吞吐率提升、系统安全性等方面。

1.系统性能(Performance)或效率(Efficiency)

计算机系统整体性能的提高很大程度上依赖于操作系统的性能。例如,尽可能高的系统吞吐率(指单位时间计算机系统完成的工作量)、尽可能快的系统响应时间等,这些性能的提高与操作系统是否能尽快响应外部中断并及时处理、是否能尽快完成数据输入/输出操作等环节直接相关。

具体而言,操作系统的性能主要包括:①处理器性能。即处理器在单位时间内完成的有效工作,高性能的处理器能在尽可能短的时间内完成尽可能多的工作。这就要求处理器必须能够快速轻便地在多个不同任务之间切换,各任务对处理器的占用时间和占用顺序是科学合理的,系统的其他资源对处理器工作的配合是协调的(如足够的空间和速度配合),等等。②存储器性能。高效的存储体系既包含大容量低速的外存,也支持小容量高速的多级缓存(形成所谓的金字塔存储结构),内/外存的存储空间分配/管理方法高效且有利于处理器性能乃至整个系统性能的提高。③外部设备的性能。由于外部设备的速度总是远远慢于处理器或内存的速度而成为整个计算机系统的性能瓶颈,操作系统必须设计有效的设备管理方法,以减少外部设备对处理器、内存乃至整个系统的性能制约。因而,现代操作系统利用多级缓冲存储,采用提前读/延后写技术,以空间换取时间;采用多种磁盘调度算法,以提高批量磁盘读/写性能;采用磁盘阵列技术,提高磁盘数据的读/写效率等。④文件系统的性能。涉及有效的目录管理,以实现文件的快速按名存取;采取有效的文件存储方法,使文件在外存的存储和读出都能快速完成。

2.资源利用率

计算机系统资源利用率的提高也是现代操作系统追求的主要目标之一,要尽量提高处理机资源、存储器资源、各种外部设备及文件系统资源等利用率,让这些资源尽可能利用起来做有效的事情。可见,计算机系统资源利用率的提高包含两层含义:首先,要让计算机资源尽量忙碌,不能出现有任务等待而资源空闲的情况;其次,资源不能忙忙碌碌但不做有用的事情。比如,让一个处理器繁忙地不断检测打印机是否空闲,尽管处理器看上去非常忙碌,但没有做有效的事情(事实上,打印机是否空闲不必浪费处理器资源去反复检测,中断功能即能免去处理器的此类浪费)。内存空间的有效利用也是非常重要的,要在有限的内存空间存储尽可能大的任务和尽可能多的任务,因此出现了虚拟存储技术。若能让多个任务共享一份数据,就不必为每个任务各自分配一块内存空间来存储这份数据了,这也是为了提高内存资源利用率。此外,当需要执行任务时,则分配相应资源;当任务执行过程中或执行完毕不再需要某资源时,系统能及时回收资源,也是提高系统资源利用率的有效措施。

3.公平性(Fairness)

操作系统因为用户的需要会执行各种类型的任务,某些任务属于长时间占用处理器而较少使用输入/输出设备的计算型任务,而另一些任务属于较少占用处理器而长时间占用输入/输出设备的I/O型任务;有的任务属于需要快速响应的分时任务,而另一些则是需要长时间处理的批处理任务;有些任务具有很高的优先权,需要优先处理,而另一些具有较低的优先权。操作系统在处理各种类型的任务时,需要综合考虑多种因素以决定什么时间处理哪些任务,不能只擅长处理某类任务,而长时间忽略另一类任务。

4.可靠性(Reliability)

操作系统的可靠性指操作系统的稳固性和可用性。稳固性表示一个系统发生错误的概率大小,稳固性越高系统发生错误的概率越小。一个稳固的操作系统应该对系统出错甚至硬件故障及时做出适当的反应,并尽量降低系统故障导致的损失。可用性一般用系统有效工作的时间长度来衡量,一个系统应该有尽可能长的时间在进行有效工作,而用尽量短的时间进行系统的日常维护和因意外错误导致的系统恢复。

5.安全性(Security)

安全性是一个很大的主题,涉及对计算机、网络以及计算机系统中信息存储、处理和传输等的访问控制,这里仅简要介绍操作系统设计时应考虑的某些主要安全问题。现代操作系统大都支持多道程序设计技术,允许多个进程同时驻留内存并发执行,系统为此提供了进程间共享计算机资源的环境。这种运行环境要求操作系统能提供一种机制,以保证系统内各进程之间不相互干扰,进程各自拥有自己合法的资源。一个进程不能未经授权非法抢占其他进程的资源,或非法共享独占资源。进程之间可能因为共同完成某个任务需要合作,操作系统必须能恰当控制合作进程协调执行而不冲突。操作系统安全还涉及系统自身数据不能被非法获取甚至篡改、用户的个人隐私不被泄露、预防外来病毒的侵害等多方面。

目前,操作系统安全的主要防护措施包括防火墙、入侵检测、加密、打补丁等。一些操作系统在内核层进行全面的安全增强,内置入侵检测、防病毒、安全远程控制、日志统计、系统状况图形化显示等功能完善的安全工具,以期解决现有主流操作系统面对的病毒、蠕虫、黑客攻击、内部入侵等严峻的安全问题。

此外,操作系统的非功能性需求还包括系统的可伸缩性、可扩展性及可移植性等要素。1.3.3 操作系统依赖的硬件平台

设计实现一个软件系统时,需要考虑该系统运行的软硬件平台,设计操作系统也不例外。由于计算机操作系统是计算机系统中的底层软件,它直接与计算机硬件打交道。所以,设计操作系统时,必须明确其依赖的系统硬件环境。一般来说,现代操作系统需要的硬件平台包括时钟、中断、存储保护机制等。

1.时钟

为了让计算机的各项操作能在不同时间段有序、分步完成,计算机内必须具备系统时钟。系统时钟像节拍器一样有规律性地控制计算机工作,称为时序控制。计算机内存在两种时序控制方式:同步时序控制方式和异步时序控制方式。

同步时序控制方式是指用统一发出的时序对各项操作进行同步控制。在同步控制方式中,操作时间被划分为许多长度固定的时间段,也称为时钟周期。CPU根据统一的时钟周期为指令的执行安排严格的时间表,各操作必须按时间表执行,即在规定的时钟周期内完成本步操作,时钟周期一结束,本步操作也结束,并开始执行下一步操作。各步操作之间的衔接由时钟周期的自动切换来控制。

异步控制方式指各项操作不受统一时序信号约束,而可以根据实际需要安排时间的长短。主要用于控制系统总线的操作,以适应系统总线所连接的各设备工作速度和时间的不同。

操作系统的工作必须依赖系统时钟。在多道分时系统中,当某个任务开始执行时,系统即开始计时,任务只能执行系统规定的时间,而不能长时间独占处理器资源。若系统中存在一些周期性执行的任务,系统必须根据时钟周期定时激活相应任务并开始执行。

2.中断

中断是几乎所有现代计算机系统都支持的工作机制,在实际工作中有着广泛的应用。常见的中断有程序中断、时钟中断、I/O中断和硬件故障中断等。程序中断方式指计算机运行过程中,若发生某种随机事件,CPU将暂停执行现行程序,转而执行中断处理程序,为突发事件服务;当突发事件处理完毕后,自动恢复原程序的执行。这里所说的突发事件包括计算溢出、除以零、企图执行非法指令、存储访问非法越界等。I/O中断由各类I/O设备控制器在一次I/O操作完成时或I/O操作异常时产生,用以告知CPU一次I/O操作的工作状况。当CPU收到一个I/O中断信号时,将进行相应的中断处理。这样,就实现了CPU与I/O设备之间的并行工作方式,避免CPU空闲等待慢速的I/O过程,而被“解放”出来完成其他工作。若机器出现电源故障或存储奇偶校验错等情形,将产生硬件故障中断。

3.存储保护

计算机操作系统的存储保护包括对系统自身数据的保护和对用户数据的保护两大类,既要防止用户程序非法访问系统数据,也要防止用户程序之间的非法访问。若出现上述任何情况,处理器硬件能即时将其检测出来并通知操作系统。操作系统将阻止这种操作的继续进行,而给出相应的非法存储访问报告。1.3.4 操作系统的体系结构

按照软件工程的观点,大型系统总是被分解成一些子系统,这些子系统提供一些相关的服务。初始设计过程的任务是要识别出这些子系统并建立起子系统控制和通信的框架,这个过程称为体系结构设计,如图1.3所示。系统的体系结构设计将影响系统的性能、保密性、安全性、可用性、可维护性等非功能性需求。图1.3 系统体系结构设计过程

大多数现代操作系统的总体结构包含两类子系统:一是用户接口子系统,二是基础平台子系统。其中,用户接口子系统提供计算机用户需求的用户命令,基础平台子系统提供应用软件需求的系统调用。用户接口子系统与基础平台子系统之间的相互关系具有单向性,即用户接口子系统在实现各种用户命令时能够引用基础平台子系统所提供的各种系统调用,但基础平台子系统在实现各种系统调用时不会引用用户接口子系统所提供的各种用户命令,如图1.4所示。图1.4 一种常见的操作系统总体结构风格

1.基础平台子系统的结构风格之一

常见的基础平台子系统结构采用分层、分级或分块三大类结构。其中:(1)使用分层结构风格的基础平台子系统结构包含若干层(Layer),每一层实现一组基本概念及其相关的基本属性。层与层之间的相互关系体现为:所有各层的实现不依赖其以上各层所提供的概念及其属性,只依赖其直接下层所提供的概念及属性,且每一层均对其上各层隐藏其下各层的存在。(2)使用分级结构风格的基础平台子系统结构包含若干级(Level)。其中,每一级实现一组基本概念及其相关的基本属性。级与级之间的相互关系为:所有各级的实现不依赖其以上各级所提供的概念及属性,只依赖其以下各级所提供的概念及属性。(3)使用分块结构风格的基础平台子系统结构包含若干模块(Module)。其中,每一块实现一组基本概念及其相关的基本属性。块与块之间的相互关系为:所有各块的实现均可以任意引用其他各块所提供的概念及属性。

不难发现,分层结构风格是一种特殊的分级结构风格,分级结构风格是一种特殊的分块结构风格。其中,分层结构风格有利于实现基础平台子系统的可维护性、可扩展性、可移植性、部件可重用性等非功能性需求,不利于提高基础平台子系统的时间和空间效率;构造一个纯粹的分层结构将非常困难。构造一个分块结构是一种切合实际的做法,其有利于生成高效、紧凑的基础平台子系统可执行代码,不利于实现基础平台子系统的灵活性。相对于分层结构风格以及分块结构风格,分级结构风格的长处和不足介于两者之间。

2.基础平台子系统的结构风格之二

另一种基础平台子系统的结构按照执行模式的不同将操作系统的基础平台划分为多模式和单模式结构。所谓模式,简单地说,就是程序在运行过程中使用的、由硬件体系结构提供的CPU特权方式。

使用多模式结构风格的基础平台子系统结构包含多个模式模块,这些模式模块或者是一个应用软件或者是基础平台子系统的一部分。在使用多模式结构风格的基础平台子系统结构中,不同的模式模块在不同的CPU特权模式下运行。而使用单模式结构风格的基础平台子系统结构仅仅包含一个模式模块,该模式模块由应用软件和基础平台子系统共同组成。在使用单模式结构风格的基础平台子系统结构中,应用软件和基础平台子系统在同一CPU特权模式下运行。

多模式结构风格有利于实现基础平台子系统的可靠性、安全性等非功能性需求,但会降低基础平台子系统的性能。而且,在较高级别CPU特权模式下调试程序是一件困难的事情。相对而言,单模式结构风格不会增加基础平台子系统的开发难度,不会影响基础平台子系统的性能,但不利于实现基础平台子系统的可靠性、安全性等非功能性需求。

特别地,若一个基础平台子系统使用了双模式结构风格,则称该基础平台子系统为双模式基础平台子系统。双模式基础平台子系统的总体结构包含两个模式模块,它们分别在两种不同的CPU特权模式下运行。习惯上,人们把双模式基础平台子系统的这两个模式模块分别称为核外子系统和核心子系统。把核外子系统所使用的CPU特权模式称为用户模式(User Mode),把核心子系统所使用的CPU特权模式称为 核心模式(Kernel Mode),如图1.5所示。图1.5 双模式基础平台子系统结构风格

3.微核结构

为了构造一个高效简洁的核心子系统,应尽量剔除核心子系统中的多余成分,把它们移到核外子系统中,核心子系统只实现一些必要的、简单的概念及其属性,称为微核结构。在微核结构中,操作系统的内核只需要提供最基本、最核心的一部分操作,如创建和撤销进程、内存管理、中断管理等,其他如文件系统、网络协议栈等管理程序则尽可能放在内核之外。这些外部程序可以独立运行,并对外部用户程序提供操作系统服务,服务之间通常采用进程间通信机制(IPC)进行交互,只有当需要内核协助时,才通过一套接口对内核发出调用请求。

微核结构由一个非常简单的硬件抽象层和一组关键的原语或系统调用组成,这些原语主要用于实现系统的进程(线程)管理、地址空间和进程间通信等功能。采用微核结构的操作系统以独立进程的方式提供系统服务,如文件系统、设备驱动程序等,进程之间通过消息传递调用操作系统的服务。第一代采用微核结构的操作系统在核心子系统中提供了较多的服务,因此被称为“胖微内核”。其典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的核心。第二代微核结构操作系统只提供最基本的系统服务,其典型代表如QNX。其他采用微核结构的系统还有AIX、BeOS、L4微核系列、Mach、Minix、MorphOS、QNX、RadiOS、VSTa等。

微核结构的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务用于完成操作系统中比较高级的操作,这样的设计使内核中最核心的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的仅仅是重新启动这个组件,而不会影响其他部分。

采用微核结构的操作系统具有很高的灵活性,其内部结构简单清晰且便于维护。然而,微核系统由于核心态只实现最基本的系统操作,内核以外的外部程序之间由于独立运行导致系统难以进行整体优化。另外,进程间互相通信的开销也较单一内核系统要大许多。从整体上看,在当前的硬件条件下,微内核在效率上的损失小于其在结构上获得的收益,故而选取微内核成为操作系统的一大潮流。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载