目录
- 引言
-
- 1.1操作系统的目标和作用
-
- 1.1.1操作系统的目标
- 1.1.2 操作系统的作用
- 1.1.3推动操作系统发展的主要动力
- 1.2 操作系统的发展过程
-
- 1.2.2单道批处理系统
- 1.2.3 多道批处理系统
- 1.2.4 分时系统
- 1.2.5 实时系统
- 1.2.6 微机操作系统的发展
- 1.3 操作系统的基本特性
-
- 1.3.1 并发
- 1.3.2 共享
- 1.3.3 虚拟
- 1.3.4 异步
- 1.4 操作系统的主要功能
-
- 1.4.1处理机管理功能
- 1.4.2 存储器管理功能
- 1.4.3 设备管理功能
- 1.4.4. 文件管理功能
- 1.4.5 操作系统与用户之前的接口
- 1.4.6 现代操作系统的新功能
- 1.5 OS结构设计
-
- 1.5.1 传统操作系统结构
- 1.5.2 客户/服务器模式(C/S)简介
- 1.5.3 面向对象的程序设计技术简介
- 1.5.4 微内核OS结构
- 本章思维导图
引言
大多数读者都会 Windows、Linux、FreeBSD或OS X 等某个操作系统有些体验,但是表面现象是会骗人的。用户与之交互的程序,基于文本的通常是 shell,基于图标的则称为:图形化用户界面,实际上他们并不是操作系统的一部分,尽管这些程序使用操作系统来完成工作。
1.1操作系统的目标和作用
1.1.1操作系统的目标
在计算机系统上配置操作系统,其主要目标是:方便性、有效性、可扩充性和开放性。
1.1.2 操作系统的作用
操作系统在计算机系统中起的作用,可以从:用户、资源管理以及资源抽象等多个不同的角度来进行分析和讨论。
1.方便OS作为用户与计算机硬件系统之间的接口
OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。换个活法可以说:用户在OS的帮助下能够方便、快捷、可靠地操纵计算机硬件和运行自己的程序图1-1是OS作为接口的示意图。
由图1-1 我们可以看出,用户一共有三种方式来使用计算机:命令方式、系统调用和图表——窗口方式来实现与操作系统的通信,并取得它的服务。2.方便OS作为计算机系统资源的管理者
一个计算机系统通常都含有多种硬件和软件资源。归纳起来可以将这些资源分为四类:处理机、存储器、I/O设备、文件(数据和程序),而OS的主要功能也正是对着四类资源进行有效的管理。
处理机管理:用于分配和控制处理机。
存储器管理:主要负责内存的分配与回收
I/O设备管理:负责I/O 设备的分配(回收)与操纵
文件管理:用于实现对文件的存取、共享和保护。
可见,OS的确是计算机系统资源的管理者。
当一台计算机系统同时供多个用户使用时,诸多用户对系统中共享资源的需求(包括数量和事件)有可能发生冲突。为此,操作系统必须对使用资源的请求进行授权,一协调诸多用户对共享资源的使用。
3.OS实现了对计算机资源的使用
对于一台完全没有软件的计算机系统(也就是裸机),因为它向用户提供仅仅是硬件接口,因此,用户必须对物理接口的实现细节有充分的了解,这一步导致了物理机难于广泛使用。
为了方便用户使用 I/O 设备,在裸机上覆盖上一层 I/O 设备管理软件。如图1-2所示。
由它(图1-2)来实现对 I/O设备操作的细节,并向上将 I/O 设备抽象为一组 数据结构以及一组 I/O 操作命令,如 read、write命令。
通常把覆盖了上述软件的机器称为扩充机器或者虚机器。它向用户提供了一个对硬件操作的抽象模型。用户可利用该模型提供的接口使用计算机,不需要去了解物理接口实现的细节,从而使用户更容易地使用计算机硬件资源。—->I/O设备管理软件实现了对计算机硬件操作的第一个层次的抽象。
同理,为了方便用户使用文件系统,又可以在 I/O 设备管理软件上在覆盖一层用于文件管理的软件。由它来实现对文件操作的细节,并向上层提供一组实现对文件进行存取操作的数据结构及命令。这样,用户可以利用该软件提供的数据结构及命令对文件进行存取。—->那么 文件管理软件实现了对硬件资源操作的第二个层次的抽象。
如果,我们再在文件管理软件上在覆盖一层面向用户的窗口软件,使得用户能够在窗口环境下方便的使用计算机,从而形成一台功能更强的虚机器。由此可知,OS是铺设在计算机硬件上的多层软件的集合,他们不仅增强了系统的功能,还隐藏了对硬件操作的具体细节,实现了对计算机硬件操作的多个层次的抽象模型。值得说明的是,不仅可在底层对一个硬件资源加以抽象,还可以在高层对该资源底层已抽象的模型再次进行抽象,称为更高层的抽象模型。随着抽象层次的提高,抽象接口所提供的功能就越强,用户使用起来也就越方便。
1.1.3推动操作系统发展的主要动力
1. 不断提高计算机资源利用率2. 方便用户3. 器件的不断更新换代4. 计算机体系结构的不断发展5. 不断提出新的应用需求
1.2 操作系统的发展过程
1. 人工操作方式两个缺点:(1)用户独占全机,即一台计算机的全部资源由上机用户所独占。(2)CPU等待人工操作。当用户进行装带、卸带等人工操作时,CPU及内存等资源是空闲的。人工操作方式严重降低了计算机资源的利用率,这就是人机矛盾。虽然CPU的速度在不断提高,但是 I/O设备的速度却提高缓慢,这使得 CPU 与 I/O 设备之间速度不匹配的矛盾更加突出。为此,曾先后出现了如:通道基础、缓冲技术,然而都未能很好地解决上所述矛盾,直至后来引入脱机输入/输出技术,才获得了相对较为满意的结果。2. 脱机输入/输出方式为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机I/O技术。该技术是事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当CPU需要这些程序和数据时,再从磁带上高速地调入内存。类似地,当CPU需要输出时,可先由CPU把数据直接从内存高速地输送到磁带上,然后在另一台外围机的控制下,再将磁带上的结果通过相应的输出设备输出。图1-3示出了脱机输入/输出过程。由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的情况下进行的,故称为脱机输入/输出方式。反之,把在主机的直接控制下进行输入/输出的方式称为联机输入/输出(On-Line I/O)方式。
主要优点:(1)减少了CPU的空闲时间。装带,卸带,以及将数据从低速 I/O设备送到高速磁带上的操作。都是在脱机情况下由外围机完成的,并不占用主机时间,从而有效地减少 CPU的空闲时间。(2)提高了 I/O 速度。当CPU在运行中需要输入数据时,是直接从高速的磁带上将数据输入到内的。极大的提高了 I/O 速度,从而进一步减少了 CPU的空闲时间。
1.2.2单道批处理系统
- 单道批处理系统的处理过程:
首先由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业;当该作业处理完成时,又把控制权交还给监督程序,再由监督程序把磁带上的第二个作业调入内存。计算机系统就这样自动地一个作业紧接一个作业地进行处理,直至磁带上的所有作业全部完成,这样便形成了早期的批处理系统。虽然系统对作业的处理是成批进行的,但在内存中始终只保持一道作业,故称为单道批处理系统。图1-4示出了单道批处理系统的处理流程。
由删除不难看出,单道批处理系统是在==解决人际矛盾和 CPU与 I/O 设备速度不匹配矛盾的过程中形成的。换言之,批处理系统旨在提高系统资源的利用率和系统吞吐量。单这种单道批处理系统仍然不能充分地利用系统资源,所以目前已经用的很少了。
- 单道批处理系统的缺点
单道批处理系统最主要的缺点是,系统中的资源得不到充分的利用。这是因为在内存中仅有一道程序,每逢该程序在运行中发出I/O请求后,CPU便处于等待状态,必须在其
I/O完成后才继续运行。又因I/O设备的低速性,更使CPU的利用率显著降低。图1-5示
出了单道程序的运行情况,从图可以看出:在t2——》t3、t6——》t7时间间隔内CPU空闲。
为了能在系统中运行较大的作业,通常在计算机中都配置了较大容量的内存,但实际情况是有80%以上的作业都属于中小型,因此在单道程序环境下,也必定造成内存的浪费。类似地,为了满足各种类型的作业需要,在系统中将会配置多种类型的I/O设备。显然在单道程序环境下也不能充分利用系统资源。
1.2.3 多道批处理系统
- 多道程序设计的基本概念
为了进一步提高资源的利用率和系统吞吐量在该系统中,用户所提交的作业先存放在外存上,并排成一个队列,该队列称为后背队列,然后由作业调度程序按一定的算法,从后背队列中选择若干个作业调入内存,使他们共享CPU和系统中的各种资源。
由于同时在内存中装有若干道程序,这样便可以在运行程序A时,利用其因I/O操作而暂停执行时的CPU空档时间,再调度另一道程序B运行,同样可以利用程序B在I/O操作时的CPU空档时间,再调度程字C运行,使多道程序交替地运行,这样便可以保持CPU处于忙碌状态。图1-6示出了四道程序时的运行情况。
2. 多道批处理系统的优缺点
(1)资源利用率高。引入多道批处理能使多道程序交替运行,以保持CPU处于忙碌状态;在内存中装入多道程序可提高内存的利用率;此外还可以提高IO设备的利用率。
(2)系统吞吐量大。能提高系统吞吐量的主要原因可归结为:
①CPU和其它资源保持“忙碌”状态;
②仅当作业完成时或运行不下去时才进行切换,系统开销小。
(3)平均周转时间长。由于作业要排队依次进行处理,因而作业的周转时间较长,通常需几个小时,甚至几天。
(4)无交互能力。用户一旦把作业提交给系统后,直至作业完成,用户都不能与自己的作业进行交互,使得修改和调试程序极不方便。
- 多道批处理系统需要解决的问题
(1)处理机争用问题。既要能满足各道程序运行的需要,又要能提高处理机的利用率。
(2)内存分配和保护问题。系统应能为每道程序分配必要的内存空间,使它们“各得其所”,且不会因某道程序出现异常情况而破坏其它程序。
(3) I/O 设备分配问题。系统应采取适当的策略来分配系统中的I/O设备,以达到既能方便用户对设备的使用,又能提高设备利用率的目的。
(4)文件的组织和管理问题。系统应能有效地组织存放在系统中的大量的程序和数据,使它们既便于用户使用,又能保证数据的安全性。
(5)作业管理问题。系统中存在着各种作业(应用程序),系统应能对系统中所有的作业进行合理的组织,以满足这些作业用户的不同要求。
(6)用户与系统的接口问题。为使用户能方便的使用操作系统,OS还应提供用户与OS之间的接口。为此,应在计算机系统中增加一组软件,用以对上述问题进行妥善、有效的处理。这组软件应包括:能有效地组织和管理四大资源的软件、合理地对各类作业进行调度和控制它们运行的软件,以及方便用户使用计算机的软件。正是这样一组软件构成了操作系统。
据此,我们可以把操作系统定义为:操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。
1.2.4 分时系统
推动分时系统形成和发展的主要动力是为了满足用户对人机交互的需求。用户的需求具体表现在一下几个方面:
(1) 人机交互。每当程序员写好一个新程序时,都需要上机进行调试。由于新编程序难免存在一些错误或不当之处,需要进行修改,因此用户希望能像早期使用计算机时一样,独占全机并对它进行直接控制,以便能方便地对程序中的错误进行修改。也就是,用户希望能进行人一机交互。.
(2)共享主机。在20世纪60年代,计算机还十分昂贵,一台计算机要同时供很多用户共享使用。显然,用户们在共享一台计算机时,每人都希望能像独占时一样,不仅可以随时与计算机进行交互,而且还不会感觉到其他用户的存在。
由上所述不难得知,分时系统是指,在一台主机上连接了多个配有显示器和键盘的终端并由此所组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源。
2.分时系统实现中的关键问题
多道批处理系统中,用户无法与自己的作业交互的主要原因是:作业都先驻留
在外存上,即使以后被调入内存,也要经过较长时间的等待后方能运行,用户无法与自己的作业进行交互。为了能够实现人机交互,必须解决的关键问题是,如何使用户能与自己的作业进行交互。
系统首先必须能提供多个终端,同时给多个用户使用;其次,当用户在自己的终端上键入命令时,系统应能及时接收,并及时处理该命令,再将结果返回给用户。
此后,用户可根据系统返回的响应情况,再继续键入下一条命令,此即人一机交互。亦即,允许有多个用户同时通过自己的键盘键入命令,系统也应能全部及时接收并处理。
(1) 及时接收:要做到及时接收多个用户键入的命令或数据,只需要在系统中配置一个多路卡(实现分时多路复用)即可。此外,为了能使从终端上输入的数据被依次逐条地进行处理,还需要为每个终端配置一个缓冲区,用来暂存用户键入的命令(或数据)。
(2)及时处理:人机交互的关键在于,用户键入命令后,能对自己的作业和运行及时的实施控制,或者进行修改。因此,各个用户的作业都必须驻留在内存中,并能频繁的获得处理及运行,否则,用户键入的命令将无法作用到自己的作业上。由此可见,为了实现人机交互,必须彻底地改变原来批处理系统的运行方式,转而采用下面的方式
a. 作业直接存入内存。因为作业在磁盘是不能运行的。
b. 采用轮转运行方式,如果一个作业独占CPU连续运行,那么其它的作业就没有机会被调度运行。为避免一个作业长期独占处理机,引入了时间片的概念。
一个时间片,就是一段很短的事件(例如30ms)。系统规定每个作业每次只能运行一个时间片,然后就暂停改作业的运行,并立即调度下一额作业运行。如果在不长的时间内能使所有的作业都执行一个时间片的时间,便可以让每个用户都能及时的与自己的作业进行交互,从而可使用户的请求得到及时响应。
- 分时系统的特征
分时系统与多道批处理系统相比,具有非常明显的不同特性,可以归纳成一下四个方面:
(1)多路性。该特性是指系统允许将多台终端同时连接到一台主机上,并按分时原则为每个用户服务。多路性允许多个用户共享一台计算机, 显著地提高了资源利用率,降低了使用费用,从而促进了计算机更广泛的应用。
(2)独立性。该特性是指系统提供了这样的用机环境,即每个用户在各自的终端上进行操作,彼此之间互不干扰,给用户的感觉就像是他一人独占主机进行操作。
(3)及时性。及时性是指用户的请求能在很短时间内获得响应。这-一时间间隔是根据人们所能接受的等待时间确定的,通常仅为1~3秒钟。
(4) 交互性。交互性是指用户可通过终端与系统进行广泛的人机对话。其广泛性表现在:用户可以请求系统提供多方面的服务,如进行文件编辑和数据处理,访问系统中的文件系统和数据库系统,请求提供打印服务等。
1.2.5 实时系统
实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
- 实时系统的类型
工业(武器)控制系统、信息查询系统、多媒体系统、嵌入式系统
- 实时任务的类型
周期性实时任务和非周期实时任务、硬实时和软实时任务
- 实时系统与分时系统特征的比较
(1)多路性:信息查询系统和分时系统中的多路性都表现为系统按分时原则为多个终端用户服务;
分时控制系统的多路性:指系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制=
(2)独立性。信息查询系统中的每个终端用户在与系统交互时,彼此相互独立互不干扰;同样在实时控制系统中,对信息的采集和对对象的控制也都是彼此互不干扰的。
(3)及时性。信息查询系统对实时性的要求是依据人所能接受的等待时间确定的,而多媒体系统实时性的要求是,播放出来的音乐和电视能令人满意。实时控制系统的实时性则是以控制对象所要求的截止时间来确定的,一般为秒级到毫秒级。
(4)交互性。在信息查询系统中,人与系统的交互性仅限于访问系统中某些特定的专用服务程序。它并不像分时系统那样,能向终端用户提供数据处理、资源共享等服务。而多媒体系统的交互性也仅限于用户发送某些特定的命令,如开始、停止、快进等,由系统立即响应。
(5)可靠性。分时系统要求系统可靠,实时系统要求系统高度可靠,因为任何差错都可能带来无法预料的灾难性后果。因此,在实时系统中,往往都采取了多级容错措施来保障系统的安全性及数据的安全性。
1.2.6 微机操作系统的发展
-
单用户单任务操作系统
单用户单任务操作系统的含义是,只允许一个用户上机,且只允许用户程序作为一个任务运行,这是最简单的微机操作系统,主要配置在8位和16位微机上,最有代表性的单用户单任务微机操作系统是CP/M和MS-DOS。 -
单用户多任务操作系统
单用户多任务操作系统的含义是,只允许一个用户.上机,但允许用户把程序分为若干个任务,使它们并发执行,从而有效地改善了系统的性能。目前在32位微机上配置的操作系统,基本上都是单用户多任务操作系统。其中最有代表性的是由微软公司推出了Windows。 -
多用户多任务操作系统.
多用户多任务操作系统的含义是,允许多个用户通过各自的终端,使用同一台机器,共享主机系统中的各种资源,而每个用户程序又可进一步分为几个任务,使它们能并发执行,从而可进一步提高资源利用率和系统吞吐量。在大、中和小型机中所配置的大多是多用户多任务操作系统,而在32位微机上,也有不少配置的是多用户多任务操作系统,其中最有代表性的是UNIX OS。现在最具有影响的两个能运行在微机上的 Unix操作系统变形是 Solaris OS和Linux OS。
1.3 操作系统的基本特性
前面所介绍的多道批处理系统、分时系统和实时系统这三种基本操作系统都具有各自不同的特征,如批处理系统有着高的资源利用率和系统吞吐量;分时系统能获得及时响应;实时系统具有实时特征。除此之外,它们还共同具有并发、共享、虚拟和异步四个基本特征。
1.3.1 并发
正是因为系统中的程序能并发执行这一特性,才使得 OS 能有效地提高系统中的资源利用率,增加系统的吞吐量。
- 并行与并发:并行指的是两个或多个事件在同一时刻发生。并发则是在同一时间间隔内发生。在多道程序环境下,并发在宏观上同时执行,微观上分时地交替执行。
- 引入进程
在一个未引入进程的系统中,在属于同一个应用程序的计算程序和I/O 程序之间只能.是顺序执行,即只有在计算程序执行告一段落后,才允许I/O程序执行;反之,在程序执
行I/O操作时,计算程序也不能执行。
但在为计算程序和I/O程序分别建立一个进程后,这两个进程便可并发执行。若对内存中的多个程序都分别建立一个进程, 它们就可以并发执行,这样便能极大地提高系统资源的利用率,增加系统的吞吐量。
所谓进程,是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。多个进程之间可以并发执行和交换信息。事实上,进程和并发是现代操作系统中最重要的基本概念,也是操作系统运行的基础,第二章会重点学习。
1.3.2 共享
一般情况下 的共享与操作系统环境下的共享其含义并不完全相同。前者只是说明某种资源能被大家使用,如图书馆中的图书能提供给大家借阅,但并未限定借阅者必须在同一时间(间隔)和同一地点阅读。又如,学校中的计算机机房供全校学生上机,或者说,全校学生共享该机房中的计算机设备,虽然所有班级的上机地点是相同的,但各班的上机时间并不相同。对于这样的资源共享方式,只要通过适当的安排,用户之间并不会产生对资源的竞争,因此资源管理是比较简单的。
而在OS环境下的资源共享或称为资源复用,是指系统中的资源可供内存中多个并发执行的进程共同使用。这里在宏观上既限定了时间(进程在内存期间),也限定了地点(内存)。对于这种资源共享方式,其管理就要复杂得多,因为系统中的资源远少于多道程序需求的总和,会形成它们对共享资源的争夺。所以,系统必须对资源共享进行妥善管理。由于资源属性的不同,进程对资源复用的方式也不同,目前主要实现资源共享的方式有如下两种。
- 互斥共享方式
系统中的某些资源,如打印机、磁带机等,虽然可以提供给多个进程(线程)使用,但应规定在一段时间内,只允许一个进程访问该资源。为此,在系统中应建立一种机制,以保证多个进程对这类资源的互斥访问。
当进程A要访问某资源时,必须先提出请求。若此时该资源空闲,系统便可将之分配给请求进程A使用。此后若再有其它进程也要访问该资源,只要A未用完就必须等待。仅当A进程访问完并释放系统资源后,才允许另一进程对该资源进行访问。这种资源共享方式称为互斥式共享,把这种在一段时间内只允许一个进程访问的资源,称为临界资源(或独占资源)。系统中的大多数物理设备,以及栈、变量和表格,都属于临界资源,都只能被互斥地共享。为此,在系统中必须配置某种机制,用于保证诸进程互斥地使用临界资源。
2.同时访问方式
系统中还有另一类资源,允许在一段时间内由多个进程“同时”对它们进行访问。这里所谓的“同时”,在单处理机环境下是宏观意义上的,而在微观上,这些进程对该资源的访问是交替进行的。典型的可供多个进程“同时”访问的资源是磁盘设备。一些用重入码编写的文件也可以被“同时”共享,即允许若干个用户同时访问该文件。
并发和共享是多用户OS的两个最基本的特征。它们又是互为存在的条件。即
一方面资源共享是以进程的并发执行为条件的,若系统不允许并发执行也就不存在资源共
享问题;另一方面,若系统不能对资源共享实施有效管理,以协调好诸进程对共享资源的
访问,也必然会影响到诸进程间并发执行的程度,甚至根本无法并发执行。
1.3.3 虚拟
通过某种技术将一个物理实体编程若干个逻辑上的对应物的功能称为”虚拟“。前者是现实的,后者是虚幻的,事用户感觉上的东西。相应的,吧用于实现虚拟的技术称为虚拟技术。在OS中也是利用 时分复用和空分复用技术实现”虚拟“的。
- 时分复用技术:广泛利用该技术来实现==虚拟处理机、虚拟设备等,==使资源的利用率得以提高。时分复用技术能提高利用率的根本原因在于,他利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。
(1)虚拟处理机技术。利用多道程序设计技术,为每道程序建立至少-一个进程,让多道程序并发执行。此时虽然系统中只有一台处理机,但通过分时复用的方法,能实现同时(宏观上)为多个用户服务,使每个终端用户都认为是有一个处理机在专门为他服务。亦即,利用多道程序设计技术,可将一台 物理上的处理机虚拟为多台逻辑上的处理机,在每台逻辑处理机上运行一道程序,我们把用户所感觉到的处理机称为虚拟处理器。
(2)虚拟设备技术。我们还可以利用虚拟设备技术,也通过分时复用的方法,将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备。这样便可使原来仅允许在一段时间内由一个用户访问的设备(即临界资源),变为允许多个用户“同时”访问的共享设备,既宏观上能“同时”为多个用户服务。例如原来的打印机属于临界资源,而通过虚拟设备技术又可以把它变为多台逻辑上的打印机,供多个用户“同时”打印。关于虚拟设备技术将在第五章中介绍。
- 空分复用技术
20世纪初,电信业中就已使用频分复用技术来提高信道的利用率。它是指将–个频率范围比较宽的信道划分成多个频率范围较窄的信道(称为频带),其中的任何一个频带都仅
供一对用户通话。早期的频分复用技术只能将一条物理信道划分为几条到几十条话路,后
来又很快发展到成千上万条话路,每条话路供一对用户通话。再后来在计算机中也把空分
复用技术用于对存储空间的管理,用以提高存储空间的利用率。
如果说,多道程序技术(时分复用技术)是通过利用处理机的空闲时间运行其它程序,提高了处理机的利用率,那么,空分复用技术则是利用存储器的空闲空间分区域存放和运行其它的多道程序,以此来提高内存的利用率。
但是,单纯的空分复用存储器只能提高内存的利用率,并不能实现在逻辑上扩大存储器容量的功能,还必须引入虚拟存储技术才能达到此目的。虛拟存储技术在本质上是实现内存的分时复用,即它可以通过分时复用内存的方式,使一道程序仅在远小于它的内存空
间中运行。例如,一个100 MB的应用程序之所以可以运行在30 MB的内存空间,实质上
就是每次只把用户程序的一部分调入内存运行,运行完成后将该部分换出,再换入另一部
分到内存中运行,通过这样的置换功能,便实现了用户程序的各个部分分时地进入内存运行。
应当着重指出:虚拟的实现,如果是采用分时复用的方法,即对某一物理设备进行分时使用,设N是某物理设备所对应的虚拟的逻辑设备数,则每台虚拟设备的平均速度必然
等于或低于物理设备速度的1/N。 类似地,如果是利用空分复用方法来实现虚拟,此时一
台虚拟设备平均占用的空间必然也等于或低于物理设备所拥有空间的1/N。
1.3.4 异步
在多道程序环境下,系统允许多个进程并发执行。在单处理机环境下,由于系统中只有一台处理机,因而每次只允许一个进程执行,其余进程只能等待。当正在执行的进程提出某种资源要求时,如打印请求,而此时打印机正在为其它进程打印,由于打印机属于临界资源,因此正在执行的进程必须等待,并释放出处理机,直到打印机空闲,并再次获得处理时程方能继续执行。可见,由于资源等因素的限制,使进程的执行通常都不可能“一气呵成”,而是以“停停走走”的方式运行。
对于内存中的每个进程,在何时能获得处理机运行,何时又因提出某种资源请求而暂停,以及进程以怎样的速度向前推进,每道程序总共需要多少时间才能完成等等,都是不可预知的。由于各用户程序性能的不同,比如,有的侧重于计算而较少需要I/O;而有的程序其计算少而IO多,这样,很可能是先进入内存的作业后完成,而后进入内存的作业先完成。或者说,进程是以人们不可预知的速度向前推进的,此即进程的异步性。尽管如此,但只要在OS中配置有完善的进程同步机制,且运行环境相同,则作业即便经过多次运行,也都会获得完全相同的结果。因此异步运行方式是允许的,而且是操作系统的一个重要特征。
1.4 操作系统的主要功能
1.4.1处理机管理功能
- 进程控制
在多道程序环境下为使作业能并发执行,必须为每道作业创建一个或几个进程, 并为之分配必要的资源。当进程运行结束时,应立即撤消该进程,以便能及时回收该进程所占用的各类资源,供其它进程使用。在设置有线程的OS中,进程控制还应包括为一个进程创建若千个线程,以提高系统的并发性。因此,进程控制的主要功能也就是为作业创建进程、撤消(终止)已结束的进程,以及控制进程在运行过程中的状态转换。 - 进程同步
为使多个进程能有条不紊地运行,系统中必须设置相应的进程同步机制。该机制的主要任务是为多个进程(含线程)的运行进行协调。常用的协调方式有两种:
①进程互斥方式, 这是指诸进程在对临界资源进行访问时,应采用互斥方式;
②进程同步方式,指在相互合作去完成共同任务的诸进程间,由同步机构对它们的执行次序加以协调。最简单的用于实现进程互斥的机制是为每一个临界资源配置一把锁W,当锁打开时,进程可以对该邻接资源进行访问;而当锁关闭时,则禁止进程访问该邻接资源。而实现进程同步时,最常用的机制就是信号量机制。 - 进程通信
当有一组相互合作的进程去完成一个共同的任务时, 在它们之间往往需要交换信息。例如,有输入进程、计算进程和打印进程三个相互合作的进程,输入进程负责将所输入的数据传送给计算进程;计算进程利用输入数据进行计算,并把计算结果传送给打印进程;最后由打印进程把计算结果打印出来。进程通信的任务是实现相互合作进程之间的信息交换。
当相互合作的进程处于同一计算机系统时,通常在它们之间采用直接通信方式,即由,源进程利用发送命令直接将消息(message)挂到目标进程的消息队列上,以后由目标进程利用接收命令从其消息队列中取出消息。 - 调度
在传统OS中,调度包括作业调度和进程调度两步。
(1)作业调度。作业调度的基本任务是从后备队列中按照一定的算法选择 出若干个作业,为它们分配运行所需的资源,在将这些作业调入内存后,分别为它们建立进程,使它们都成为可能获得处理机的就绪进程,并将它们插入就绪队列中。
(2)进程调度。进程调度的任务是从进程的就绪队列中按照一定 的算法选出一个进程,将处理机分配给它,并为它设置运行现场,使其投入执行。
1.4.2 存储器管理功能
存储器管理的主要任务,是为多道程序的运行提供良好的环境,提高存储器的利用率,方便用户使用,并能从逻辑上扩充内存。为此,存储器管理应具有内存分配和回收、内存保护、地址映射和内存扩充等功能。
- 内存分配
内存分配的主要任务是:
(1)为每道程序分配内存空间,使它们“各得其所”。
(2)提高存储器的利用率,尽量减少不可用的内存空间(碎片)。
(3)允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。
OS在实现内存分配时,可采取静态和动态两种方式:
(1) 静态分配方式。每个作业的内存空间是在作业装入时确定的,在作业装入后的整个运行期间不允许该作业再申请新的内存空间,也不允许作业在内存中“移动”。
(2)动态分配方式。每个作业所要求的基本内存空间虽然也是在装入时确定的,但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动”。
- 内存保护
内存保护的主要任务是:
①确保每道用户程序都仅在自己的内存空间内运行,彼此互不干扰。
②绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共
享的其它用户程序中去执行。
为了确保每道程序都只在自己的内存区中运行,必须设置内存保护机制。一种比较简单的内存保护机制是设置两个界限寄存器,分别用于存放正在执行程序的上界和下界。在程序运行时,系统须对每条指令所要访问的地址进行检查,如果发生越界,便发出越界中断请求,以停止该程序的执行。
-
地址映射
在多道程序环境下,由于每道程序经编译和链接后所形成的可装入程序其地址都是从0开始的,但不可能将它们从“0”地址(物理)开始装入内存,致使(各程序段的)地址空间内的逻辑地址与其在内存空间中的物理地址并不相一致。为保证程序能正确运行,存储器管理必须提供地址映射功能,即能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能应在硬件的支持下完成。 -
内存扩充
内存扩充并非是从物理上去扩大内存的容量,而是借助于虚拟存储技术,从逻辑上扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多,以便让更多的用户程序能并发运行。这样既满足了用户的需要,又改善了系统的性能。为了能在逻辑上扩充内存,系统必须设置内存扩充机制(包含少量的硬件),用于实现下述各功能:
(1)请求调入功能,系统允许在仅装入部分用户程序和数据的情况下,便能启动该程
序运行。在程序运行过程中,若发现要继续运行时所需的程序和数据尚未装入内存,可向
OS发出请求,由OS从磁盘中将所需部分调入内存,以便继续运行。
(2)置换功能,若发现在内存中已无足够的空间来装入需要调入的程序和数据时,系统应能将内存中的一部分暂时不用的程序和数据调至硬盘上,以腾出内存空间,然后再将所需调入的部分装入内存。
1.4.3 设备管理功能
设备管理的主要任务如下:
(1)完成用户进程提出的 I/O 请求,为用户进程分配所需的 I/O 设备,并完成指定的 I/O操作。
(2)提高 CPU 和 I/O 设备的利用率,提高 I/O速度,方便用户使用 I/O设备。
为实现上述任务,设备管理应具有 缓冲罐里、设备分配和设备处理以及虚拟设备等功能。
- 缓冲管理:有效地缓和 CPU和 I/O 设备速度不匹配的矛盾,提高CPU的利用率,进而提高系统吞吐量。常见的缓冲区机制有:单缓冲机制、能实现双向同时传送数据的双缓冲机制、能供多个设备同时使用的公用缓冲池机制。上述这些缓冲区都由 OS 缓冲管理机制将他们管理起来。
- 设备分配:基本任务是根据用户进程的I/O请求、系统现有资源情况以及按照某种设备分配策略,为之分配其所需的设备。
- 设备处理:基本任务是用于实现 CPU和设备控制器之间的通信,即由 CPU向设备控制器发出 I/O命令,要求它完成指定的 I/O操作;反之,由 CPU接受从控制器发过来的中断请求,并给予迅速的响应和相应的处理。
设备处理过程是:首先检查I/O请求的合法性,了解设备状态是否是空闲的,读取有
关的传递参数及设置设备的工作方式。然后向设备控制器发出IO命令,启动I/O设备完成指定的I/O操作。此外设备驱动程序还应能及时响应由控制器发来的中断请求,并根据该中断请求的类型,调用相应的中断处理程序进行处理。对于设置了通道的计算机系统,设备处理程序还应能根据用户的I/O请求自动地构成通道程序。
1.4.4. 文件管理功能
文件管理的主要任务是对用户文件和系统文件进行管理以方便用户使用,并保证文件的安全性。为此,文件管理应具有对文件存储空间的管理、目录管理、文件的读/写管理以及文件的共享与保护等功能。
- 文件存储空间的管理
在多用户环境下,若由用户自己对文件的存储进行管理,不仅非常困难,而且也必然十分低效。因而需要由文件系统对诸多文件及文件的存储空间实施统一的管理。其主要任务是:为每个文件分配必要的外存空间,提高外存的利用率,进而提高文件系统的存、取速度。为此,系统中应设置相应的数据结构,用于记录文件存储空间的使用情况,以供分配存储空间时参考。还应具有对存储空间进行分配和回收的功能。
- 目录管理
目录管理的主要任务是为每个文件建立一个目录项,目录项包括文件名、文件属性、文件在磁盘上的物理位置等,并对众多的目录项加以有效的组织,以实现方便的按名存取。即用户只需提供文件名,即可对该文件进行存取。目录管理还应能实现文件共享,这样,只需在外存上保留一份该共享文件的副本。此外,还应能提供快速的目录查询手段,以提高对文件检索的速度。
- 文件的读/写管理和保护
(1)文件的读/写管理。该功能是根据用户的请求,从外存中读取数据,或将数据写入外存。在进行文件读/写时,系统先根据用户给出的文件名去检索文件目录,从中获得文件在外存中的位置。然后,利用文件读/写指针,对文件进行读/写。-旦读/写完成, 便修改读/写指针,为下一次读/写做好准备。由于读和写操作不会同时进行,故可合用一个读/写指针。
(2)文件保护。为了防止系统中的文件被非法窃取和破坏,在文件系统中必须提供有效的存取控制功能,以实现下述目标:
①防止未经核准的用户存取文件:
②防止冒名顶存取控制功能
③防止意不正确的方式使用文件
1.4.5 操作系统与用户之前的接口
- 用户接口
为了便于用户直接或间接地控制自己的作业,操作系统向用户提供了命令接口。用户可通过该接口向作业发出命令以控制作业的运行。该接口又进- -步 分为联机用户接口、脱机用户接口和图形用户接口三种。
(1)联机用户接口。这是为联机用户提供的,它由一组键盘操作命令及命令解释程序组成。当用户在终端或控制台上键入一条命令后,系统便立即转入命令解释程序,对该命令加以解释执行。在完成指定功能后系统又返回到终端或控制台上,等待用户键入下一条.命令。这样,用户便可通过先后键入不同命令的方式来实现对作业的控制,直至作业完成。
(2)脱机用户接口。这是为批处理作业的用户提供的。用户用作业控制语言JCL把需要对作业进行的控制和干预的命令事先写在作业说明书上,然后将它与作业一起提供给 系统。当系统调度到该作业运行时,通过调用命令解释程序去对作业说明书上的命令逐条解释执行,直至遇到作业结束语句时系统才停止该作业的运行。
(3)图形用户接口。通过联机用户接口取得OS的服务既不方便又花时间,用户必须熟记所有命令及其格式和参数,并逐个字符地键入命令,于是图形用户接口便应运而生。图形用户接口采用了图形化的操作界面,用非常容易识别的各种图标(icon)来将系统的各项功能、各种应用程序和文件直观、逼真地表示出来。用户可通过菜单(和对话框)用移动鼠标选择菜单项的方式取代命令的键入,以方便、快捷地完成对应用程序和文件的操作,从而.把用户从繁琐且单调的操作中解脱出来。
- 程序接口
程序接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。它是由一组系统调用组成的,每一个系统调用都是一个能完成特定功能的子程序。每当应用程序要求OS提供某种服务(功能)时,便调用具有相应功能的系统调用(子程序)。早期的系统调用都是用汇编语言提供的,只有在用汇编语言书写的程序中才能直接使用系统调用。
在高级语言以及C语言中,往往提供了与各系统调用一对应的库函数,这样,应程序便可通过调用对应的库函数来使用系统调用。但在近几年所推出的操作系统中,如UNIX、OS/2版本中,其系统调用本身已经采用C语言编写,并以函数形式提供,故在用C语言编制的程序中,可直接使用系统调用。
1.4.6 现代操作系统的新功能
-
系统安全
在现代 OS中采取了很多有效措施来保证系统安全如:(不再详细介绍)
(1)认证技术
(2)密码技术
(3)访问控制技术
(4)反病毒技术 -
网络的功能和服务
在现代OS中,为支持用户联网取得各类网络所提供的服务,如电子邮件服务、Web服务等,应在操作系统中增加面向网络的功能,用于实现网络通信和资源管理,以及提供用户取得网络服务的手段。作为一个网络操作系统,应当具备多方面的功能:
(1)网络通信,用于在源主机和目标主机之间,实现无差错的数据传输,如建立和拆除通信链路、传输控制、差错控制和流量控制等。
(2)资源管理,即对网络中的共享资源(硬件和软件)实施有效的管理,协调诸用户对共享资源的使用,保证数据的安全性和一致性。典型的共享硬件资源有硬盘、打印机等,软件资源有文件和数据。
(3)应用互操作,即在一个由若干个不同网络互连所构成的互连网络中,必须提供应用互操作功能,以实现信息的互通性和信息的互用性。信息的互通性是指在不同网络中的用户之间,能实现信息的互通。信息的互用性是表示用户可以访问不同网络中的文件系统和数据库系统中的信息。
- 支持多媒体
一个支持多媒体的操作系统必须能像一般OS处理文字、图形信息那样去处理音频和
视频信息等多媒体信息,为此,现代操作系统增加了多媒体的处理功能:
(1)接纳控制功能
(2)实时调度
(3)多媒体文件的存储。
1.5 OS结构设计
1.5.1 传统操作系统结构
无结构的OS(第一代)、模块化结构的OS(第二代)、分层式结构的OS(第三代),为内核结构的OS称为现代OS。
- 无结构操作系统(略)
- 模块化结构OS
(1)模块化程序设计技术的基本概念:该技术基于“分解”和“模块化”的原则来控制大型软件的复杂度。按其功能划分为若干个具有一定独立性和大小的模块,并仔细规定好各模块间的接口,使各模块之间能通过接口实现交互。然后在进一步将各个模块划分为若干个具有一定功能的子模块,同样也规定好各个子模块之间的接口。若子模块较大,可以在进一步将它细分。这种方法称为模块——接口法,由此构成的操作系统就是具有模块化结构的操作系统。如图1-7出示有模块、子模块等组成的模块化OS结构。
(2)模块独立性
如果我们在划分模块时将模块划分的太小,虽然可以减低模块本身的复杂性,但会引起模块之间的联系过多,从而会造成系统比较混乱;如果将模块划分的过大,又会增加模块内部的复杂性,使内部的联系增加,因此应该权衡如何划分模块——参考以下两个标准:
①内聚性,指模块内部各部分之间联系的紧密程度。内聚性越高,模块独立性越强
②耦合性,指模块间互相联系和相互影响的程度。耦合度越低,模块独立性越好。
(3)模块接口法的优缺点
优点
- 增强OS设计的正确性、可理解性和可维护性
- 增强OS的可适应性
- 加速OS的开发过程
模块化结构设计存的问题:
- 在OS设计时,对各模块间的接口规定很难满足在模块设计完成后对接口的实际需求。
- 在OS设计阶段,设计者必须做出一系列决策。每一个决策必须建立在上一个决策的基础上。但是在模块化结构设计中,各个模块的设计是齐头并进的,没办法找到一个可靠地决定顺序,造成各种决定的“无序性”,这使得程序员很那座岛“设计中的每一部决定”,都是建立在可靠地基础上,因此 模块——接口法由内称为“无序模块法”。
- 分层式结构OS
(2)分层结构的优缺点
优点
- 易保证系统的正确性
- 易扩充和易维护。
分层结构的主要缺点是系统效率低。由于层次结构是分层单项依赖的,必须在每层之间都建立层次间的通信机制,OS每执行一个功能,通常要自上而下地穿越多个层次,这样无疑会增加系统的通信开销,从而导致系统效率的降低。
1.5.2 客户/服务器模式(C/S)简介
-
客户/服务器模式的由来、组成和类型
(1)客户机:通常是在一个LAN网络上连接有多台网路工作站(简称客户机),每台客户机都是一个自主计算机,具有一定的处理能力,客户进程在其上运行,平时他处理一些本地业务,也可以发一个消息给服务器,用来请求某项服务。
(2)服务器:通常是一台规模较大的机器,在其上驻留有网络文件系统或数据库系统等,它应能为网上所有用户提供一种或多种服务。一直在工作状态,被动等待来自客户机的请求。接收到客户端请求后去完成客户端请求,并将结果送回。
(3)网络系统:用于连接所有客户机和服务器,实现他们之间通信和网络资源共享的系统。 -
客户/服务器之间的交互分为以下四步
(1)客户发送请求消息
(2)服务器接收消息
(3)服务器回送消息
(4)客户机接收消息
3.客户/服务器模式的优点
C/S模式之所以能成为在分布式系统和网络环境下软件的一种主要工作模式,是由于该模式具有传统集中模式所无法比拟的一系列优点。
(1)数据的分布处理和存储。由于客户机具有相当强的处理和存储能力,可进行本地处理和数据的分布存储,从而摆脱了由于把一切数据都存放在主机中而造成的既不可靠又
容易产生瓶颈现象的困难局面。
(2)便于集中管理。尽管CIS模式具有分布处理功能,但公司(单位)中的有关全局的重要信息、机密资料、重要设备以及网络管理等,仍可采取集中管理方式,这样可较好地保障系统的“可靠”和“安全”。
(3)灵活性和可扩充性。C/S 模式非常灵活,极易扩充。理论上,客户机和服务器的数量不受限制,其灵活性还表现在可以配置多种类型的客户机和服务器上。
(4)易于改编应用软件。在客户/服务器模式中,对于客户机程序的修改和增删,比传统集中模式要容易得多,必要时也允许由客户进行修改。
基本客户/服务器模式的不足之处是存在着不可靠性和瓶颈问题。在系统仅有一个服务器时,一旦服务器故障,将导致整个网络瘫痪。当服务器在重负荷下工作时,会因忙不过来而显著地延长对用户请求的响应时间。如果在网络中配置多个服务器,并采取相应的安全措施,则这种不足可加以改善。
1.5.3 面向对象的程序设计技术简介
与可以独立的对它进行测试 面向对象技术的基本概念:该技术是基于“抽象”和“隐藏”原则来控制大型软件的复杂度的。如果在OS中的各类实体如进程、线程、消息、存储器和文件等都是用了对象这一概念,相应的,就有了进程对象、线程对象、消息对象、存储器对象和文件对象等。
面向对象的优点:
(1)通过“重用”提高产品质量和生产率
(2)使系统具有更好的易修改性和易扩展性
(3)更易于保证系统的“正确性”和“可靠性”
对象是构成操作系统的基本单元,由于可以独立地对它进行测试,易于保证每个对象的正确性和可靠性,因此也就比较容易保证整个系统的正确性和可靠性。此外,封装对对象类中的信息进行了隐蔽,这样又可有效地防止未经授权者的访问和用户不正确的使用,有助于构建更为安全的系统。
1.5.4 微内核OS结构
- 微内核操作系统的基本概念
(1)足够小的内核:
通常包含有:
①与硬件处理紧密的部分
②一些较基本的功能
③客户和服务器之间的通信
这些OS最基本的部分只是为构建通用OS提供一个重要基础,这样就可以确保把操作系统内核做得很小
(2)基于客户/服务器模式
由于客户/服务器模式具有非常多的优点,故在单机微内核操作系统中几乎无一例外地采用客户/服务器模式,将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现,如用于提供对进程(线程)进行管理的进程(线程)服务器、提供虚拟存储器管理功能的虚拟存储器服务器、提供I/O设备管理的I/O设备管理服务器等,它们都是被作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。图1-11示出了在单机环境下的客户/服务器模式。
(3)采用“机制与策略分离”原理
微内核操作系统中,通常将机制放在OS的微内核中。正亦如此,才有可能将内核做得很小
(4)采用面向对象技术
-
微内核的基本功能
(1)进程(线程)管理
(2)低级存储器管理
(3)终端和陷入处理 -
微内核操作系统的优点
由于微内核结构是建立在模块化、层次化结构的基础上的,并采用客户/服务器模式和面相对象的程序设计技术,因此,微内核结合的操作系统是集各种技术优点之大成,因而使之具有如下优点;
(1)提高了系统的可拓展性
(2)增强了系统的可靠性
(3)可移植性强
(4)提供了对分布式系统的支持
(5)融入了面向对象技术 -
微内核操作系统存的问题
应当指出,在微内核操作系统中,由于采用了非常小的内核,客户/服务器模式和消息传递机制虽给微内核操作系统带来了许多优点,但由此也使微内核os存在着潜在缺点,其中最主要的是,较之早期的操作系统,微内核操作系统的运行效率有所降低。
效率降低最主要的原因是,在完成一次客户对操作系统提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式与上下文的多次切换。然而,在早期的OS中,用户进程在请求取得OS服务时,- -般只需进行两次上下文的切换: – -次是在执行系统调用后由.用户态转向系统态时;另一次是在系统完成用户请求的服务后,由系统态返回用户态时。
在微内核OS中,由于客户和服务器、服务器和服务器之间的通信都需通过微内核,致使同样的服务请求至少需要进行四次上下文切换。第一次是发生在客户发送请求消息给内核,以请求取得某服务器特定的服务时;第二次是发生在由内核把客户的请求消息发往服务器时;第三次是当服务器完成客户请求后,把响应消息发送到内核时:第四次是在内核将响应消息发送给客户时。
实际情况是往往还会引起更多的上下文切换。例如,当某个服务器自身尚无能力完成客户请求而需要其它服务器的帮助时,如图1-12所示,其中的文件服务器还需要磁盘服务器的帮助,这时就需要进行8次上下文的切换。
为了改善运行效率,可以重新把一些常用的操作系统基本功能由服务器移入微内核中。这样可使客户对常用操作系统功能的请求所发生的用户/内核模式和上下文的切换的次数由四次或八次降为两次。但这又会使微内核的容量明显地增大,在小型接口定义和适应性方面的优点也有所下降,并提高了微内核的设计代价。