|
|
操作系统概述
CH1 操作系统概论... 1
1.1 操作系统概观... 1
1.1.1 操作系统的定义和目标... 1
1.1.2 操作系统的作用与功能... 2
1.1.3 操作系统的主要特性... 3
1.1.4 操作系统需要解决的主要问题... 5
1.2 操作系统的形成和发展... 6
1.2.1 人工操作阶段... 6
1.2.2 管理程序阶段... 7
1.2.3 多道程序设计与操作系统的形成... 8
1.2.4 操作系统的进一步发展... 13
1.3 操作系统提供的服务和用户接口... 17
1.3.1 操作系统提供的基本服务... 17
1.3.2 操作系统提供的用户接口... 18
1.3.3 系统调用与程序接口... 18
1.3.4 系统程序与操作接口... 21
1.4 操作系统的结构设计... 23
1.4.1 操作系统的构件... 24
1.4.2 操作系统的整体式结构... 26
1.4.3 操作系统的层次式结构... 27
1.4.4 基于用户进程的操作系统构造方式... 27
1.4.5 提供虚拟机的操作系统构造方式... 28
1.4.6 操作系统的微内核结构... 29
1.4.7 Windows XP的客户/服务器结构... 32
1.5 流行操作系统简介... 36
1.5.1 DOS操作系统... 36
1.5.2 Windows操作系统... 37
1.5.3 Unix操作系统大家庭... 38
1.5.4 自由软件和Linux操作系统... 40
1.5.5 IBM系列操作系统... 42
1.5.6 其他流行操作系统... 43
CH1 操作系统概论
1.1 操作系统概观
1.1.1 操作系统的定义和目标
操作系统(Operating System,简称OS)的出现、使用和发展是近四十年来计算机软件的一个重大进展。尽管操作系统尚未有一个被普遍接受的定义,但普遍认为:操作系统是管理软硬件资源、控制程序执行,改善人机界面,合理组织计算机工作流程和为用户使用计算机提供良好运行环境的一种系统软件。
计算机发展到今天,从个人机到巨型机,无一例外都配置一种或多种操作系统,操作系统已经成为现代计算机系统不可分割的重要组成部分。配置操作系统的主要目标可归结为:1)方便用户使用。OS应该使计算机系统使用起来十分方便。2)扩大机器功能。OS应该能改造硬件设施,扩充机器功能。3)管理系统资源。OS应该管理好系统中的所有硬件软件资源。4)提高系统效率。OS应该充分利用计算机系统的资源,提高计算机系统的效率。5)构筑开放环境。OS应该构筑出一个开放环境,主要是指:遵循有关国际标准;支持体系结构的可伸缩性和可扩展性;支持应用程序在不同平台上的可移植性和可互操作性。
图1-1 计算机系统的层次结构
计算机系统包括硬件和软件两个组成部分。硬件是所有软件运行的物质基础;软件能充分发挥硬件潜能和扩充硬件功能,完成各种系统及应用任务,两者互相促进、相辅相成、缺一不可。图1-1给出了一个计算机系统的软硬件层次结构。其中,每一层具有一组功能并提供相应的接口,接口对层内掩盖了实现细节,对层外提供了使用约定。
硬件层提供了基本的可计算性资源,包括处理器、寄存器、存储器,以及可被使用的各种I/O设施和设备,是操作系统和上层软件赖以工作的基础。操作系统层对计算机硬件作首次扩充和改造,主要完成资源的调度和分配,信息的存取和保护,并发活动的协调和控制等许多工作。操作系统是其它软件的运行基础,并为编译程序和数据库系统等系统程序的设计者提供了有力支撑。系统程序层的工作基础建立在操作系统改造和扩充过的机器上,利用操作系统提供的扩展指令集,可以较为容易地实现各种各样的语言处理程序、数据库管理系统和其它系统程序。应用层解决用户不同的应用问题,应用程序开发者借助于程序设计语言来表达应用问题,开发各种应用程序,既快捷又方便。而最终用户则通过应用程序与计算机交互来解决他的应用问题。
1.1.2 操作系统的作用与功能
操作系统是用户与计算机硬件之间的接口,操作系统是对计算机硬件系统的第一次扩充,用户通过操作系统来使用计算机系统。换句话来说,操作系统紧靠着计算机硬件并在其基础上提供了许多新的设施和能力,从而使得用户能够方便、可靠、安全、高效地操纵计算机硬件和运行自己的程序。例如,改造各种硬件设施,使之更容易使用;提供原语或系统调用,扩展机器的指令系统;而这些功能到目前为止还难于由硬件直接实现。操作系统还合理组织计算机的工作流程,协调各个部件有效工作,为用户提供一个良好的运行环境。经过操作系统改造和扩充过的计算机不但功能更强,使用也更为方便,用户可以直接调用操作系统提供的许多功能,而无需了解许多软硬件使用细节。
操作系统可以提供虚拟计算机(Virtual Machine)。许多年以前,人们就认识到必须找到某种方法把硬件的复杂性与用户隔离开来,经过不断的探索和研究,目前采用的方法是在计算机裸机上加上一层又一层的软件来组成整个计算机系统,同时,为用户提供一个容易理解和便于程序设计的接口。在操作系统中,类似地把硬件细节隐藏并把它与用户隔离开来的情况处处可见,例如:I/O管理软件、文件管理软件、窗口软件向用户提供了一个越来越方便的使用I/O功能的方法。由此可见,每当在计算机上复盖一层软件,提供了一种抽象,系统的功能便增加一点,使用就更加方便一点,用户可用的运行环境就更加好一点。所以,当计算机上复盖了操作系统后,便为用户提供了一台功能显著增强,使用更加方便,效率明显提高的机器。
操作系统还是计算机系统的资源管理者。在计算机系统中,能分配给用户使用的各种硬件和软件设施总称为资源。资源包括两大类:硬件资源和信息资源。其中,硬件资源分为处理器、存储器、I/O设备等,I/O设备又分为输入型设备、输出型设备和存储型设备;信息资源则分为程序和数据等。操作系统的重要任务之一是有序地管理计算机中的硬件、软件资源,跟踪资源使用状况,满足用户对资源的需求,协调各程序对资源的使用冲突,为用户提供简单、有效的资源使用方法,最大限度地实现各类资源的共享,提高资源利用率,从而使得计算机系统的效率有很大提高。
资源管理是操作系统的一项主要任务,而控制程序执行、扩充及其功能、屏蔽使用细节、方便用户使用、组织合理工作流程、改善人机界面等等都可以从资源管理的角度去理解。下面就从资源管理的观点来看操作系统具有的几个主要功能。
1、处理机管理
处理器管理的第一项工作是处理中断事件,硬件只能发现中断事件,捕捉它并产生中断信号,但不能进行处理。配置了操作系统,就能对中断事件进行处理。
处理器管理的第二项工作是处理器调度。在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占,处理器管理的工作十分简单。但在多道程序或多用户的情况下,组织多个作业或任务执行时,就要解决处理器的调度、分配和回收等问题。近年来设计出各种各样的多处理器系统,处理器管理就更加复杂。为了实现处理器管理的功能,操作系统引入了进程(process)的概念,处理器的分配和执行都是以进程为基本单位;随着并行处理技术的发展,为了进一步提高系统并行性,使并发执行单位的粒度变细,操作系统又引入了线程(Thread)的概念。对处理器的管理最总归结为对进程和线程的管理,包括:1)进程控制和管理;2)进程同步和互斥;3)进程通信;4)进程死锁;5)处理器调度,又分高级调度,中级调度,低级调度等;6)线程控制和管理。
正是由于操作系统对处理器的管理策略不同,其提供的作业处理方式也就不同,例如,批处理方式、分时处理方式、实时处理方式等等。从而,呈现在用户面前,成为具有不同性质和不同功能的操作系统。
2、存储管理
存储管理的主要任务是管理存储器资源,为多道程序运行提供有力的支撑。存储管理的主要功能包括:1)存储分配。存储管理将根据用户程序的需要给它分配存储器资源。2)存储共享。存储管理能地让主存中的多个用户程序实现存储资源的共享,以提高存储器的利用率。3)存储保护。存储管理要把各个用户程序相互隔离起来互不干扰,更不允许用户程序访问操作系统的程序和数据,从而保护用户程序存放在存储器中的信息不被破坏。4)存储扩充。由于物理内存容量有限,难于满足用户程序的需求,存储管理还应该能从逻辑上来扩充内存储器,为用户提供一个比内存实际容量大得多的编程空间,方便用户的编程和使用。
操作系统的这一部分功能与硬件存储器的组织结构和支撑设施密切相关,操作系统设计者应根据硬件情况和用户使用需要,采用各种相应的有效存储资源分配策略和保护措施。
3、设备管理
设备管理的主要任务是管理各类外围设备,完成用户提出的I/O请求,加快I/O信息的传送速度,发挥I/O设备的并行性,提高I/O设备的利用率;以及提供每种设备的设备驱动程序和中断处理程序,向用户屏蔽硬件使用细节。为实现这些任务,设备管理应该具有以下功能:1)提供外围设备的控制与处理;2)提供缓冲区的管理;3)提供外围设备的分配;4)提供共享型外围设备的驱动;5)实现虚拟设备。
4、文件管理
上述三种管理是针对计算机硬件资源的管理。文件管理则是对系统的信息资源的管理。在现代计算机中,通常把程序和数据以文件形式存储在外存储器上,供用户使用,这样,外存储器上保存了大量文件,对这些文件如不能采取良好的管理方式,就会导致混乱或破坏,造成严重后果。为此,在操作系统中配置了文件管理,它的主要任务是对用户文件和系统文件进行有效管理,实现按名存取;实现文件的共享、保护和保密,保证文件的安全性;并提供给用户一套能方便使用文件的操作和命令。具体来说,文件管理要完成以下任务:1)提供文件逻辑组织方法;2)提供文件物理组织方法;3)提供文件的存取方法;4)提供文件的使用方法;5)实现文件的目录管理;6)实现文件的存取控制;7)实现文件的存储空间管理。
5、网络与通信管理
计算机网络源于计算机与通信技术的结合, 近二十年来, 从单机与终端之间的远程通信, 到今天全世界成千上万台计算机联网工作, 计算机网络的应用已十分广泛。联网操作系统至少应具有以下管理功能:1)网上资源管理功能。计算机网络的主要目的之一是共享资源,网络操作系统应实现网上资滚源的共享, 管理用户应用程序对资源的访问, 保证信息资源的安全性和一致性。2)数据通信管理功能。计算机联网后, 站点之间可以互相传送数据, 进行通信, 通过通信软件, 按照通信协议的规定, 完成网络上计算机之间的信息传送。3)网络管理功能。包括: 故障管理、安全管理、性能管理、记帐管理和配置管理。
6、用户接口
为了使用户能灵活、方便地使用计算机和操作系统,操作系统还提供了一组友好的用户接口,包括:1)程序接口;2)命令接口;3)图形接口。
1.1.3 操作系统的主要特性
1、并发性
并发性(Concurrence)是指两个或两个以上的运行程序在同一时间间隔段内同时执行。操作系统是一个并发系统,并发性是它的重要特征,它应该具有处理多个同时执行的程序的能力。多个I/O设备同时在输入输出;设备输入输出和CPU计算同时进行;内存中同时有多个程序被启动交替、穿插地执行,这些都是并发性的例子。发挥并发性能够消除计算机系统中部件和部件之间的相互等待,有效地改善了系统资源的利用率,改进了系统的吞吐率,提高了系统效率。例如,一个程序等待I/O时,就出让CPU,而调度另一个运行程序占有CPU执行。这样,在程序等待I/O时,CPU便不会空闲,这就是并发技术。
并发性会引发一系列的问题,使操作系统的设计和实现变得复杂化。如:怎样从一个运行程序切换到另一个运行程序?怎样将各个运行程序隔离开来,使之互不干扰,免遭对方破坏?怎样让多个运行程序协作完成任务?怎样协调多个运行程序对资源的竞争?如何保证每个运行程序的资源不被其它运行程序侵犯?多个运行程序共享文件数据时,如何保证数据的一致性?操作系统必须具有控制和管理并发执行的运行程序的能力,为了更好的解决上述问题,操作系统中很早就引入了一个重要的概念——进程,由于进程能清淅刻划操作系统中的并发性,实现多个运行程序的并发执行,因而它已成为现代操作系统的一个重要基础。
采用了并发技术的系统又称为多任务系统(Multitasking),计算机系统中,并发的实质是一个物理CPU(也可以是多个物理CPU))在若干道程序之间多路复用,这样就可以实现运行程序之间的并发,以及CPU与I/O设备、I/O设备与I/O设备之间的并行,并发性的实质是对有限物理资源强制行使多用户共享以提高效率。不难看出,实现并发技术的关键之一是如何对系统内的多个运行程序(进程)进行切换的技术。
2、共享性
共享性是操作系统的另一个重要特征。共享指操作系统中的资源(包括硬件资源和信息资源)可被多个并发执行的进程所使用。出于经济上的考虑,一次性向每个用户程序分别提供它所需的全部资源不但是浪费的,有时也是不可能的。现实的方法是让多个用户程序共用一套计算机系统的所有资源,因而必然会产生共享资源的需要。资源共享的方式可以分成两种:
第一种是互斥共享。系统中的某些资源如打印机、磁带机、卡片机,虽然它们可提供给多个进程使用,但在同一时间内却只允许一个进程访问这些资源。当一个进程还在使用该资源时,其它欲访问该资源的进程必须等待,仅当该进程访问完毕并释放资源后,才允许另一进程对该资源访问。这种同一时间内只允许一个进程访问的资源称临界资源,许多物理设备,以及某些数据和表格都是临界资源,它们只能互斥地被共享。
第二种是同时访问。系统中的还有许多资源,允许同一时间内多个进程对它进行访问,这里“同时”是宏观上的说法。典型的可供多进程同时访问的资源是磁盘,可重入程序也可被同时共享。
与共享性有关的问题是资源分配、信息保护、存取控制等,必须要妥善解决好这些问题。
共享性和并发性是操作系统两个最基本的特征,它们互为依存。一方面,资源的共享是因为运行程序的并发执行而引起的,若系统不允许运行程序并发执行,自然也就不存在资源共享问题。另一方面,若系统不能对资源共享实施有效地管理,必在会影响到运行程序的并发执行,甚至运行程序无法并发执行,操作系统也就失去了并发性,导致整个系统效率低下。
3、异步性
操作系统的第三个特点是异步性(Asynchronism),或称随机性。在多道程序环境中,允许多个进程并发执行,由于资源有限而进程众多,多数情况,进程的执行不是一贯到低,而是“走走停停”,例如,一个进程在CPU上运行一段时间后,由于等待资源满足或事件发生,它被暂停执行,CPU转让给另一个进程执行。系统中的进程何时执行?何时暂停?以什么样的速度向前推进?进程总共要多少时间执行才能完成?这些都是不可予知的,或者说该进程是以异步方式运行的,异步性给系统带来了潜在的危险,有可能导致与时间有关的错误,但只要运行环境相同,操作系统必须保证多次运行作业,都会获得完全相同的结果。
操作系统中的随机性处处可见,例如,作业到达系统的类型和时间是随机的;操作员发出命令或按按钮的时刻是随机的;程序运行发生错误或异常的时刻是随机的;各种各样硬件和软件中断事件发生的时刻是随机的等等,操作系统内部产生的事件序列有许许多多可能,而操作系统的一个重要任务是必须确保捕捉任何一种随机事件,正确处理可能发生的随机事件,正确处理任何一种产生的事件序列,否则将会导致严重后果。
1.1.4 操作系统需要解决的主要问题
操作系统具有三大特征:并发性、共享性和异步性,为了解决进程并发执行和资源共享,以及处理随机事件产生时所引起的各种各样的新矛看,操作系统必须解决好以下几个问题。
1、提供解决资源冲突的策略和技术
操作系统中,并发执行的运行程序之间共享了处理器、存储空间、I/O设备和软件资源。要为用户提供简单、有效的资源使用方法,充分发挥系统资源的利用率,则必须研究各类资源的共性和个性,进而提出资源分配办法和解决资源冲突的各种策略和技术。
除了传统的资源共享方式,经过多年的研究,操作系统中提出了另一种解决资源冲突的基本技术——“多重化”(Multiplex),或称“虚拟化”(Virtual)技术。这种技术的基本思想是:通过用一类物理设备来模拟另一类物理设备,或通过分时地使用一类物理设备,把一个物理实体改变成若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上的对应物是虚幻的、感觉上的。例如,在多道程序环境中,虽然只有一个物理CPU,通过设置进程控制块以及分时使用实际的CPU,把它虚拟化成多台逻辑上的CPU,每个用户都认为自己获得了专有CPU;通过Spooling(Simultaneous Peripheral Operations On Line)技术,可以用一类物理I/0设备来模拟另一类物理设备,“构造”出许多台静态设备供用户使用;通过多路复用技术,可以把一条物理信道虚拟化为若干条逻辑信道,每个用户都认为自己获得专有的信道在进行数据通信;通过虚拟存储技术,把一个统一编址相对较小的物理主存变成多个逻辑上独立编址的虚拟存储器,使得每个用户认为自己获得了硕大无比的编程和运行程序的主存空间。
更有甚者,IBM公司开发的VM/370(Virtual Machine/370) 操作系统,它将上述的“多重化”技术发挥到淋漓尽致。虚机器监控程序VM/370。它向上层提供了若干台虚拟计算机,与传统的操作系统不同的是:这些虚拟计算机不是具有文件管理,设备管理和作业控制之类的虚拟机,而仅仅是实际物理计算机(裸机)的逻辑复制品。其多重化的过程如下:CPU调度程序使各个进程共享物理CPU,或者说多重化出许多虚CPU,每个进程可分得一个;虚存管理使每台虚CPU都有自己的虚存空间;SPOOLING技术和文件系统提供了虚拟读卡机、穿卡机和行式打印机;各个用户的终端通过分时使用处理器时间,提供了虚拟机操作员控制台;每台虚拟机的磁盘是通过划分物理磁盘若干磁道而形成的,称作“小盘” 。这样一来,每台复制出来的虚拟计算机包含有:核心态/用户态,中断,CPU、I/O 设备、内存、辅存等,以及物理计算机具有的全部部件。因为每台虚拟机与一台裸机完全一样,所以同一台裸机的不同虚拟机上可运行不同的操作系统。
2、协调并发活动的关系
在操作系统中,有时候一组并发进程协作完成一项任务,而有时候一组并发进程又在竞争某种资源,所以,并发进程之间有一种相互制约的关系。并发进程之间的制约关系必须由系统提供机制或策略来进行协调,以使各个并发进程能顺利推进,并获得正确的运行结果。另外,操作系统还要合理组织计算机工作流程,协调各类硬软件设施工作,充分提高资源的利用率,充分发挥系统的并行性,这些也都是在操作系统的统一指挥和管理下进行的。
3、保证系统的安全性
影响计算机系统安全性的因素很多。首先,是操作系统的安全性,操作系统是一个共享资源系统,支持多用户同时共享一套计算机系统的资源,有资源共享就需要有资源保护,涉及到种种安全性问题。最基本的保护问题有以下三类:(1) 对操作系统程序的保护,(2) 对系统中的多道程序的保护,(3) 对共享的表格和数据的保护;其次,随着计算机网络的迅速发展,客户机要访问服务器,一台计算机要传送数据给另一台计算机,于是就需要有网络安全和数据信息的保护;另外,在应用系统中,主要依赖数据厍来存储大量信息,它是各个部门十分重要的一种资源,数据库中的数据会被广泛应用,特别是在网络环境中的数据库,这就提出了信息系统——数据库的安全性问题;最后计算机安全性中的一个特殊问题是计算机病毒,需要采用措施预防、发现、解除它。上述计算机安全性问题大部份要求操作系统来保证,所以操作系统的安全性是计算机系统安全性的基础。
1.2 操作系统的形成和发展
1.2.1 人工操作阶段
从计算机诞生到五十年代中期的计算机属于第一代计算机,机器速度慢、规模小、外设少,操作系统尚未出现。计算机的操作由程序员采用手工操作直接控制和使用计算机硬件。程序员使用机器语言编程,并将事先准备好的程序和数据穿孔在纸带或卡片上,从纸带或卡片输入机将程序和数据输入计算机。然后,启动计算机运行,程序员可以通过控制台上的按钮、开关和氖灯来操纵和控制程序,运行完毕,取走计算的结果,才轮到下一个用户上机。
随着时间的推移,汇编语言产生了。在汇编系统中,数字操作码被记忆码代替,程序按固定格式的汇编语言书写。系统程序员预先编制一个汇编程序,它把用汇编语言书写的“源程序” 解释成计算机能直接执行的机器语言格式的目标程序。稍后,一些高级程序设计语言出现,FORTRAN、ALGOL、和COBOL语言分别于1956、1958、和1959年设计完成并投入使用,进一步方便了编程。
执行时需要把汇编程序或编译系统以及“源程序” 都穿在卡片或纸带上,然后再装入和执行。其大致过程为:
1)人工把源程序用穿孔机穿制在卡片或纸带上;
2)将准备好的汇编程序或编译系统装入计算机;
3)汇编程序或编译系统读入人工装在输入机上的穿孔卡或穿孔带;
4)执行汇编过程或编译过程,产生目标程序,并输出目标卡片迭或纸带;
5)通过引导程序把装在输入机上的目标程序读入计算机;
6)启动目标程序执行,从输入机上读入人工装好的数据卡或数据带;
7)产生计算结果,执行结果从打印机上或卡片机上输出。
上述方式算题比直接用机器语言前进了一步,程序易于编制和易读性好,汇编程序或编译系统可执行存储分配等辅助工作,从而在一定程度上减轻了用户的负担。但是计算机的操作方式并没有多大改变,仍然是在人工控制下进行程序的装入和执行。
人工操作方式存在严重缺点:
l 用户一个个、一道道的串行算题,当一个用户上机时,他独占了全机资源,造成计算机资源利用率不高,计算机系统效率低下。
l 许多操作要求程序员人工干预,例如,装纸带或卡片、按开关等等。手工操作多了,不但浪费处理机时间,而且,也极易发生差错。
l 由于数据的输入,程序的执行、结果的输出均是联机进行的,因而,每个用户从上机到下机的时间拉得非常长。
这种人工操作方式在慢速的计算机上还能容忍,随着计算机速度的提高,其缺点就更加暴露出来了。譬如,一个作业在每秒1万次的计算机上,需运行1个小时,作业的建立和人工干预化了3分钟,那么,手工操作时间占总运行时间的5%;当计算机速度提高到每秒10万次,此时,作业运行时间仅需6分钟,而手工操作不会有多大变化,仍为3分钟,这时手工操作时间占了总运行时间的50%。由此看出缩短手工操作时间十分必要。此外,随着CPU速度迅速提高而I/O设备速度却提高不多,导致CPU与I/O设备之间的速度不匹配,矛盾越来越突出,需要妥然解决这些问题。
1.2.2 管理程序阶段
早期批处理系统借助于作业控制语言变革了计算机的手工操作方式。用户不再通过开关和按钮来控制计算机执行,而是通过脱机方式使用计算机,他们使用作业控制卡来描述对作业的加工控制步骤,并把作业控制卡连同程序、数据一起提交给计算机的操作员。操作员收集到一批作业后一起把它们放到卡片机上等待输入计算机。计算机上则运行了一个驻留在内存中的执行程序,以对作业进行自动控制和成批处理,其工作流程如下:执行程序将这一批作业从纸带或卡片机输入到磁带上,每当一批作业输入完成后,执行程序自动把磁带上的第一个作业装入内存,并把控制权交给作业。当该作业执行完成后,作业又把控制权缴回执行程序,执行程序再调入磁带上的第二个作业到内存执行。计算机在执行程序的控制下就这样连续地一个作业一个作业执行,直至磁带上的作业全部做完。这种系统能实现作业到作业的自动转换,缩短作业的准备和建立时间,减少人工操作和干预,让计算机尽可能地连续工作。
早期批处理系统中,一开始作业的输入和输出均是联机的,联机I/O的缺点是速度慢,I/O设备和CPU仍然串行工作,CPU时间浪费相当大,为此,在批处理中引进脱机I/O技术。除主机外,另设一台辅机,该机仅与I/O设备打交道,不与主机连接。输入设备上的作业通过辅机输到磁带上,主机负责从磁带上把作业读入内存执行,作业完成后,主机负责把结果输出到磁带上,然后由辅机把磁带上的结果信息在打印机上打印输出。这样一来,I/O工作脱离了主机,辅机和主机可以并行工作,称脱机批处理,这比早期联机批处理系统提高了处理能力。
图1-2 管理程序的内存组织
五十年代末至六十年代初期,硬件取得了两大进展,中断机构和通道技术的出现使得硬部件具有了较强的并行工作的能力,为了充分发挥计算机的并行性,提高CPU和I/O设备的利用率,缩短作业的准备和建立时间,驻留在内存的执行程序的功能得到了很大的扩充,进化到管理程序(Resident Monitor)。FMS(FORTRAN Monitor System)和IBSYS (IBM 7094 Monitor System)是这类系统的典型实例。管理程序的内存组织如图1-2所示,它的主要功能小结如下:
l 自动控制和处理作业流:管理程序把控制传送给一个作业,当作业运行结束时,它又收回控制,继续调度下一个作业执行,自动控制和处理作业流,减少了作业的准备和建立时间。作业流的自动控制和处理依靠作业控制语言,因而,促进了作业控制语言的发展。作业控制语言是由一些描述作业控制过程的语句组成的,每个语句附有一行作业或作业步信息编码,并以穿孔卡的形式提供。例如,Job卡表示启动一个新作业;FORTRAN卡表示调用FORTRAN编译系统;Load卡表示调用装配程序;Data卡指定数据;End卡表示一个作业结束。管理程序通过输入、解释并执行嵌入用户作业的作业控制卡规定的功能,就能自动地处理用户作业流。每个作业完成后,管理程序又自动地从输入机上读取下一个作业运行,直到整批作业结束。
l 提供一套操作命令:操作员通过打字机打入命令,管理程序识别并执行命令,这样不仅速度快,操作员也可进行一些复杂的控制。输出信息也可由打字机输出,代替了早期氖灯显示,易于理解。这种交互方式不仅提高了效率,也便于使用。
l 提供设备驱动和I/O控制功能:系统提供标准I/O程序,用户通过管理程序获得和使用I/O设备,减轻了用户驱动物理设备的负担。管理程序还能处理某些设备特殊和设备故障,改进了设备的可靠性和可用性。
l 提供库程序和程序装配功能:库程序中包括:汇编程序、FORTRAN语言编译程序、标准I/O程序、标准子程序等,通常,用户程序必须调用库程序才能执行下去,装配工作由管理程序完成。所有程序都按相对地址编址,管理程序把相应库程序和用户程序进行装配,并转换成绝对地址形式的目标程序,以便执行。
l 提供简单的文件管理功能:用个户通过输入设备输入大量的程序和数据,为了反复使用,用户希望能把这些信息保存起来,以便随时使用,这就产生了文件系统。从此,用户可按文件名字,而不是信息的物理地址进行存取,方便灵活,安全可靠。
1.2.3 多道程序设计与操作系统的形成
1、多道程序设计
在早期的单道批处理系统中,内存中仅有单作业在运行,致使系统中仍有许多资源空闲,设备利用率低,系统性能较差。如图1-3所示,当CPU工作时,外部设备不能工作;而外部设备工作时,CPU必须等待。
图1-3 单道算题运行时处理器的使用效率
多道程序设计(Multiprogramming)是指允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。从宏观上看,多道程序都处于运行过程中,但都未运行完成;从微观上看,各道程序轮流占用CPU,交替地执行。引入多道程序设计技术的根本目的是提高CPU的利用率,充分发挥系统部件的并行性。
下面我们来分析多道程序设计技术提高资源利用率和系统吞吐率的原理。从第二代计算机开始,计算机系统具有处理器和外围设备并行工作的能力,这使得计算机的效率有所提高。但是,仅仅这样做,计算机的效率仍不会很高。例如计算某个数据处理问题,要求从输入机(速度为6400字符/秒)输入500个字符,经处理(费时52毫秒)后,将结果(假定为2000个字符)存到磁带上(磁带机速度为10万字符/秒),然后,再读500个字符处理,直至所有的输入数据全部处理完毕。如果处理器不具有和外围设备并行工作的能力,那么上述计算过程如图1-3所示,不难看出在这个计算过程中,处理器的利用率为:
52 /(78十52十20)≈ 35%
分析上面的例子,可以看出效率不高的原因,当输入机输入500个字符后,处理器只花了52毫秒就处理完了,而这时第二批输入数据还要再等98毫秒时间才能输入完毕。
上述例子说明单道程序工作时,计算机系统的各部件的利用率没有得到充分发挥。为了提高效率,我们考虑让计算机同时接受两道算题,当第一道程序在等待外围设备的时候,让第二道运行,降低了CPU空等时间,那么处理器的利用率显然可以有所提高。例如,计算机在接受上述算题时还接受了另一算题:从另一台磁带机上输入2000个字符,经42毫秒的处理后,从行式打印机(速度为1350行/分)上输出两行。
图1-4 两道算题运行时处理器的使用效率
当这两个算题同时进入计算时,这个计算过程如图1-4所示。其中,P1表示程序甲占用CPU对输入机输入的500个字符进行处理,由于52毫秒处理便结束,下次处理要侍98毫秒之后,故这个时间段内CPU是空闲的。系统调度程序乙工作,它从磁带机上输入2000个字符后,P2表示对这批数据进行处理。相应的I/O设备和CPU的操作都是并行的。不难算出,此时处理器的利用率为:
(52+42)/ 150 ≈ 63%
由此可以看出,让几道程序同时进入计算比一道道串行地进行计算,CPU效率要高,因为,当某道程序因故不能继续运行下去时,管理程序便把CPU分给另外一道程序执行,这样可使CPU和I/O设备尽量都处于忙碌状态,这就是要采用多道程序设计方法的主要原因。具有处理器和外围设备并行功能的计算机采用多道程序设计的方技术后,可以提高处理器和I/O设备的并行性,从而也就能提高整个系统的效率,即增加单位时间内算题的数量。例如有甲、乙两道程序,如果让一道程序独占计算机单道运行时要花去一个小时,而此时处理器的利用率为30%,粗略地说,甲(或乙)一道程序执行时所需要的处理器时间为:
1小时×30%=18分钟
假定甲、乙两道程序按多道程序设计方法同时运行,处理器的利用率达50%,那么要提供36分钟的处理器时间,大约要运行72分钟。所以,粗略地估计,采用多道程序设计技术时只要大约72分钟就可以将两道程序计算完毕。然而,由于操作系统本身要花费处理器时间,所以实际花费的时间可能还要长些,例如要花80分钟。而单道运行时,甲、乙依次执行完需120分钟。因而;采用多道程序设计方法后可以提高效率:
(120—80)/120≈33%
但是从甲、乙两道程序来看,如果单道运行,它花60分钟就可以得到结果,而多道运行时,却要花80分钟才有结果,延长了20分钟,即延长了33%的时间。所以,采用多道程序设计方法后,提高了效率,即增长了单位时间的算题量,但是,对于每一道程序来说,却延长了计算时间。所以,多道程序设计技术提高资源利用率和系统吞吐率是以牺牲用户的响应时间为代价的。对于一些实时响应的计算问题,延长10%的计算时间可能都是难以接受的。因此,这个问题在多道程序设计中必须引起注意。在多道程序设计中,还有一个值得注意的问题是道数的多少。从表面上看,似乎道数越多越能提高效率,但是道数的多少绝不是任意的,它往往由系统的资源以及用户的要求而定。例如:如果上述甲、乙两道程序都要用行式打印机,而系统只有一台行式打印机,那么它们被同时接受进入计算机时,未必能提高效率。因为可能程序甲计算了一段时间后要等程序乙不再使用行式打印机时,即程序乙结束后,才能继续运行。此外,主存储器的容量和用户的响应时间等因素也影响道数的多寡。
下面小结一下操作系统中引入多道程序设计的好处:一是提高了CPU的利用率,二是提高了内存和I/O设备的利用率,三是改进了系统的吞吐率,四是充分发挥了系统的并行性。其主要缺点是作业周转时间延长。
注意,多道程序设计系统与多重处理系统(Multiprocessing) 有差别,后者是指配置了多个物理CPU,从而能真正同时执行多道程序。当然要有效地使用多重处理系统,必须采用多道程序设计技术;反过来,多道程序设计不一定要求有多重处理系统支持。多重处理系统的硬件结构可以多种多样,如共享内存的多CPU结构、网络连接的独立讣计算机结构。虽然多重处理系统增加了硬件,但却换来了提高系统吞吐量、可靠性、计算能力和并行处理能力的好处。
实现多道程序设计必须妥善地解决三个问题:存储保护与程序浮动;处理器的管理和调度,系统资源的管理和调度。
在多道程序设计的环境中,主存储器为几道程序所共享,因此,硬件必须提供必要的手段,使得在主存储器中的各道程序只能访问它自己的区域,以避免相互干扰。特别是当一道程序发生错误时,不致影响其它的程序,更不能影响系统程序,这就是存储保护。同时,由于每道程序不是独占全机,这样,不能事先规定它运行时将放在哪个区域,所以,程序员在编制程序时无法知道程序在主存储器的确切地址。甚至,在运行过程中,一个程序也可能改变其运行区域,所有这些,都要求一个程序或某一部分能随机地从某个主存储器区域移动到另一个区域,而不影响其执行,这就是程序浮动。
在多道程序设计系统里,如果系统仅配置一个物理处理器,那么多个程序必须轮流占有处理器。为了说明一个程序是否占有或可以占有处理器,我们把程序在执行中的状态分成三种。当一程序正占有处理器运行时,就说它是处于运行状态(运行态);当一个程序因等待某个事件的发生时,就说它处于等待状态(等待态);当一个程序等待的条件已满足可以运行而未占用处理器时,则说它处于就绪状态(就绪态),所以一道程序在执行中总是处于运行、就绪、等待三种状态之一。一道程序在执行过程中,它的程序状态是变化的,从运行态到等待态的转换是在发生了某种事件时产生的。这些事件可能是由于启动外围设备输入输出而使程序要等待输入输出结束后才能继续下去;也可能是在运行中发生了某种故障使程序不能继续运行下去等等。从等待态转换成就绪态也是在发生了某种事件时产生的。例如程序甲处于等待外围设备传输完毕的等待状态,当传输结束时,程序甲就从等待态转为就绪态。从运行态也能转变为就绪态。例如,当程序乙运行时发生了设备传输结束事件,而设备的传输结束,使得程序甲从等待态转变为就绪态;假定程序甲的优先级高于程序乙,因此让程序甲占有处理器运行,这样,程序乙就从运行态转为就绪态。
在多道程序设计系统里,系统的资源为几道程序所共享,上段谈到的处理器就是一例。此外,如主存储器、外围设备以及一些数据等也需要按一定策略去分配和调度,有关的调度算法与实现将在以后各章叙述。
2、操作系统的形成
第三代计算机的性能有了更大提高,机器速度更快,内外存容量增大,I/O设备增多,为软件的发展提供了有力支持。如何更好地发挥硬件功效,如何更好地满足各种应用的需要,这些都迫切要求扩充管理程序的功能。
中断技术和通道技术的出现使得硬部件具有了较强的并行工作的能力,从理论上来说,实现多道程序系统已无问题。但是,从半自动的管理程序方式过渡到能够自动控制程序执行的操作系统方式,对辅助存储器性能的要求很高。这个阶段虽然有个别的磁带操作系统出现,但操作系统的真正出现还期待着大容量高速辅助存储器。大约到六十年代中期以后,随着磁盘的出现,相继出现了多道批处理操作系统和分时操作系统、实时操作系统,标志着操作系统正式形成。
计算机配置操作系统后,其资源管理水平和操作自动化程度有了进一步提高,具体表现在:
l 操作系统实现了计算机操作过程的自动化。批处理方式更为完善和方便,作业控制语言有了进一步发展,为优化调度和管理控制提供了新手段。
l 资源管理水平有了提高,实现了外国设备的联机同时操作(即SPOOLING),进一步提高了计算机资源的利用率。
l 提供虚存管理功能,由于多个用户作业同时在内存中运行,在硬件设施的支持下,操作系统为多个用户作业提供了存储分配、共享、保护和扩充的功能。
l 支持分时操作,多个用户通过终端可以同时联机地与一个计算机系统交互。
l 文件管理功能有改进,数据库系统开始出现。
l 多道程序设计趋于完善,采用复杂的调度算法,充分利用各类资源,最大限度地提高计算机系统效率。
3、批处理操作系统
过去,在计算中心的计算机上一般所配置的操作系统采用以下方式工作:用户把要计算的应用问题编成程序,连同数据和作业说明书一起交给操作员,操作员集中一批作业,并输入到计算机中。然后,由操作系统来调度和控制用户作业的执行。通常,采用这种批量化处理作业方式的操作系统称为批处理操作系统(Batch Operating System)。
批处理操作系统根据一定的调度策略把要求计算的算题按一定的组合和次序去执行,从而,系统资源利用率高,作业的吞吐量大。批处理系统的主要特征是:
l 用户脱机工作。用户提交作业之后直至获得结果之前不再和计算机及他的作业交互。因而,作业控制语言对脱机工作的作业来说是必不可少的。这种工作方式对调试和修改程序是极不方便的。
l 成批处理作业。操作员集中一批用户提交的作业,输入计算机成为后备作业。后备作业由批处理操作系统一批批地选择并调入主存执行。
l 多道程序运行。按预先规定的调度算法,从后备作业中选取多个作业进入主存,并启动它们运行,实现了多道批处理。
l 作业周转时间长。由于作业进入计算机成为后备作业后要等待选择,因而,作业从进入计算机开始到完成并获得最后结果为止所经历的时间一般相当长,一般需等待数小时至几天。
4、分时操作系统
在批处理系统中,用户不能干预自己程序的运行,无法得知程序运行情况,对程序的调试和排错不利。为了克服这一缺点,便产生了分时操作系统。
允许多个联机用户同时使用一台计算机系统进行计算的操作系统称分时操作系统(Time Sharing Operting System)。其实现思想如下:每个用户在各自的终端上以问答方式控制程序运行,系统把中央处理器的时间划分成时间片,轮流分配给各个联机终端用户,每个用户只能在极短时间内执行,若时间片用完,而程序还未做完,则挂起等待下次分得时间片。这样一来,每个用户的每次要求都能得到快速响应,每个用户获得这样的印象,好像他独占了这台计算机一样。实质上,分时系统是多道程序的一个变种,不同之处在于每个用户都有一台联机终端。
分时的思想于1959年由MIT正式提出,并在1962年开发出了第一个分时系统CTSS(Compatible Time Sharing System),成功地运行在IBM 7094机上,能支持32个交互式用户同时工作。1965年8月IBM公司公布了360机上的分时系统TSS/360,这是一个失败的系统,由于它太大太慢,没有一家用户愿意使用。
1965年在美国国防部的支持下,MIT、BELL和GE公司决定开发一个“公用计算服务系统”,以支持整个波士顿地区所有分时用户,这个系统就是MULTICS (MULTiplexed Information and Computing Service) 。MULTICS运行在GE635、GE645计算机上使用高级语言PL/1编程,约30万行代码。特别值得一提的是,MULTICS引入了许多现代操作系统领域的概念雏形,如分时处理、远程联机、段页式虚拟存储器、文件系统、多级反馈调度、保护环安全机制、多CPU管理,多种程序设计环境等,对后来操作系统的设计有着极大的影响。今天,分时操作系统成为最流行的一种操作系统,几乎所有的现代通用操作系统都具备分时系统的特征。
分时操作系统具有以下特性:
l 同时性:若干个终端用户同时联机使用计算机,分时就是指多个用户分享使用同一台计算机。每个终端用户感觉上好像他独占了这台计算机。
l 独立性:终端用户彼此独立,互不干扰,每个终端用户感觉上好像他独占了这台计算机。
l 及时性:终端用户的立即型请求(即不要求大量CPU时间处理的请求)能在足够快的时间之内得到响应。这一特性与计算机CPU的处理速度、分时系统中联机终端用户数和时间片的长短密切相关。
l 交互性:人机交互,联机工作,用户直接控制其程序的运行,便于程序的调试和排错。
分时操作系统和批处理操作系统虽然有共性,它们都基于多道程序设计技术,但存在下列不同点:
l 目标不同,批处理系统以提高系统资源利用率和作业吞吐率为目标;分时系统则要满足多个联机用户的快速响应。
l 适应作业的性质不同,批处理适应已经调试好的大型作业;而分时系统适应正在调试的小型作业。
l 资源使用率不同,批处理操作系统可合理安排不同负载的作业,使各种资源利用率较佳;分时操作系统中,多个终端作业使用相同类型编译系统和公共子程序时,系统调用它们的开销较小。
l 作业控制方式不同,批处理由用户通过JCL的语句书写作业控制流,预先提交,脱机工作;交互型作业,由用户从键盘输入操作命令控制,联机工作。
1.2.3.1 实时操作系统
虽然多道批处理操作系统和分时操作系统获得了较佳的资源利用率和快速的响应时间,从而,使计算机的应用范围日益扩大,但它们难以满足实时控制和实时信息处理领域的需要。于是,便产生了实时操作系统,目前有三种典型的实时系统;过程控制系统、信息查询系统和事务处理系统。计算机用于生产过程控制时,要求系统能现场实时采集数据,并对采集的数据进行及时处理,进而能自动地发出控制信号控制相应执行机构,使某些参数(压力、温度、距离、湿度)能按予定规律变化,以保证产品质量。导弹制导系统,飞机自动驾驶系统,火炮自动控制系统都是实时过程控制系统。计算机还可用于控制进行实时信息处理,情报检索系统是典型的实时信息处理系统。计算机接收成干上百从各处终端发来的服务请求和提问,系统应在极快的时间内做出回答和响应。事务处理系统不仅对终端用户及时作出响应,而且要对系统中的文件或数据库频繁更新。例如,银行业务处理系统,每次银行客户发生业务往来,均需修改文件或数据库。要求这样的系统响应快、安全保密,可靠性高。
实时操作系统(Real Time Operating System)是指当外界事件或数据产生时,能够接收并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制监控的生产过程或对处理系统作出快速响应,并控制所有实行任务协调一致运行的操作系统。由实时操作系统控制的过程控制系统,较为复杂,通常由四部分组成:1)数据采集。它用来收集、按收和录入系统工作必须的信息或进行信号检测。2)加工处理。它对进入系统的信息进行加工处理,获得控制系统工作必须的参数或作出决定,然后,进行输出,记录或显示。3)操作控制。它根据加工处理的结果采取适当措施或动作,达到控制或适应环境的目的。4)反馈处理。它监督执行机构的执行结果,并将该结果馈送至信号检测或数据按收部件,以便系统根据反馈信息采取进一步措施,达到控制的予期目的。
在实时系统中通常存在若干个实时任务,它们常常通过“队列驱动” 或“事件驱动” 开始工作,当系统接受来自某些外部事件后,分析这些消息,驱动实时任务完成相应处理和控制。可以从不同角度对实时任务加以分类。按任务执行是否呈现周期性可分成周期性实时任务和非周期性实时任务;按实时任务截止时间可分成硬实时任务和软实时任务。
1.2.4 操作系统的进一步发展
1、操作系统发展的主要动力
促使操作系统不断发展的主要动力有以下五个方面:
1)器件快速更新换代。微电子技术是推动计算机技术飞速发展的“引擎”,每隔18个月其性能要翻一翻。推动微机快速更新换代,它由8位机、16位机发展到32位,当前已经研制出了64位机,相应的微机操作系统也就由8位微机操作系统发展到16位、32位微机系统,而64位微机操作系统也在研制。
2)计算机体系结构不断发展。硬件的改进导致操作系统的发展的例子很多,内存管理支撑硬件由分页或分段设施代替了界寄存器以后,操作系统中便增加了分页或分段存储管理功能。图形终端代替逐行显示终端后,操作系统中增加了窗口管理功能,允许用户通过多个窗口在同一时间提出多个操作请求。引进了中断和通道等设施后,操作系统中引入了多道程序设计功能。计算机体系结构的不断发展有力地推动着操作系统的发展。例如,计算机由单处理机改进为多处理机系统时,操作系统也由单处理机操作系统发展到多处理机操作系统和并行操作系统;随着计算机网络的出现和发展,出现了分布式操作系统和网络操作系统。随着信息家电的发展,又出现了嵌入式操作系统。
3)提高计算机系统资源利用率的需要。多用户共享一套计算机系统的资源,必须千方百计地提高计算机系统中各种资源的利用率,各种调度算法和分配策略相继被研究和采用,这也成为操作系统发展的一个动力。
4)让用户使用计算机越来越方便的需要。从批处理到交互型分时操作系统的出现,大大改变了用户上机、调试程序的环境;从命令行交互进化到GUI用户界面。操作系统的界面还会变得更加友善。
5)满足用户新要求,提供给用户新服务。当用户要求解决实时性应用时,便出现了实操作系统;当发现现有的工具和功能不能满足用户需要时,操作系统往往要进行升级换代,开发新工具,加入新功能。
2、微机操作系统
微型计算机的出现犹如一颗重磅炸弹,导致了计算机产业的革命。今天微型计算机已经进入社会的各个领域,拥有巨大的使用量和最广泛的用户。在七十年代中期到八十年代早期,微型计算机上运行的一般是单用户单任务操作系统,如:CP/M、CDOS(Cromemco磁盘操作系统)、MDOS(Motorola磁盘操作系统)和早期的MS-DOS(Microsoft磁盘操作系统)。八十年代以后到九十年代初,微机操作系统开始支持单用户多任务和分时操作。以MP/M、XENIX和后期MS-DOS为代表。
近年来,微机操作系统得到了进一步发展,以WINDOWS、OS2、MACOS和LINUX为代表的新一代微机操作系统具有GUI、多用户和多任务、虚拟存储管理、网络通信支持、数据库支持、多媒体支持、应用编程支持API等功能。并且还具有以下特点:1)开放性。支持不同系统互连、支持分布式处理和支持多CPU系统。2)通用性。支持应用程序的独立性和在不同平台上的可移植性。3)高性能。随着硬件性能提高、64位机逐步普及、CPU速度进一步提高,微机操作系统中引进了许多以前在中、大型机上才能实现的技术,支持多线程,支持对称处理器SMP,导致计算机系统性能大大提高。4)采用微内核结构。提供基本支撑功能的内核极小;大部分操作系统功能由内核之外运行的服务器来实现。
3、并行操作系统
计算机的应用经历了从数据处理到信息处理,从信息处理到知识处理,每前进一步都要求增加计算机的处理能力。为了达到极高的性能,除提高元器件的速度外,计算机系统结构必须不断改进,而这一点主要用采用增加同一时间间隔内的操作数量,通过并行处理(Parallel processing)技术,研究并行计算机来达到的,已经开发出的并行计算机有:阵列处理机、流水线处理机、多处理机。
并行处理技术已成为近年来计算机的热门研究课题,它在气象预报、石油勘探、空气动力学、基因研究、核技术及航空航天飞行器设计等领域均有广泛应用。
为了发挥并行计算机的性能,需要有并行算法、并行语言等许多软件的配合,而并行操作系统则是并行计算机发挥高性能的基础和保证。所以,人们越来越重视并行操作系统的研究和开发。目前已经研究出来的并行操作系统有:美国Stanford大学的V-Kernel、美国Bell实验室的Meglos、美国卡内基梅隆大学的MACH等。
4、操作系统的网络化
计算机网络是通过通信设施将地理上分散并具有自治功能的多个计算机系统互连起来,可互操作协作处理的系统。它具有三个主要组成部分:1)若干台主机,通常它们之间要求交换和共享信息,每台机器是自治的各自独立工作;2)通信子网,它由通信链路和通信处理机组成,用于数据通信;3)通信协议,网络中传送数据必须遵守的约定和规则,通信协议使网络中计算机能协同工作。
网络操作系统(Network Operating System)能够使计算机在网络中方便地传送信息和共享资源。网络操作系统具有两种工作模式:第一种是客户机/服务器(Client/Server) 模式,这类网络中分成两类站点,一类作为网络控制中心或数据中心的服务器,提供文件打印、通信传输、数据库等各种服务;另一类是本地处理和访问服务器的客户机。这是目前较为流行的工作模式。另一种是对等(Peer-to-Peer) 模式,这种网络中的站点都是对等的,每一个站点既可作为服务器,而又可作为客户机。
网络操作系统应该具有以下几项功能:1)网络通信。其任务是在源计算机和目标计算机之间,实现无差错的数据传输。具体来说完成建立/拆除通信链路、传输控制、差错控制、流量控制、路由选择等功能。2)资源管理。对网络中的所有硬、软件资源实施有效管理,协调诸用户对共享资源的使用,保证数据的一致性、完整性。典型的网络资源有:硬盘、打印机、文件和数据。3)网络管理。包括安全控制、性能监视、维护功能等。4)网络服务:如电子邮件、文件传输、共享设备服务、远程作业录入服务等。
目前,计算机网络操作系统有三大主流:Unix、Netware 和Windows。Unix是唯一能跨多种平台的操作系统;Windows NT 工作在微机和工作站上;Netware则主要面向微机。支持C/S 结构的微机网络操作系统则主要有:Netware、Unix ware、Windows NT、 LAN Manager和 LAN Server等。
下一代网络操作系统应能提供以下功能支撑:
l 位置透明性 支持客户机、服务器和系统资源不停地在网络中装入卸出,且不固定确切位置的工作方式。
l 名空间透明性 网络中的任何实体都必须从属于同一个名空间。
l 管理维护透明性 如果一个目录在多台机器上有映象,应负责对其同步维护;应能将用户和网络故障相隔离;同步多台地域上分散的机器的时钟。
l 安全权限透明性 用户仅需使用一个注册名及口令,就可在任何地点对任何服务器的资源进行存取,请求的合法性由操作系统验证,数据的安全性由操作系统保证。
l 通信透明性 提供对多种通信协议支持,缩短通信的延时。
5、分布式操作系统
以往的计算机系统中,其处理和控制功能都高度地集中在一台计算机上,所有的任务都由它完成,这种的系统称集中式计算机系统。而分布式计算机系统是指由多台分散的计算机,经互连网络连接而成的系统。每台计算机高度自治,又相互协同,能在系统范围内实现资源管理,任务分配、能并行地运行分布式程序。通常分布式计算机系统满足以下条件:
l 系统中任意两台计算机可以通过系统的安全通信机制来交换信息。
l 系统中的资源为所有用户共享,用户只要考虑系统中是否有所需资源,而无需考虑资源在哪台计算机上。
l 系统中的若干台机器可以互相协作来完成同一个任务,换句话说,一个程度可以分布于几台计算机上并行运行,一般的网络是不满足这个条件的,所以,分布式系统是一种特殊的计算机网络。
l 系统中的一个结点出错不影响其它结点运行、即具有较好的容错性和健壮性。
从上面叙述可以看出,分布式操作系统(Distributed Operating System)应该具备四项基本功能:1)进程通信。提供有力的通信手段,让运行在不同计算机上的进程可通过通信来交换数据。2)资源共享。提供访问它机资源的功能,使得用户可以访问或使用位于它机上的资源,例如A结点上的一个进程使用B结点上的一台打印机,而B结点上的一个进程却在存取A结点上的一个文件。3)并行运算。提供某种程度设计语言,使用户可编写分布式程序,该程序可在系统中多个节点上并行运行。4)网络管理。高效地控制和管理网络资源,对用户具有透明性、即使用分布式系统与传统单机相似。
分布式计算机系统的主要优点是:坚定性强、扩充容易、可靠性好、维护方便和效率较高。
用于管理分布式计算机系统的操作系统称分布式操作系统(Distrabuted Operatying System)。它与单机的集中式操作系统的主要区别在于资源管理,进程通信和系统结构三个方面。和计算机网络类似,分布式操作系统中必须有通信规程,计算机之间的发信按规程进行。分布式系统的通信机构、通信规程和路径算法都是十分主要的研究课题。集中式操作系统的资源管理比较简单,一类资源由一个资源管理程序来管。这种管理方式不适合于分布式系统,例如,一台机器上的文件系统来管理其它计算机上的文件是有困难的。所以,分布式系统中,对于一类资源往往有多个资源管理程序,这些管理者必须协调一致的工作,才能管好资源。这种管理比单个资源管理程序的方式复杂得多,人们已开展了许多研究工作,提出了许多分布式同步算法和同步机制。分布式操作系统的结构也和集中式操作系统不一样,它往往有若干相对独立部分,各部分分布于各台计算机上,每一部分在另外的计算机上往往有一个副本,当一台机器发生故障时,由于操作系统的每个部分在它机上有副本,因而,仍可维持原有功能。
Plan9是由AT&T公司的BELL实验室于1987年由Ken Thompson(Unix设计者之一) 参与开发的一个具有全新概念的分布式操作系统。开发Plan9的主要动机是为解决Unix系统日趋庞大,在可移植性、可维护性和对硬件环境的适应性方面所遇到的种种困难。小而精的思想贯彻到整个系统谍设计中,整个系统仅有约15000行C源代码,是小而精思想的新体现。Plan9是运行在由不同网络联接CPU服务器、文件服务器及终端机的分布式硬件上的一个分布式操作系统。Plan9实现中引入和使用了以下概念和技术:命名空间(Naming Space) 、进程文件系统(Process File System) 、窗口系统(Window System) 、CPU命令(CPU Command) 等。
分布式操作系统Amoeba由荷兰自由大学和数学信息科学中心联合研制。Amoeba的基本思想是:用户就象使用传统的计算机那样来使用Amoeba、即用户不知道他正在用那些机器?用了几台?是那几台?用户也不知道文件存在那台机器上?共有几个备份?其主要目标是:进行分解式系统的研究,建立一个良好的试验平台,以便在上面进行算法、语言、和应用的试验。Amoeba将网络中的机器分成若干个组,包括CPU池组、工作站组、专用服务器组,通过一专用的Gateway将局域网联到全局网中构成Amoeba的硬件体系结构。Amoeba的微内核具有四项基本功能:管理进程和线程,支持底层内存管理;支持线程间的透明通信;实现I/O处理。Amoeba的服务功能由下列服务程序实现:快速文件服务程序,目录服务程序,监控服务程序等。
其它著名的分布式操作系统还有:Cm *(美国卡内基梅隆大学) ,X树系统(美国加州大学伯克利分校) ,Arachne(美国威斯康星大学) ,Chorus(法国国家信息与自动化研究所) ,Plan9(美国Bell实验室) ,Guide(法国Bull研究中心) ,Clouds(美国乔治亚理工学院) ,CMDS(英国剑桥大学) 。
分布式系统研究和开发的主要方向有:
l 分布式系统结构:研究非共享通路结构和共享通路结构。
l 分布式操作系统:研究资源管理方法、同步控制机制、死锁的检测与解除、进程通信模型及手段等。
l 分布式程序设计:扩充顺序程序设计语言使其具有分布程序设计能力;开发新的分布式程序设计语言。
l 分布式数据库:设计开发新的分布式数据库。
l 分布式应用 :研究各种分布分式并行算法,研究在办公自动化、自动控制、管理信息系统等各个领域的应用。
1.2.4.1 嵌入式操作系统
随着计算机技术、通信技术为主的信息技术的快速发展和Internet网的广泛应用,3C(Computer ,Communication ,Consumer Electronics)合一的趋势已初露端倪,计算机是贯穿信息社会的核心技术,网络和通信是信息社会赖以存在的基础设施,消费电子是人与信息社会的主要接口。3C合一的必然产物是信息电器;同时,计算机的微型化和专业化趋势已成事实,在这些领域内部产生了一个共同需求:嵌入式软件,嵌入式操作系统 ( Embedded Operating System)是嵌入式软件的基本支撑。随着信息电器和信息产业的迅速发展,面对巨大的生产量和用户量,嵌入式软件和嵌入式操作系统的应用前景十分广阔。
国外公司已于几年前开始投入嵌入式软件开发,至今已有几十种嵌入式操作系统面世,嵌入式应用软件更是丰富多彩。具有代表性的嵌入式操作系统有:chorus (Chorus公司), Diba (Sun公司), Navio (Oracle公司), Os-9(Microsoft公司), Psos(ISI公司),QNX(QSSL公司),VxWork(WindRiver公司)和Win CE (Microsoft公司
【发表回复】【查看CU论坛原帖】【添加到收藏夹】【关闭】
| unix_sco 回复于:2004-01-24 22:54:32
| 呵呵,比较深奥,应该加精。
不过,放在这里有些牵强。
| | xzh2002 回复于:2004-01-24 23:13:48
| 这是mount命令的源代码,怎么样?
[code:1:f0a849218b]#define NMOUNT 16
#define NAMSIZ 32
struct mtab {
char file[NAMSIZ];
char spec[NAMSIZ];
} mtab[NMOUNT];
main(argc, argv)
char **argv;
{
register int ro;
register struct mtab *mp;
register char *np;
int n, mf;
mf = open("/etc/mtab", 0);
read(mf, mtab, NMOUNT*2*NAMSIZ);
if (argc==1) {
for (mp = mtab; mp < &mtab[NMOUNT]; mp++)
if (mp->file[0])
printf("%s on %s\n", mp->spec, mp->file);
return;
}
if(argc < 3) {
printf("arg count\n");
return;
}
ro = 0;
if(argc > 3)
ro++;
if(mount(argv[1], argv[2], ro) < 0) {
perror("mount");
return;
}
np = argv[1];
while(*np++)
;
np--;
while(*--np == '/')
*np = '\0';
while(np > argv[1] && *--np != '/')
;
if(*np == '/')
np++;
argv[1] = np;
for (mp = mtab; mp < &mtab[NMOUNT]; mp++) {
if (mp->file[0] == 0) {
for (np = mp->spec; np < &mp->spec[NAMSIZ-1];)
if ((*np++ = *argv[1]++) == 0)
argv[1]--;
for (np = mp->file; np < &mp->file[NAMSIZ-1];)
if ((*np++ = *argv[2]++) == 0)
argv[2]--;
mp = &mtab[NMOUNT];
while ((--mp)->file[0] == 0);
mf = creat("/etc/mtab", 0644);
write(mf, mtab, (mp-mtab+1)*2*NAMSIZ);
return;
}
}
}[/code:1:f0a849218b]
| | namtso 回复于:2004-01-24 23:33:17
| 没有详细看,看开头部分就不怎么样。
mf = open("/etc/mtab", 0);
read(mf, mtab, NMOUNT*2*NAMSIZ);
没有对open的返回值进行检查,如果open调用失败,后面的程序会有问题。
| | xzh2002 回复于:2004-01-24 23:35:02
| 所以我们可以对其进行改进呀
| |
|