第一章:操作系统引论
计算机系统是由硬件和软件两部分组成。操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
操作系统是一组控制和管理计算机的硬件和软件资源,合理的对各类作业进行调度,以方便用户使用的程序的集合。
1.1操作系统的目标和作用
1.1.1 操作系统的目标:
1)有效性:提高系统资源利用率;提高系统的吞吐量。
2)方便性:
3)可扩充性:
4)开放性:开放性是指操作系统能遵循世界标准规范,特别是遵循开放系统互联(OSI) 国际标准。凡遵循国际标准所开放的硬件和软件,均能彼此兼容,可方便的实现互连。
1.1.2 操作系统的作用:
1)OS 作为用户与计算机硬件系统之间的接口:OS 处于用户与计算机硬件系统之间,用户通过 OS 来使用计算机系统。
①命令方式:这是指由OS 提供了一组联机命令接口,以允许用户通过键盘输入有关命令来取得操作系统的服务,并控制用户程序的运行。
②系统调用方式:OS 提供了一组系统调用,用户可在自己的应用程序中通过相应的系统调用,来实现与操作系统的通信,并取得它的服务。
③图形、窗口方式:这是当前使用最为方便、最为广泛的接口,它允许用户通过屏幕上的窗口和图标来实现与操作系统的通信,并取得它的服务。
2)OS 作为计算机系统资源的管理者
系统资源分为四类:处理器、存储器、I/O设备、信息(数据和程序)。OS 的主要功能也正是针对这四类资源进行有效的管理,即:处理机管理,用于分配和控制处理机;存储器管理,主要负责内存的分配与回收;I/O 设备管理,负责 I/O设备的分配与操纵;文件管理,负责文件的存取、共享和保护。
当一个计算机系统同时供多个用户使用时,用户对系统中共享资源的需求(包括数量和时间)可能发生冲突,为了更好的管理好这些共享资源(包括硬件和信息)的使用,操作系统必须记录下各种资源的使用情况,对使用资源的请求进行授权,协调诸用户对共享资源的使用,避免发生冲突,并计算使用资源的费用等。
3)OS 实现了对计算机资源的抽象
对于一个完全无软件的计算机系统(即裸机),它向用户提供的是实际硬件接口(物理接口),用户必须对物理接口的实现细节有充分的了解,并利用机器指令进行编程,因此该物理机器必定是难以使用的。
在裸机上铺设的 I/O软件隐藏了对 I/O 设备操作的具体细节,向上提供了一组抽象的 I/O 设备。
OS 是铺设在计算机硬件上的多层系统软件,它们不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,由它们实现了对计算机硬件操作的多个层次的抽象。
1.1.3 推动操作系统发展的主要动力
1、不断提高计算机资源的利用率
在计算机发展的初期,计算机系统特别昂贵,人们必须千方百计地提高计算机系统中各种资源的利用率,这就是 OS 最初发展的推动力。由此形成了能自动地对一批作业进行处理的多道批处理系统。
2、方便用户
为了解决用户在上机、调试程序时的不方便等问题,便形成了允许进行人机交互的分时系统,或称为多用户系统。极大地方便了用户使用计算机。
3、器件的不断更新换代
4、计算机体系结构的不断发展
单处理机系统发展为多处理机系统,相应的,操作系统也就由单处理机 OS 发展为多处理 OS。
当出现了计算机网络后,配置在计算机网络上的网络操作系统应运而生,它不仅能有效地管理好网络中的共享资源,而且还向用户提供了许多网络服务。
1.2 操作系统的发展过程
1.2.1 无操作系统的计算机系统
1、人工操作方式
由程序员将事先已穿孔(对应于程序和数据)的纸带(或卡片)装入纸带输入机(或卡片输入机),再启动它们将程序和数据输入计算机,然后启动计
算机运行。当程序运行完毕并取走计算结果之后,才让下一个用户上机。
缺点:1)用户独占全机。2)CPU 等待人工操作。
人工操作方式严重降低了计算机资源的利用率,此即所谓的人机矛盾。为了缓和此矛盾,曾先后出现了通道技术,缓冲技术,但都未能很好地解决上述矛盾,直至后来引入了脱机输入/输出技术,才获得了较为令人满意的结果。
2、脱机输入/输出方式
该技术是事先将装有用户程序和数据的纸带(或卡片)装入纸带输入机(或卡片机),在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当CPU需要这些程序和数据时,再从磁带上将其高速地调入内存。
类似地,当CPU需要输出时,可由CPU直接高速地把数据从内存送到磁带上,然后再在另一台外围机的控制下,将磁带上的结果通过相应的输出设备输出。图1-3示出了脱机输入/输出过程。由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的情况下进行的,故称为脱机输入/输出方式;反之,在主机的直接控制下进行输入/输出的方式称为联机输入/输出(On-Line I/O)方式。
优点:
1)减少了 CPU 的空闲时间。装带卸带以及将数据从低速 I/O设备送到高速磁带上,都是在脱机情况下进行的,并不占用主机时间,从而有效地减少了 CPU 的空闲时间,缓和了人机矛盾。
2)提高了 I/O 速度。当 CPU 在运行中需要数据时,是直接从高速的磁带上将数据调入内存的,不再是低速 I/O 设备上输入,极大地提高了 I/O 速度,从而缓和了 CPU 和 I/O 设备速度不匹配的矛盾,进一步减少了 CPU 的空闲时间。
1.2.2 单批道处理系统
1.单批道处理系统的处理过程
把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序(Monitor),在它的控制下使这批作业能一个接一个地连续处理。
单道批处理系统是在解决人机矛盾以及 CPU 与 I/O 设备速度不匹配问题的过程中形成的。批处理系统旨在提高系统资源的利用率和系统吞吐量。
2、单道批处理系统的特征
1)自动性。在顺利情况下,在磁带上的一批作业能自动地逐个地依次运行,而无需人工干预。
2)顺序性。在磁带上的各道作业是顺序地进入内存,各道作业的完成顺序与它们进入内存的顺序,在正常情况下完全相同,亦即先调入内存的作业先完成。
3)单道性。内存中仅有一道程序运行,即监督程序每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换入其后继程序进入内存运行。
1.2.3 多道批处理系统
1、多道批处理系统的基本概念
在该系统中,用户所提交的作业都先存放在外村上并排成一个队列,称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享 CPU 和系统中的各种资源。
在 OS 中引入多道批处理系统有以下好处:
1)提高 CPU 的利用率。2)可提高内存和 I/O 设备利用率。3)增加系统吞吐量。
2、多道批处理系统的优缺点
1)资源利用率高。由于在内存中驻留了多道程序,它们共享资源,可保持资源处于忙碌状态,从而使各种资源得以充分利用。
2)系统吞吐量大。系统吞吐量是指系统在单位时间内所完成的总工作量。能提高系统吞吐量的主要原因可归结为:第一,CPU和其它资源保持“忙碌”状态;第二,仅当作业完成时或运行不下去时才进行切换,系统开销小。
3)平均周转时间长。作业的周转时间是指从作业进入系统开始,直至其完成并退出系统为止所经历的时间。在批处理系统中,由于作业要排队,依次进行处理,因而作业的周转时间较长,通常需几个小时,甚至几天。
4)无交互能力。用户一旦把作业提交给系统后,直至作业完成,用户都不能与自己的作业进行交互,这对修改和调试程序是极不方便的。
3、多道批处理系统需要解决的问题。
1)处理机管理问题
2)内存管理问题
3)I/O 设备管理问题
4)文件管理问题
5)作业管理问题
1.2.4 分时系统
1.分时系统的产生
1)便于人-机交互。 2)可以共享主机。 3)便于用户上机。
定义:分时系统是指 在一台主机上连接了多个带有显示器和键盘的终端,同事允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。
2、分时系统实现中的关键问题
1)及时接收。要及时接收用户键入的命令,只需在系统中配置一个多路卡。多路卡的作用是是主机能同事接收各用户从终端上输入的数据。
2)及时处理。人机交互的关键,是使用户键入命令后能及时地控制自己作业的运行,或修改自己的作业。
3、分时系统的特征
1)多路性。允许在一台主机上同时连接多台联机终端,系统按分时原则为每个用户服务。多路性即同时性,它提高了资源利用率,降低了使用费用,从而促进了计算机更广泛的使用。
2)独立性。每个用户各占一个终端,彼此独立操作,互不干扰。
3)及时性。用户的请求能在很短的时间内获得响应。
4)交互性。用户可通过终端与系统进行广泛的人机对话。其广泛性表现在:用户可以请求系统提供多方面的服务,如:文件编辑,数据处理和资源共享等。
1.2.5 实时系统
实时系统是指系统能及时响应外部事件的请求,在规定的事件内完成对该事件的处理,并控制所有实时任务协调一致的运行。
1、应用需求
1)实时控制。2)实时信息处理。
2、实时任务
1)按任务执行时是否呈现周期性来划分
①周期性实时任务。外部设备周期性地发出激励信号给计算机,要求它按指定周期循环执行,以便周期性地控制某外部设备。
②非周期性实时任务。外部设备发出的激励信号并无明显周期,但都联系着一个截止时间。它又可分为开始截止时间(某任务在某时间以前必须开始执行)和完成截止时间(某任务在某时间以前必须完成)两部分。
2)根据对截止时间的要求来划分
①硬实时任务。系统必须满足对截止时间的要求,否则可能出现难以预测的结果。
②软实时任务。它也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会很大。
3、实时系统与分时系统特征的比较
1)多路性。实时控制系统的多路性主要表现在系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制。而分时系统中的多路性则与用户情况有关,时多时少。
2)独立性。实时信息处理系统中的每个终端用户在向shishixitong 提出服务请求时,是彼此独立地操作,互不干扰;而实时控制系统中,对信息的采集和对对象的控制也都是彼此互不干扰。
3)及时性。实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定的;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微秒。
4)交互性。实时信息处理系统虽然也具有交互性,但这里人与系统的交互仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理和资源共享等服务。
5)可靠性。分时系统虽然也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性。因为任何差错都可能带来巨大的经济损失,甚至是无法预料的灾难性后果,所以在实时系统中,往往都采取了多级容错措施来保障系统的安全性及数据的安全性。
1.2.6 微机操作系统的发展
1、单用户单任务操作系统
2、单用户多任务操作系统
3、多用户多任务操作系统
1.3 操作系统的基本特性
并发、共享、虚拟、异步。
并发特征是操作系统最重要的特征,其他三个特征都是以并发特征为前提的。
1.3.1 并发性
1、并行与并发
并行性是指两个或多个事件在同一时刻发生;并发性是指两个或多个事件在同一时间间隔内发生。
2、引入进程
进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的。是一个能独立运行的活动实体。
通常的程序是静态实体,在多道程序系统中,它们是不能独立运行的,更不能和其它程序并发执行。在操作系统中引入进程的目的,就是为了使多个程序能并发执行。
引入进程事实上可以在内存中存放多个用户程序,分别为它们建立进程后,这些程序可以并发执行,亦即实现多道程序运行。这样能极大提高系统资源的利用率,增加系统的吞吐量。
3、引入线程
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的 OS 中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。
1.3.2 共享性
在操作系统环境下,共享 是指系统中的资源可供内存中多个并发的进程功能使用,相应地,把这种资源共同使用成为资源共享,或成为资源复用。
目前主要实现资源复用的方式有:
1)互斥共享方式
2)同时访问方式
1.3.3 虚拟技术
操作系统中的所谓“虚拟”,是指通过某种技术把一个物理实体变为若干个逻辑上的对应物。物理实体是实的,即实际存在的,而后者是虚的,近视用户感受上的东西。相应的,用于实现虚拟的技术成为虚拟技术。在操作系统中利用了两种方式实现虚拟技术,即时分复用技术和空分复用技术。
1、时分复用技术
时分复用,亦即分时使用方式
1)虚拟处理机技术
2)虚拟设备技术
2、空分复用技术
1)虚拟磁盘技术
2)虚拟存储器技术
1.3.4 异步性
进程是以人们不可预知的速度向前推进,此即进程的异步性。但只要在操作系统中配置有完善的进程同步机制,且运行环境相同,作业经多次运行都会获得完全相同的结果。因此,异步运行方式是允许的,而且是操作系统的一个重要特征。
1.4 操作系统的主要功能
操作系统的主要任务,是为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊的、高效的运行,并能最大限度的提高系统中各种资源的利用率和方便用户的使用。为实现上述任务,操作系统应具有以下功能:处理机管理,存储器管理,设备管理和文件管理。
1.4.1 处理机管理功能
处理机管理的主要功能是创建和撤销进程,对诸进程的运行进行协调,实现进程之间的信息交换,以及按照一定的算法把处理及分配给进程。
1、进程控制
进程控制的主要功能是为作业创建进程,撤销已结束的进程,以及控制进程在运行过程中的状态转换。
2、进程同步
进程同步的主要任务是为多个进程的运行进行协调。有两种协调方式:
1)进程互斥方式:这是指诸进程在对临界资源进行访问时,应采用互斥方式;
2)进程同步方式:这是指在相互合作去完成功能任务的诸进程间,由同步机构对他们的执行次序加以协调。
3、进程通信
在多道程序环境下,为了加速应用程序的运行,应在系统中建立多个进程,并且再为一个进程建立若干个线程,由这些进程(线程)相互合作去完成一个共同的任务。
4、调度
1)作业调度
作业调度的基本任务是从后备队列中按照一定的算法,选择出若干个作业,为他们分配运行所需的资源。在将他们调入内存后,便分别为他们建立进程,使他们都成为可能获得处理机的就绪进程,并按照一定的算法将他们插入就绪队列。
2)进程调度
进程调度的任务是从进程的就绪队列中,按照一定的算法选出一个进程,把处理机分配给它,并为它设置运行现场,使进程投入执行。值得提出的是,在多线程OS中,通常是把线程作为独立运行和分配处理机的基本单位,为此,须把就绪线程排成一个队列,每次调度时,是从就绪线程队列中选出一个线程,把处理机分配给它。
1.4.2 存储器管理功能
存储器的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及能从逻辑上扩充内存。
1、内存分配
内存分配的主要任务是为每道程序分配内存空间,使它们“各得其所”;提高存储器的利用率,以减少不可用的内存空间;允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。
为了实现内存分配,在内存分配的机制中应具有这样的结构功能:
1)内存分配数据结构。该结构用于记录内存空间的使用情况,作为内存分配的依据。
2)内存分配功能。系统按照一定的内存分配算法为用户程序分配内存空间。
3)内存回收功能。系统对用用户不再需要的内存,通过用户的释放请求去完成系统的回收功能。
2、内存保护
内存保护的主要任务是确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰;决不允许用户程序访问操作系统的程序和数据;也决不允许用户程序转移到非共享的其他用户程序中去执行。
3、地址映射
4、内存扩充
为了能在逻辑上扩充内存,系统必须具有内存扩充机制,用于实现下述各功能:
1)请求调入功能。
允许在装入一部分用户程序和数据的情况下,便能启动该程序运行。在程序运行过程中,若发现要继续运行时所需的程序和数据尚未装入内存,可向OS发出请求,由OS从磁盘中将所需部分调入内存,以便继续运行。
2)置换功能。
若发现在内存中已无足够的空间来装入需要调入的程序和数据时,系统应能将内存中的一部分暂时不用的程序和数据调至盘上,以腾出内存空间,然后再将所需调入的部分装入内存。
1.4.3 设备管理功能
完成用户进程提出的 I/O 请求;为用户进程分配所需的 I/O 设备;提高 I/O 设备和 CPU 的利用率;提高 I/O 速度;方便用户使用 I/O 设备。
设备管理应具有:缓冲管理,设备分配,设备处理以及虚拟设备等功能。
1、缓冲管理:
2、设备分配:
设备分配的基本任务是根据用户进程的 I/O 请求、系统的现有资源情况以及按某种设备的分配策略,为之分配其所需的设备。
3、设备处理:
设备处理的基本任务是用于实现 CPU 和设备控制之间的通信。
4、虚拟设备:
1.4.4 文件管理功能
文件管理的主要任务是对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。
为此,文件管理应具有对文件存储空间的管理、目录管理、文件的读/写管理,以及文件的共享与保护等功能。
1、文件存储空间的管理
为每个文件分配必要的外存空间,提高外存利用率,并能有助于提高文件系统的存、取速度。
2、目录管理
为每个文件建立其目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取,即用户只需提供文件名便可对该文件进行存取。
3、文件的读/写管理和保护
1)文件的读、写管理
根据用户的请求,从外存中读取数据,或将数据写入外存。
2)文件保护
①防止未经核准的用户存取文件
②防止冒名顶替存取文件
③防止以不正确的方式使用文件
1.4.5 操作系统与用户之间的接口
用户与操作系统的接口:
1、用户接口
它是提供给用户使用的接口,用户可通过该接口取得操作系统的服务。
1)联机用户接口
为联机用户提供,它由一组键盘操作命令及命令解释程序所组成。
2)脱机用户接口
为批处理作业的用户提供的,故也称批处理用户接口。该接口由一组作业控制语言(JCL)组成。批处理作业的用户不能直接与自己的作业交互作用,只能委托系统代替用户对作业进行干预和控制。这里的作业控制语言 JCL 便是把需要对作业进行的控制和干预事先写在作业说明书上,然后将作业和作业说明书一起提供给系统。
3)图形用户接口
图形用户接口采用了图形化的操作界面,用非常容易识别的各种图标将系统的各项功能、各种应用程序和文件,直观、逼真的表示出来。
2、程序接口
是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。
1.5 OS 结构设计
1.5.1 传统的操作系统结构
1、无结构操作系统
早起开发系统时,设计者只是把注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想,此时的 OS 是为数众多的一组过程的集合,每个过程可以任意的相互调用其他过程,致使操作系统内部既复杂又混乱,因此,这种 OS 是无结构的,也有人把它称为整体系统结构。
2、模块化结构 OS
1)基本概念:该技术是基于“分解”和“模块化”原则来控制大型软件的复杂度。为使 OS 具有较清晰的结构,按其功能划分为若干个具有一定独立性和大小的模块;每个模块具有某方面的功能,并仔细规定好各模块间的接口。若子模块过大,可以再进一步进行细分。这种设计方法称为模块-接口法,由此构成的操作系统就是具有模块化结构的操作系统。如图1-6:
2)模块的独立性:如果再划分模块时,将模块划分的太小,虽然可以降低模块本身的复杂性,但会引起模块之间的联系过多,而会造成系统混乱;如果模块划分的过大,又会增加模块内部的复杂性,使内部的联系增加。因此在划分模块时,应在两者间进行权衡:
①内聚性:指模块内部各部分之间的紧密程度,内聚性越高,模块的独立性越强。
②耦合度:指模块间相互联系和相互影响的程度,耦合度越低、模块化的独立性越好。
3)模块接口法的优缺点:
①提高 OS 设计的正确性、可理解性和可维护性。
②增强 OS 的适应性。
③加速 OS 的开发过程。
模块化结构存在的问题:
①在OS 设计时,对各模块间的接口规定很难满足在模块完成后对接口的实际需求。
②在模块化结构设计中,各模块的设计齐头并进,无法寻找到一个可靠的决定顺序,造成各种无法决定的“无序性”,使设计人员很难做到“设计中的每一步决定都是建立在可靠地基础上”,故模块-接口法又被称为“无序模块法”。
3、分层式结构 OS
1)基本概念:为了将模块―接口法中“决定顺序”的无序性变为有序性,引入了有序分层法。分层法的设计任务是,在目标系统An和裸机系统(又称宿主系统)A0之间,铺设若干个层次的软件A1、A2、A3、...、An-1,使An通过An-1、An-2、...、A2、A1层,最终能在A0上运行。在操作系统中,常采用自底向上法来铺设这些中间层。
自底向上的分层设计的基本原则是:每一步设计都是建立在可靠的基础上。为此规定,每一层仅能使用其底层所提供的功能和服务。
2)分层结构的主要优点:
①易保证系统的正确性。自上而下的设计方式,是所有的设计中的决定都是有序的,或者说是建立在较为可靠的基础上,这样比较容易保证整个系统的正确性。
②易扩充和易维护性。在系统中增加、修改或替换一个层次中的模块或整个层次,只要不改变相应层次间的接口,就不会影响其它层次,这必将使系统维护和扩充变得更加容易。
分层结构的主要缺点:系统效率降低了。由于层次结构是分层单向依赖的,因此必须在相邻层之间都要建立层次间的通信机制,OS 每执行一个功能,通常要自上而下地穿越多个层次,这无疑会增加系统的通信开销,从而导致系统效率的降低。
1.5.2 客户/服务器模式
客户/服务器(Client/Server)模式可简称为 C/S 模式,在20世纪90年代已风靡全球,不论是LAN,还是企业网,以及Internet所提供的多种服务,都广泛采用了客户/服务器模式。
1、客户/服务器模式的组成
客户/服务器系统主要由客户机、服务器和网络系统三个部分组成。
1)客户机:通常在一个LAN网络上连接有多台网络工作站(简称客户机),每台客户机都是一个自主计算机,具有一定的处理能力,客户进程在其上运行,平时它处理一些本地业务,也可发送一个消息给服务器,以请求某项服务。
2)服务器:通常是一台规模较大的机器,在其上驻留有网络文件系统或数据库系统等,它应能为网上所有的用户提供一种或多种服务。
3)网络系统:用于连接所有客户机和服务器,实现它们之间通信和网络资源共享的系统。
2、客户/服务器之间的交互
1)客户发送请求消息
2)服务器接收消息
3)服务器回送消息
4)客户机接收消息
3、客户/服务器模式的优点
1)数据的分布处理和存储
2)便于集中管理
3)灵活性和可扩充性
4)易于改编的应用软件
1.5.3 面向对象的程序设计
1、面向对象技术的基本概念
所谓对象,是指在现实世界中具有相同属性、服从相同规则的一系列事物的抽象,而把其中的具体事物称为对象的实例。
1)对象
在面向对象的技术中,是利用被封装的数据结构(变量)和一组对它进行操作的过程(方法),来表示系统中的某个对象的。面向对象中的方法是用于执行某种功能的过程,它可以改变对象的状态,更新对象中的某些数据值或作用于对象所要访问的外部资源。
对象中的变量(数据)对外是隐蔽的,因而外界不能对它直接进行访问,必须通过该对象中的一组方法(操作函数)对它进行访问。同样对象中的一组方法实现细节也是隐蔽的,所以对象中的变量可以得到很好的保护,而不会允许未经授权者使用和不正确的操作。
2)对象类
定义了一组变量和针对该变量的一组方法,用它们来描述一组对象的功能属性和行为。类是在对象上的抽象,对象则是类的实例。对象类中所定义的变量在实例中均有具体的值。
3)继承 在面向对象的技术中,可以根据已有的类来定义一个新的类,新的类被称为子类(B),原来的类被称为父类(A)。如图1-9:
继承是父类和子类之间共享变量和方法的机制,该机制规定,子类自动继承父类中定义的变量和方法,并允许子类在增加新的内容。一个父类可以定义多个子类,它们分别是父类的某种特例,父类描述了子类的公共变量和方法,这些子类又可以定义自己的子类,通过此途径可以生成一个继承的层次。另外,也允许一个子类有两个父类或者多个父类,它可以从多个父类获得继承,此时成为“多重继承”。
2、面向对象技术的优点
1)通过“重用”提高产品质量和生产率
2)使系统具有更好的易修改性和易扩展性
通过封装,可隐蔽对象中的变量和方法,因而当改变对象中的变量和方法时,不会影响到其他部分,从而可方便地修改老的对象类。另外,继承是面向对象技术的重要特性,在创建一个新对象类时,通过利用继承特性,可显著地减少开发的时空开销,使系统具有更好的易扩展性和灵活性。
3)更易于保证系统的“正确性”和“可靠性”
对象是构成操作系统的基本单元,由于可以独立的对它进行测试,易于保证每个对象的正确性和可靠性,因此也就别叫容易保证整个系统的正确性和可靠性。此外,封装对对象类中的信息进行了隐蔽,可以有效地防止对未经授权者的访问和用户不正确的使用,有助于构建更为安全的系统。
1.5.4 微内核 OS 结构
1、微内核操作系统的基本概念
1)足够小的内核
在微内核操作系统中,内核是精心设计的、能实现现代 OS 最基本的核心功能部分。微内核并非是一个完整的 OS,而只是操作系统中最基本的部分,它通常用于:①实现与硬件紧密相关的处理;②实现一些较基本的功能;③负责客户和服务器之间的通信。
2)基于客户/服务器模式
将操作系统中最基本的部件放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。例如用于提供对进程(线程)进行管理的进程(线程)服务器,提供虚拟存储器管理功能的虚拟存储器服务器,提供 I/O 设备管理的 I/O 设备管理服务器等。运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。如图1-10:在单机环境下的客户/服务器模式
3)应用“机制与策略分离”原理
所谓机制,是指实现某一功能的具体执行机构。而策略,则是在机制的基础上,借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。
4)采用面向对象技术
操作系统是一个及其复杂的大型软件系统,可以基于面向对象技术中的“抽象”和“隐蔽”原则控制系统的复杂性,再进一步利用“对象”、“封装”和“继承”等概念来确保操作系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,并提高操作系统的设计速度。
2、微内核的基本功能
1)进程(线程)管理
如何确定每类用户(进程)的优先级,以及应如何修改它们的优先级等,都属于策略问题,可将它们放入微内核外的进程(线程)管理服务器中。
2)低级存储器管理
通常在微内核中,只配置最基本的低级存储器管理机制。而实现虚拟存储器管理的策略,则包含采取何种页面置换算法,采用何种内存分配与回收策略等,应将这部分放在微内核外的存储器管理服务器中去实现。
3)中断和陷入处理
大多数微内核操作系统都是将与硬件紧密相关的一小部分放入微内核中处理。此时微内核的主要功能,是捕获所发生的中断和陷入事件,并进行相应的前期处理。如进行中断现场保护,识别中断和陷入类型,然后将有关事件的信息转换为消息后,发给相应的服务器。由服务器根据中断或陷入的类型,调用相应的处理程序来进行后期处理。
在微内核 OS 中是将进程管理,存期管理以及 I/O 管理这些功能一分为二,属于极致的很小一部分放在微内核中,另外绝大部分放在微内核外的各种服务器中来实现。
3、微内核操作系统的优点
1)提高了系统的可扩展性
由于微内核 OS 的许多功能是由相对独立的服务器软件来实现的,当开发了新的硬件和软件时,微内核 OS 只需在相应的服务器中增加新的功能,或再增加一个专门的服务器。
2)增强了系统的可靠性
由于微内核是出于精心设计和严格测试的,容易保证其正确性;另一方面是它提供了规范而精简的应用程序接口(API),为微内核外部的程序编制高质量的代码创造了条件。此外,由于所有服务器都是运行在用户态,服务器与服务器之间采用的是消息传递通信机制,因此,当某个服务器出现错误时,不会影响内核,也不会影响其他服务器。
3)可移植性
在微内核结构的操作系统中,所有与特定 CPU 和 I/O 设备硬件有关的代码,均放在内核和内核下面的硬件隐藏层中,而操作系统其它绝大部分(即各种服务器)均与硬件平台无关,因而,把操作系统移植到另一个计算机硬件平台上所需的修改是比较小的。
4)提供了对分布式系统的支持
由于在微内核 OS 中,客户和服务器之间以及服务器和服务器之间的通信,是采用消息传递通信机制进行的,致使微内核 OS 能很好地支持分布式系统和网络系统。
事实上,只要在分布式系统中赋予所有进程和服务器唯一的标识符,在微内核中再配置一张系统映射表(即进程和服务器的标识符与它们所驻留的机器之间的对应表),在进行客户和服务器通信时,只需在所发送的消息中表上所发送进程和接收进程的标识符,微内核便可利用系统映射表,将消息发往目标,而无论目标是驻留在哪台机器上。
5)融入了面向对象技术
在设计微内核 OS 时,采用了面向对象的技术,其中的“封装”、“继承”、“对象类”和“多态性”,以及在对象之间采用消息传递机制等,都十分有利于提高系统的的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,而且还能显著地减少开发系统所付出的开销。
4、微内核系统存在的问题
在微内核 OS 中,由于客户和服务器及服务器和服务器之间的通信,都需通过微内核,只是同样的服务请求至少需要四次上下文切换。第一次是发生在客户发送请求消息给内核,以请求取得某服务器特定的服务时;第二次是发生在由内核把客户的请求消息发往服务器时,第三次是当服务器完成客户的请求后,把响应消息发送到内核时;第四次是在内核将响应消息发送给客户时。
实际情况是,当某个服务器自身尚无能力完成客户请求,而需要其他服务器帮助时,如图1-11所示,其中的文件服务器还需要磁盘服务器的帮助,这时就需要进行八次上下文的切换。
为了改善运行效率,可以重新把一些常用的操作系统的基本功能,由服务器移入微内核中,这样可使客户对常用操作系统的功能的请求所发生的用户/内核模式和上下文切换的次数。但是这又会使微内核的容量明显的增大,在小型接口定义和适应性方面的有点也有所下降,同时也提高了微内核的设计代价。