计算机四级操作系统-1-操作系统概论
目录
第1章 操作系统概论 1
1.1操作系统的概念 1
1.1.1计算机系统 1
1.1.2操作系统的定义 2
1.1.3操作系统的特征 4
1.1.4研究操作系统的观点 6
1.1.5 操作系统的功能 8
1.2操作系统的发展 13
1.2.1手工操作 13
1.2.2监控程序(早期批处理) 13
1.2.3多道批处理 14
1.2.4分时系统 15
1.2.5UNIX通用操作系统 15
1.2.6个人计算机操作系统 16
1.2.7Android操作系统 16
1.3操作系统分类 17
1.3.1批处理操作系统 17
1.3.2分时系统 22
1.3.3实时操作系统 23
1.3.4嵌入式操作系统 24
1.3.5个人计算机操作系统 25
1.3.6网络操作系统 26
1.3.7分布式操作系统 26
1.3.8智能卡操作系统 28
1.4操作系统结构 29
1.4.1整体式结构 30
1.4.2层次结构 31
1.4.3微内核(客户机/服务器)结构 32
第1章 操作系统概论
操作系统是一门理论与实践结合非常紧密的课程。操作系统也是一个可以从多个视角加以考察的一个软件系统。从计算机应用角度看,操作系统是几乎人人都要使用的系统界面和接口;而从软件设计和开发的角度看,操作系统起着系统软件开发基础和工具的作用;而在黑客和网络攻击者看来,操作系统是他们要攻破的第一道防线。
本章将对操作系统作一个概括性的介绍,使读者在学习和理解操作系统基本原理之前,能够对操作系统这门课程有一个整体的认识和了解。本章首先阐述操作系统的基本概念,分别介绍计算机系统、操作系统的定义、功能、特征和研究操作系统的几种观点等方面的内容,并按照时间顺序介绍操作系统的由来和发展历史,以便读者对操作系统的基本概念有较为具体的认识;同时对各类操作系统的工作原理和特点进行概要性介绍。本章的最后一节简要介绍典型的操作系统结构。
1.1操作系统的概念
本节首先介绍计算机系统,然后分别讲述操作系统的定义、特征、功能以及研究操作系统的几种观点。
1.1.1计算机系统
计算机系统是一种可以按用户的要求接收和存储信息,自动进行数据处理并输出结果信息的系统。计算机系统包括硬件(子)系统和软件(子)系统。硬件系统是计算机系统赖以工作的实体;软件系统则保障计算机系统按用户指定的要求协调工作。这两个部分构成了计算机系统的资源。因此,计算机系统的资源包括两大类:硬件资源和软件资源。
中央处理器(CPU)、内存储器、外存储器(磁盘、磁带等)以及各种类型的输入/输出设备(键盘、鼠标、显示器、打印机等)组成了计算机硬件系统;而各种程序和数据则组成了计算机的软件系统。一个完整的计算机系统如图1-1所示。
任何一个程序在计算机系统中执行前,必须先要得到计算机系统的内存空间后才能被装入内存,程序的执行要依靠中央处理器完成,并且程序在执行过程中需要调用公共服务子程序和共享文件,还要使用各种计算机外部设备,以完成信息的输入和输出。这里的中央处理器、内存空间、公共服务子程序和共享文件以及计算机外部设备等都是计算机系统中的资源。可见,任何程序的执行都要占用计算机系统的资源。
但是,各个程序对计算机资源的要求和使用是不同的。不同用户对计算机资源的请求和使用还可能会产生冲突。比如,正当一个用户在使用打印机时,另外一个用户也要求使用这台打印机。可以想象,如果没有一种方法或规则对用户使用打印机的要求进行管理,肯定会引起混乱。同样,对计算机系统中的其他资源也需要进行管理。因此,适当地控制和协调计算机资源的分配是必要的。
用户在使用计算机系统时,当然希望计算机能够按照用户的要求工作,控制程序按照用户各自的意愿执行。所以,计算机系统必须有识别用户要求的能力,还必须具有针对不同用户进行不同控制执行的能力。
在计算机系统中,集中了资源管理功能和控制程序执行功能的一种软件,称为操作系统。
1.1.2操作系统的定义
下面给出操作系统的一个定义:
操作系统是计算机系统中的一个系统软件,它是这样一些程序模块的集合——它们能有效地组织和管理计算机系统中的硬件及软件资源,合理地组织计算机的工作流程,控制程序的执行,并向用户提供各种服务功能,使用户能够灵活、方便、有效地使用计算机,并使整个计算机系统能高效地运行。
从表现形式上看,操作系统是一个大型软件程序,其中有大量的为实现操作系统各项功能的软件程序,这些软件程序从设计和结构角度看,通常是模块化的。有的操作系统带有内核,其内核也由各种程序模块组成。有的操作系统本身是层次化的,每一个层次的程序通常也是模块化的。还有的操作系统是客户机/服务器结构的,而服务器或客户机内部程序一般也是模块化的。总结起来,操作系统这样一个大型软件程序,是具有各种功能的、大量程序模块的集合。
操作系统的任务之一是组织和管理计算机系统中的硬件及软件资源。在操作系统内部,为了掌握整个计算机系统的硬件和软件资源,设计了各种不同类型的表格或数据结构,将所有的硬件和软件资源一一加以登记。资源的名称、类型、数量、用途、完好状态以及目前使用状态等信息,均在有关数据结构中保存,并动态、实时地不断更新着。记录数据的目的是让操作系统根据用户对各种资源的需求情况,资源的当前分配和使用情况以及有关的资源调度策略,对资源进行有效的组织和管理。
这里,“有效”是指根据用户的不同要求,在管理计算机资源时考虑到系统运行的效率和资源的利用率。要尽可能提高中央处理器的利用率,让它尽可能少地空转,应该在保证访问效能的前提下尽可能有效地利用其他资源,例如减少对内存、硬盘空间等的浪费。
在计算机系统中,不同的用户有不同的要求。系统中的作业有大有小,有的作业需要运算时间长,有的作业有大量的信息需要打印输出,有的事件需要立即处理。比如,笔记本电脑的电池还有30秒钟即将没电了,需要立即通知用户,要么给电脑提供新的电源,要么赶紧保存重要的文档。而有的事件推迟一些时间处理,不会引起什么大的乱子,比如,通知用户信箱中刚刚收到一封电子邮件,早10秒钟发出通知还是晚10秒钟发出通知,估计不会对用户造成多大影响。操作系统应该根据用户不同的要求,作业的各自特点以及紧急程度等,合理地组织计算机的工作流程,并控制程序的执行。
这里的“合理”是指操作系统要“公平”对待不同的用户程序,保证系统不发生“死锁”和“饥饿”的现象。
操作系统的另一项重要任务,是向用户提供各种服务功能。一方面,向程序开发和设计人员提供高效的程序设计接口;另一方面,向使用计算机系统的用户提供接口,使用户能够灵活、方便、有效地使用计算机。
这里的“方便”是指操作系统的人机界面要考虑用户使用界面和程序设计接口两个方面的易用性、易学性和易维护性。
1.1.3操作系统的特征
作为一种系统软件,操作系统有着与其他软件相比所不同的特征。
1.并发性
并发性是指在计算机系统中同时存在若干个运行着的程序。从宏观上看,这些程序在同时向前推进。
进一步分析,计算机程序的并发性体现在如下两个方面:用户程序与用户程序之间并发执行;用户程序与操作系统程序之间并发执行。
实际从微观上看,在单处理器的环境下,这些同时运行着的程序是交替在中央处理器上运行的。在多处理器系统的环境中,多个程序的并发特征,不仅在宏观上是并发的,而且在微观上,即在处理器一级上,程序也是并发执行的。而在分布式系统中,多个计算机的并存,使得程序的并发特征得到了更充分的体现,因为在每个计算机上都可以有程序执行,它们共同构造了程序并发执行的图景。
2.共享性
共享性是指操作系统程序与多个用户程序共用系统中的各种资源。这种共享性是在操作系统控制下实现的。资源的共享性主要针对计算机系统中的如下几项重要资源:
(1)中央处理器 、CPU。中央处理器是所有程序都必须使用的最重要的资源,操作系统必须采用恰当的调度策略,对多个并发程序分配处理器资源。
(2) 内存储器。任何一个程序必须首先调入内存之后,才能执行。管理内存的公共使用是操作系统的重要功能之一。
(3) 外存储器。外存储器主要用来保存各种程序和数据。这些程序和数据一般以文件的形式存放在外存储器上。外存储器有各种类型,如硬盘、软盘、磁带、可读写光盘等,这些外存储器都是为所有的程序和数据共享的。操作系统同样必须对外存储器的共享进行管理,并且保证在外存储器中所有程序和数据的完整性和正确性。
(4) 外部设备。我们知道,计算机系统中的外部设备是供所有用户使用的,这些用户包括操作系统、系统用户(如管理员)和普通用户。操作系统必须对这些用户对外部设备的使用要求作出管理,使所有的外部设备能够按照一定的策略被全部用户所共享。
在计算机系统中,对资源的共享一般有两种形式••互斥共享和同时共享。
•互斥共享。系统中的有些资源比如打印机、磁带机、扫描仪等,虽然可以供多个用户程序同时使用,但是在一段特定的时间内只能由某一个用户程序使用。当这个资源正在被使用的时候,其他请求该资源的程序必须等待,并且在这个资源被使用完了以后才由操作系统根据一定的策略再选择一个用户程序占有该资源。通常把这样的资源称为临界资源。许多操作系统维护的重要系统数据都是临界资源,它们都要求被互斥共享。
•同时共享。系统中还有一类资源,它们在同一段时间内可以被多个程序同时访问。需要说明的是,这种同时访问是指宏观上的同时,微观上这些程序访问这个资源有可能还是交替进行的,而且它们交替访问这个资源的顺序对访问结果没有什么影响。一个典型的可以同时共享的资源就是硬盘,当然,那些可以重入的操作系统代码也是可以被同时共享的。
3.随机性
操作系统的运行是在一种随机的环境下进行的。这种随机环境的含义是,操作系统不能对所运行的程序的行为以及硬件设备的情况作出任何事先的假定。显然一个设备可能在任何时候向处理器发出中断请求,而用户提交的、运行着的程序要做什么事情也无法事先知道。因而一般来说,操作系统正处于什么样的状态之中是无法确切知道的,这就是随机性的含义。但是,随机性并不意味着操作系统不能很好地控制资源的使用和程序的运行,随机性突出强调了在进行操作系统的设计与实现时要充分考虑各种各样的可能性。操作系统本身应该稳定、可靠、安全、高效,实现程序并发和资源共享的目的。
1.1.4研究操作系统的观点
操作系统是计算机系统中的一个极为重要的部分,担负着非常重大的职责,可以说操作系统身兼数职。要理解操作系统,有必要深入地了解和认识操作系统的本质,即操作系统究竟是什么。
对操作系统本质的不同看法,会影响操作系统的设计思想。本节介绍研究操作系统的几种观点。
1.软件的观点
从软件的观点来看,操作系统是一种大型软件系统,它是多种功能程序的集合。作为一种大型软件系统,操作系统有软件的外在特性和内在特性。
所谓操作系统的软件外在特性是指,操作系统是一种软件,它的外部表现形式,即它的操作命令定义集和它的界面,完全确定了操作系统这个软件的使用方式。比如,操作系统的各种命令、各种系统调用及其语法定义等。从操作系统的使用界面上,即从操作系统的各种命令、系统调用及其语法定义等方面学习和研究操作系统,我们才能从软件的外部特征上把握住操作系统的性能。
所谓操作系统的软件内在特性是指,操作系统既然是一种软件,它就具有一般软件的结构特点。然而这种软件又不是一般的应用软件,它具有一般应用软件所不具备的特殊结构。因此,学习和研究操作系统时,就需要研讨其软件结构上的特点,从而更好地把握操作系统的内部结构特点。比如,操作系统是直接同硬件打交道的,那么操作系统中同硬件交互的软件是如何组成的,每个组成部分的功能作用和各部分之间的关系等,都是需要研究的。
2.资源管理的观点
在计算机系统中,硬件和软件资源可以分成以下几部分:中央处理器、存储器(内存和外存)、外部设备和信息(文件)。现代计算机系统支持多个用户、多道作业,那么,面对众多的用户程序、作业争夺处理器、存储器、设备和共享软件资源,如何协调这些用户程序和作业呢?如何有条不紊地进行资源分配呢?
操作系统就是负责记录谁在使用什么样的资源,系统中还有哪些资源空闲,当前响应了谁对资源的要求,以及收回哪些不再使用的资源等。操作系统要提供一些机制去协调程序间的竞争与同步,提供机制对资源进行合理使用,施加保护,以及采取虚拟技术来“扩充”资源等。图1-2示意了操作系统管理的基本资源。
3.进程的观点
简单地说,进程可以看作运行中的程序。采用进程的观点,操作系统可看作是由多个可以同时独立运行的程序和一个对这些程序进行协调的核心所组成。每个进程都完成某一特定任务,任务可以来自用户提交的作业,也可来自操作系统(例如,控制用户作业的运行,处理某个设备的输入/输出……)。可见,进程可以分为用户进程和系统进程两大类,而操作系统则控制和协调这些进程的运行。
采用进程的观点时,侧重于分析计算机系统各部分的并行工作研究处理各项管理任务的分割以及这些管理任务相互之间的关系。进程在共享资源时所产生的竞争问题,通过进程之间的通信来解决。
- 虚机器的观点
在操作系统的支持下,用户不需要直接操作硬件机器(称为裸机),而是通过操作系统提供的各种手段来控制和使用计算机。操作系统把原来的计算机(裸机)扩充成为功能强、使用方便的计算机系统,我们把这种计算机系统称为虚拟计算机,而把操作系统的全部功能,包括系统调用、命令、作业控制语言等,统称为操作系统虚机器。
虚机器的观点是从系统功能分解的角度出发来考虑操作系统的结构。这种观点将操作系统的功能分成若干个层次,每一层次完成特定的功能,从而构成一个虚机器,并为上一层次提供支持,构成它的运行环境。通过逐个层次的功能扩充,最终完成整个操作系统虚机器的构造,向用户提供各种服务,完成用户的作业要求。
- 服务提供者观点
操作系统提供了一系列的功能和便利的工作环境为用户服务,所以可以把操作系统看作是服务提供者。从用户的角度,站在操作系统之外观察操作系统,则可以认为该服务提供者为用户提供了比裸机功能更强,服务质量更高,更方便、灵活的虚拟机器。为用户使用便利,该服务提供者提供了一组功能强大、方便、易用的广义指令(称为系统调用)。
1.1.5 操作系统的功能
操作系统在计算机系统中具有非常重要的地位,承担着计算机系统中全部的管理功能。按照资源管理的观点,操作系统的这些功能主要可以分为进程管理(处理器管理)、存储管理、文件管理、作业管理和设备管理。下面分别对它们进行简要的分析介绍。
1.进程管理
进程管理的实质是对中央处理器进行管理,所以进程管理往往又称为处理器管理。CPU是计算机系统中最宝贵的硬件资源,为了提高CPU的利用率,现代操作系统都采用了多道程序技术。如果一个程序因等待某一条件而不能运行下去时,就把处理器占用权转交给另一个可运行程序。或者,当出现了一个比当前运行的程序更重要的可运行的程序时,后者应能抢占CPU。为了描述多道程序的并发执行,就要引入进程的概念。通过对进程的管理,协调多道程序之间的关系,解决有关处理器分配调度策略、分配的实施和回收等问题,以使CPU资源得到最充分的利用。
由于操作系统对处理器管理策略的不同,操作系统对其作业的处理方式也就不同,例如有批处理方式、分时处理方式和实时处理方式等,从而有各种不同性质的操作系统呈现在用户面前。
进程管理主要包括进程控制、进程同步、进程间通信和进程调度等几方面的内容。其中进程控制主要处理进程的创建、状态转换、进程撤销以及相关的进程资源的分配与回收等事务;进程同步主要处理进程之间的关系,包括进程的同步和互斥;进程间通信主要处理相互协作进程之间信息的交换问题;而进程调度则是按照一定的算法从就绪队列中挑选一个进程在处理器中真正执行它。下面分别叙述进程管理的主要内容。
1)进程控制
在多道程序环境下,进程是操作系统进行资源分配的单位。在进程创建时,系统要为进程分
配各种资源,例如内存、外设等;在进程退出的时候,系统要从进程空间中回收被分配给它的资源c进程控制的主要任务就是创建进程、撤销结束的进程以及控制进程运行时候的各种状态转换。
2) 进程同步
多个进程的执行是并发的,它们以异步的方式运行,它的执行进度也是不可预知的。为了使多个进程可以有条不紊地运行,操作系统要提供进程同步机制,以协调进程的执行。一般有两种协调方式:互斥和同步。互斥是指多个进程对临界资源访问时采用互斥的形式;同步则是在相互协作共同完成任务的进程之间,用同步机制协调它们之间的执行顺序。
最简单的实现互斥的方法就是给资源加锁,并提供操纵锁变量的原语。包括开锁和关锁原语。所谓原语就是指具有某种功能,运行时有“原子性”的小段程序。原子性可保证这一段程序要么全部被执行,要么全部不起作用,即这一操作不可以被进一步分割或者打断,如同人们一度认为原子是物质的最小单位,不可再分割一样。有关进程同步与互斥等内容在后面的章节中将详细讲述。
3) 进程间通信
进程间通信主要发生在相互协作的进程之间。既然需要协作,那么协作的进程之间,就存在着信息或数据的交换。由操作系统提供的进程间通信机制是协作的进程之间相互交换数据和消息的手段。一个比较典型的例子是通过网络的在线流式媒体播放。流式媒体源获取线程(线程是现代操作系统中处理器时间分配的基本单位,它代表一个指令的执行流及执行的上下文环境,一个进程可以包含多个线程,这个概念将在后面的章节中详细描述),负责将媒体数据从远端的服务站点下载到本地的数据缓存中;流媒体的播放线程负责将缓存中的数据进行流媒体数据分离(视频流和音频流)和解码,还原成实际的图像帧和声音数据;然后渲染线程将把前面的数据送往显示设备和声音设备。整个播放过程中,为了保证播放的流畅,这三个线程的执行是有一定关系的:原始数据获取的速度要比解码的速度快,解码又要和渲染输出的速度匹配。这种执行速度的协调以及数据在不同线程之间的传递就需要进程间通信和进程同步机制来共同保证。
4) 调度
调度又称为处理器调度,通常包括进程调度、线程调度和作业调度等。进程(线程)调度的任务就是从进程(线程)的就绪队列中按照一定的算法挑选出一个,把处理器资源分配给它,并准备好特定的执行上下文让它执行起来。作业调度的基本任务则是从作业后备队列中按照一定的算法挑出若干个作业,并依照作业说明书为它们分配一定的资源,把它们装入内存并为每个作业建立相应的进程。
2.存储管理
存储管理的任务是管理计算机内存的资源。在当代计算机系统中,计算机内存空间越来越大,2GB的内存空间已是很普通的容量。虽然内存空间可以扩充,但是内存空间再大也跟不上运行程序对内存空间的巨大需求。而且内存空间还受到CPU寻址能力的限制,内存的容量不能无限扩充。
概括地说,存储管理有三个方面的任务。首先,当多个程序共享有限的内存资源时,要考虑如何为多个程序分配有限的内存空间;其次,存放在内存中的多个程序和数据应该彼此隔离、互不侵扰;第三,解决内存扩充的问题,即将内存和外存结合起来管理,为用户提供一个容量比实际
内存大得多的虚拟存储器。下面分别就这三项存储管理功能作进一步的叙述。
1) 内存的分配与回收
操作系统要为每个进程分配内存空间,在分配的过程中,还要尽可能提高内存资源的使用效能。对于已经退出运行的进程所占据的内存空间,操作系统还要把它们加以回收,重新使用。人们在使用计算机时经常会发现,原本很大的内存在使用一段时间以后,似乎丢失了一部分空间,仔细检查会看到在空间使用图中有一大堆空间碎片,这种现象是由内存的分配与回收算法中的缺陷造成的。可见内存的分配与回收对计算机系统的有效运行的影响是很大的。
2) 存储保护
由于内存是供多个程序共享的,从理论上讲,每个程序都应该在分配给自己的内存区中运行。但是,从实际上看,必须考虑某个程序可能发生越界的情况。这是因为,首先,程序自身可能存在一些错误或隐患,造成程序的突然越界运行,不仅自身发生问题,而且影响或破坏了其他用户程序的运行。如果发生故障的程序越界到操作系统运行的内存空间,那么受到危害将更加严重,整个计算机系统有可能崩溃。其次,如果某个程序具有恶意,比如是病毒程序,或者是外界的入侵程序,那么就更有必要防止它们危害其他用户和整个计算机系统了。
在现代的计算机系统中,通常提供由硬件实现的存储保护机制,操作系统则利用这一机制实现进程的地址保护。
3) 内存扩充
我们已经知道,物理内存的大小总是有限的,各种程序对运行空间的需求经常超过实际内存的大小。内存扩充功能就是借助于虚拟存储技术在逻辑上增加进程运行空间的大小,这个大小比实际的物理内存要大得多。例如,在x86系统中目前常见的台式个人计算机系统中,物理内存的大小不超过1GB字节,而一个进程的地址空间可有4GB字节大小,各个进程空间总和则可以达到64TB字节,远远大于1GB字节的物理内存。
在虚拟存储技术中,操作系统通常将空间划分为一个个4KB字节大小的页面,并且以页面为单位进行存储空间的调度。进程所需的总页面数所对应的空间可以超出实际物理空间。但是操作系统只把正在使用的页面保持在内存中,或把即将使用的页面调入到内存中,而将不用的页面调换到外存上,用户感受不到实际内存对使用空间的限制,仿佛有一虚拟的大容量内存存在。当然,系统要实现这一机制,必须提供请求页面调人的功能和页面置换的功能。
3.文件管理
在计算机系统中的信息资源(如程序和数据)是以文件的形式存放在外存储器(如磁盘、磁带)上的,需要时再把它们装入内存。操作系统一般都提供很强的文件系统。文件管理的任务是有效地支持文件的存储、检索和修改等操作,解决文件的共享、保密和保护问题,以使用户方便、安全地访问文件。
1)文件存储空间的管理
任何文件存放在外存储器上,都需要以某种形式占据外存储器的空间。文件系统的一个很重要的功能就是为每个文件分配一定的外存空间,并且尽可能提高外存空间的利用率和文件访问的效能。文件系统设置专门的数据结构记录文件存储空间的使用情况。为了提高空间利用率,存储空间的分配通常采用离散分配方式,以512字节或者几千字节的块为基本单位进行分配。
2)目录管理
目录管理的主要任务就是给出组织文件的方法,它为每个文件建立目录项,并对众多的目录项加以有效的组织,以便为用户提供方便的按名存取。
3)文件系统的安全性
安全性包括文件的读写权限管理以及存取控制,用以防止未经核准的用户存取文件,防止越权访问文件,防止使用不正确的方式访问文件。
4.设备管理
在现代计算机系统中,通常存在着大量的外部设备,从键盘、鼠标、显示器到彩色打印机、数字音响设备和DVD等。这些外部设备的种类繁多,功能差异很大。如果要求每个用户亲自对连接到计算机系统中的各种不同的外部设备进行控制操作,实际是行不通的。
操作系统应该向用户提供设备管理。这里的设备管理是指计算机系统中除了CPU和内存以外的所有输入、输出设备的管理。由操作系统的设备管理功能负责外部设备的分配、启动和故障处理,用户不必详细了解设备及接口的技术细节,就可以方便地通过操作系统提供的设备管理手段,对设备进行操作。
在操作系统中,为了提高设备的使用效率和整个系统的运行速度,需要采用一系列的技术,包括中断技术、通道技术、虚拟设备技术和缓冲技术等,尽可能发挥设备和主机的并行工作能力。此外,设备管理应为用户提供一个良好的界面,使用户不必涉及具体设备的物理特性即可方便灵活地使用这些设备。
除此之外,操作系统还要具备中断处理、错误处理等功能。操作系统的各功能之间并非是完全独立的,它们之间存在着相互依赖的关系。
5.用户接口
除了上述四项功能之外,操作系统还应该向用户提供使用系统本身的手段,这就是用户与计算机系统之间的接口。
从用户的观点来看,操作系统是用户与计算机系统之间的接口。因此,接口管理的任务是为用户提供一个使用系统的良好环境,使用户能有效地组织自己的工作流程,并使整个系统能高效地运行。
1.2操作系统的发展
操作系统如同任何其他事物一样,也有它的诞生、成长和发展的过程。操作系统的许多基本概念,都是在操作系统的发展过程中出现并逐步得到发展和成熟的。了解操作系统发展的历史,有助于更深刻地认识操作系统基本概念的内在含义。下面来看一看操作系统的发展过程。
1.2.1手工操作
由于第二次世界大战对武器装备设计的需要,美国、英国和德国等国家陆续开始使用真空管建造数字电子计算机。在这个阶段,通过在一些插板上的硬连线来控制计算机的基本功能,程序设计全部采用机器语言,没有程序设计语言(甚至没有汇编语言),更谈不上操作系统。这时实
际上所有的题目都是数值计算问题。到了20世纪50年代早期,出现了穿孔卡片,可以将程序写在卡片上。
在一个程序员上机期间,整台计算机连同附属设备全被其占用。程序员兼职操作员,效率低下。其特点是手工操作、独占方式。后来人们开发了汇编语言及相应的汇编程序,以及其他一些控制外设的程序等。
1.2.2监控程序(早期批处理)
20世纪50年代晶体管的发明极大地改变了计算机应用的状况,厂商可以成批地生产计算机并销售给用户,用户可以指望计算机长时间运行,完成一些有用的工作。此时,出现了FOR-TRAN,ALGOL以及COBOL等高级语言。要运行一个作业(JOB,即一个或一组程序),程序员首先将程序写在纸上(用高级语言或汇编语言),然后穿孔成卡片。再将卡片盒带到输入室,交给操作员(如图1-3所示)。计算机运行完当前任务后,其计算结果从打印机上知出,操作贝到打印机上取下运算结果并送到输出室,程序员稍后就可取到结果。然后,操作员从已经送到输人室的卡片盒中读入另一个任务。如果需要FORTRAN编译器,操作员还要从文件柜把它取来读入计算机。
由于处理器速度提高,导致手工操作设备输入/输出信息与计算机计算速度不匹配。因此,人们设计了监督程序(或管理程序),来实现作业的自动转换处理。操作员将作业“成批”地输入到计算机中,由监督程序识别一个作业,进行处理后再取下一个作业。这种自动定序的处理方式称为“批处理(BatchProcessing)”方式。而且,由于是串行执行作业,因此称为单道批处理。
1.2.3多道批处理
进入第三代计算机以后,计算机硬件有了很大发展,通道使得输入/输出操作与CPU操作并行处理成为可能。与此同时软件系统也随之相应变化,实现了在硬件提供并行处理之上的多道
所谓多道是指它允许多个程时存在于内存之中,由CPU以切换方式为之服务,使得多个程序可以同时执行,如图1-4所示。计算机资源不再是“串行”地被一个个用户独占,而可以同时为几个用户共享,从而极大地提高了系统在单位时间内处理作业的能力。这时管理程序已
迅速地发展成为一个重要的软件分支——操作系统。
处理器时间片
图1-4多道程序处理
1.2.4分时系统
批处理系统不适合交互式的作业,对交互式工作方式的需求导致了分时系统(TimeSharingSystem)的出现。所谓分时系统是指多个用户通过终端设备与计算机交互作用来运行自己的作业,并且共享一个计算机系统而互不干扰,就好像自己有一台计算机。由于调试程序的用户常常只发出简短的命令(如编译一个5页的源文件),而很少有较长的费时命令(如上百万条记录的文件排序),所以计算机能够为许多用户提供交互式快速的服务,同时在CPU空闲时还能运行大的后台作业。
1.2.5UNIX通用操作系统
20世纪60年代末,贝尔实验室的KenThompson和DennisM.Ritchie设计了UNIX操作系统。它是现代操作系统的代表,显示出了强大的生命力。
UNIX是用C语言编写的,因此它是可移植的。UNIX是世界上唯一能在笔记本计算机、个人计算机(PC)、工作站直至巨型机上运行的操作系统。UNIX系统源代码非常有效,系统容易适应特殊的需求。UNIX是一个良好的、通用的、多用户、多任务、分时操作系统。UNIX有树形文件系统和一定的安全机制;有简洁的字符流文件和文件保护机制;UNIX有功能强大的shell,它既是命令解释器,又是编程用高级语言,还可用于扩充系统的功能。
UNIX不但在理论界有着广泛而深入的影响,而且因为UNIX出色的设计思想与实现技术,在产业界同样掀起了一场革命,许多重要的软件公司相继推出了自己的UNIX版本,这进一步推动了操作系统的发展。
1.2.6个人计算机操作系统
20世纪70年代末期,出现了面向个人计算机的操作系统,例如微软公司的MSDOS操作系统。MSDOS属于单用户单任务操作系统。
1984年,出现了具有交互式图形功能的苹果操作系统。1992年微软公司推出了有交互式图形功能的操作系统Windows3.1。Windows95在1995年8月正式登台亮相,从此,Windows成为个人计算机平台的主流操作系统。
1991年在Internet上Linus公司公布了Linux操作系统,于是,Linux从最开始的一个人的产品逐渐演变成了一个成功的操作系统。Linux遵从国际UNIX标准POSIX,继承了UNIX的全部优点,而且还开放全部源码,并能在网上自由下载。Lirmx极其健壮,世界上很多Limix系统可以连续不停机运行一年以上而不曾崩溃过。Linux是UNIX操作系统家族中具有自由版权的一个较突出的代表。
1.2.7Android操作系统
Android是一款主要面向移动设备,基于Umix内核的开源移动操作系统,包括了Linux内核、中间件和关键移动应用的一整套软件。
Android系统起源于AndyRubin等人2003年在美国加利福尼亚州创立的Android科技公司(AndroidInc.)。最初,Android系统是为智能相机而专门开发的一款高级操作系统,后来由于智能手机市场迅速发展,它被改造成面向手机的操作系统。Google公司在2005年收购了Android科技公司。随后,在2007年11月Google公司联合了包括硬件制造商、软件开发商和电信运营商在内的多家科技企业成立开放手持设备联盟(OHA)来共同发展Android操作系统,并且发布了基于Linux2.6内核的Android1.0beta版(2007年11月5日)。
第一款搭载Android操作系统的智能手机HTCDream于2008年10月发售。自从2008年起,Android操作系统快速发展,先后经历了多次重大更新,其中主要的版本有:纸杯蛋糕(Cupcake)、甜甜圈(Donut)、闪电泡芙(ficlair)、冻酸奶(Froyo)、姜饼(Gingerbread)、蜂巢(Honeycomb),冰激凌三明治(IceCreamSandwich)以及果冻豆(JellyBean)。在2010年年底,仅正式推出两年的Android操作系统在市场占有率上已经超越Symbian,成为全球第一大智能手机操作系统。:2012年6月,Google公司在“:2012GoogleI/O大会”上表示全球市场上有4亿部Android设备被激活使用,并且每天全新启用的Android设备超过100万台。目前,Android系统为全球数以亿计的用户提供了超过80万个移动应用。
Android操作系统由于其幵放性和可移植性,目前被应用于多种电子产品上,例如:智能手机、平板电脑、智能电视、智能相机、智能手表、导航仪等。
1.3操作系统分类
在叙述操作系统的发展历史的章节中,我们沿着时间的前后顺序,曾介绍了不少类型的操作系统。本节从另外一种角度,根据操作系统在用户界面的使用环境和功能特征的不同,对操作系统进行分类。分类的目的是为了更好地理解和掌握操作系统的本质和特征。
按照用户界面的使用环境和功能特征的不同,一般可以把操作系统分为三种基本类型,即批处理系统、分时系统和实时系统。随着计算机体系结构的发展,又出现了许多类型的操作系统,它们是个人操作系统、网络操作系统、分布式操作系统和嵌入式操作系统。本节将对这些不同类
型的操作系统进行简要的介绍和分析。
1.3.1批处理操作系统
从操作系统的发展历史中可以知道,批处理操作系统是一种早期的操作系统。在本小节中,首先概要地叙述批处理系统的基本工作方式,然后分析它的特点、种类、设计思想,介绍作业控制说明书、一般指令、特权指令和SPOOLing技术,最后分析批处理系统对操作系统发展的贡献。
1.基本工作方式
批处理操作系统的基本工作方式是:用户将作业交给系统操作员,系统操作员在收到作业后,并不立即将作业输入计算机,而是在收到一定数量的用户作业之后,组成一批作业,再把这批作业输入到计算机中。这批作业可在系统中形成一个连续的、自动转接的作业流。系统操作员然后启动操作系统,系统自动、依次地执行每个作业。最后由操作员将执行完毕的作业结果交给用户。
2.特点与分类
批处理操作系统的特点是成批处理。在批处理系统中,用户自己不能干预自己作业的运行。显然,在用户提交的作业投入运行之后,如果发现错误则无法及时改正,需要重新提交一份经过改正的作业,再次排队运行。这种处理方式延长了软件开发时间,所以批处理更适用于成熟的程序。
批处理操作系统追求的目标是系统资源利用率高,作业吞吐率高。这里所谓作业吞吐率是指单位时间内计算机系统处理作业的个数。批处理操作系统的优点是作业流程自动化较高,资源利用率较高,作业吞吐量大,从而提高了整个系统效率。其缺点是用户不能直接与计算机交互,不适合调试程序。
依据系统的复杂程度和出现时间的先后,可以把批处理操作系统分类为简单批处理系统和多道批处理系统。
3.设计思想
简单批处理系统是在操作系统发展的早期出现的,因此它有时又被称为早期批处理系统。在操作系统发展的早期,简单批处理系统被称为监控程序。其设计思想是:在监控程序启动之前,操作员有选择地把若干作业合并成一批作业,将这批作业安装在输入设备上。然后启动监控程序,监控程序将自动控制这批作业的执行。系统的运行过程是:先把第一个作业调入内存,运行之;等这一个作业运行结束之后,再把下一个作业调入内存并运行之;如此往复,直到这一批所有的作业都处理完毕。全部作业运行结束之后,操作员把运行的结果一起交给用户。可以看到,在这种系统工作方式下,作业的运行以及作业之间的衔接都由监控程序自动控制,从而有效地提高了作业运行的效率。
4.作业控制说明书
下面来更具体地分析批处理系统的工作原理。在简单批处理系统中,作业的运行步骤是由作业控制说明书来传递给监控程序的。作业控制说明书是由作业控制语言编写的一段程序,它通常存放在被处理作业的前面。在运行过程中,监控程序读入并解释作业前面的这段作业控制说明书中的语句,以控制各个作业步的执行。
这里举一个作业说明书的例子。某用户的作业包括A、B两个程序段,A由汇编语言编写,B由FORTRAN编写。用户要求把两段程序分别汇编、编译之后链接成一个程序并运行它。这个作业说明书可以采取如下编写形式:
STEP1 ASM A
STEP2 FTN B
STEP3 LINK A、B、C
STEP4 ASM A
STEP1 RUN C
在这段作业说明书中,.STEPn指定了第n步作业,ASM表示进行汇编,FTN表示进行FORTRAN编译,LINK代表进行链接装配,而RUN表示执行。A、B、C分别代表各个不同的程序段。
作业运行后,监控程序逐条解释每一行语句。
第一个作业步,指示监控程序调入汇编程序源程序A并得到相应的目标代码。汇编结束之后,控制权转回监控程序。
第二个作业步,指示监控程序把FORTRAN的编译程序调入内存,启动编译程序编译源程序B,从而得到程序B的目标代码。
第三个作业步,监控程序调入链接装配程序,将前面两个作业步得到的目标代码装配成可执行的程序C。
最后一步,监控程序启动执行程序C。
5.—般指令和特权指令
在简单批处理系统的发展阶段,为了防止由于用户的错误而导致整个系统发生不可预料的后果,有必要对中央处理器的运行划分出不同的状态。这就为中央处理器引入了运行模式(mode)的概念。
运行模式通常分为用户模式和特权模式。在操作系统领域中,人们往往把为用户服务的用户模式称作为目态,而把为系统专用的特权模式称为管态。相对应地,机器指令被划分为一般指令和特权指令。特权指令包括输入输出指令、停机指令等,只有监控程序才能执行特权指令。用户程序只能执行一般指令。一旦用户程序需要执行特权指令,处理器会通过特殊的机制将控制权移交给监控程序。
有了这样的区分之后,由于输入/输出指令属于特权指令,所以用户程序将不能直接使用输入/输出指令,即不能直接指挥外部设备,它们必须向操作系统请求这些功能,这个请求通过所谓系统调用或者叫作广义指令完成。监控程序实现这些系统调用的功能,这些系统调用一般都有对应的功能代码,供调用时使用。
6.系统调用的过程
下面考察系统调用的处理过程。
第一,当系统调用发生时,处理器通过一种特殊的机制,通常是中断或者异常处理,把控制流程转移到监控程序内的一些特定的位置。同时,处理器模式转变成特权模式。
第二,由监控程序执行被请求的功能代码。这个功能代码代表着对一段标准程序段的执行,用以完成所请求的功能。 .
第三,处理结束之后,监控程序恢复系统调用之前的现场;把运行模式从特权模式恢复成为用户方式;最后将控制权转移回原来的用户程序。
7.SPOOLing技术
简单批处理系统的监控程序犹如一个系统操作员,它负责批处理作业的输入输出,自动根据作业控制说明书以串行方式运行各个作业,并且提供一些最基本的系统功能。但是,它并不具有并发能力,即不能实现多个程序的同时运行。真正引入并发机制的是多道批处理系统。
为了提高硬件资源的利用率,人们在监控程序中间引入了缓冲技术和多道程序设计的概念,批处理系统发展为更加高级的多道批处理系统。在多道批处理系统中,关键技术就是多道程序运行、SPOOLing技术(有时也称为假脱机技术)等。
我们知道,在简单批处理系统中,作业是串行的,作业的执行速度往往会受到各种慢速设备的制约。系统有很多时候(尤其在操纵慢速外设时)只能忙等待,处理器利用率难以提高。为了解决这个问题,出现了脱机输入输出技术。为主机配备相对高速的磁带设备,主机的所有输入输出操作在磁带机上完成,另外配备若干卫星机,它们负责将用户作业从卡片传输到磁带上。执行时,由操作员负责把成卷记录了若干用户作业的磁带装到主机上去处理。这种技术通过使输人输出与计算在不同的设备上并行操作,从而有效地提高了处理器的利用率。不过这种脱机输入输出技术并没有从根本上解决输入输出缓慢的问题,于是出现了假脱机技术,借助硬件通道技术,实现了输入输出操作和处理器动作的自动并行处理。通道是指专门用来控制输入输出的硬件设备,可以看作是专门的I/O处理机。通道基本上是自主控制外设的,可以与CPU并行工作。
SPOOLing(SimultaneousPeripheralOperatingOn-Line,同时的外部设备联机操作)技术的基本思想是用磁盘设备作为主机的直接输入/输出设备,主机直接从磁盘上选取作业运行,作业的执行结果也存在磁盘上;相应地,通道则负责将用户作业从卡片机上动态写人磁盘,而这一操作与主机并行。类似的操作也用于打印输出用户作业运行结果。SPOOLing技术如图1-5所示。
这里需要指出,通道直接受主机控制,它们之间通过中断相互通信。假脱机技术为实现多道批处理系统中的多道程序设计思想提供了重要的基础。
多道程序设计的基本思想是在内存中同时保持多个作业,主机可以以交替的方式同时处理多个作业。一般来说任何一道作业的运行总是交替使用处理器和外设资源,而不同的作业一般也不会在相同时段内要求使用同一台外设或者处理器。如果通过合理的调度,让多个作业交替地同时使用不同的资源,就可以大大提高各种外部设备的利用率。这一简单思想通过多道批处理系统得以具体实现。
1.3.2分时系统
从操作系统的发展历史上看,分时操作系统出现在批处理操作系统之后,它是为了弥补批处理方式不能向用户提供交互式快速服务的缺点而发展起来的。
1.基本工作方式
在分时系统中,一台计算机主机连接了若干个终端,每个终端可由一个用户使用。用户通过终端交互式地向系统提出命令请求,系统接受用户的命令之后,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据系统送回的处理结果发出下一道交互命令。
2.设计思想
分时操作系统将CPU的时间划分成若干个小片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。由于每个时间片极短,而计算机处理速度远比人的反应速度快得多,所以尽管所有的用户在轮流使用一个处理器,但这些时间片段轮回的速度远远比用户敲击键盘的速度快。通常处理器总是在一个极短的时间片内先于人的反应而处理完毕了用户发出的交互请求,并在终端屏幕上发出了相应的回应,所以每个用户并不感到有别的用户存在而影响了他对计算机的使用效率,用户似乎感觉到系统是被他独占的。
3.特点
总体上看,分时操作系统具有多路性、交互性、独占性和及时性的特点。
•多路性:指有多个用户在同时使用一台计算机。从宏观上看是多个人同时使用一个处理器,从微观上看是多个人在不同时刻轮流使用一个处理器。
•交互性:指用户根据系统响应的结果提出下一个请求。用户直接干预操作每一步的进行。
•独占性:指每个用户感觉不到计算机为其他人服务,就好像整个系统为他个人所独占
一样。
•及时性:指系统能够对用户提出的请求及时给予响应。
分时操作系统追求的目标是及时响应用户输入的交互命令。用来衡量系统及时响应的指标是响应时间,即系统对一个输入的反应时间。在一个交互系统中,通常把用户从终端发出命令到系统给予回答所经历的时间定义为响应时间。显然,响应时间越短越好。
一般通用操作系统结合了分时系统与批处理系统两种系统的特点。典型的通用操作系统是UNIX操作系统。在通用操作系统中,对于分时与批处理的处理原则是:分时优先,批处理在后。
在通用操作系统中,一般把系统的分时和批处理运行状态称为前台和后台。把处理终端用户的,交互式的,比较小的,但需要及时处理的作业,即分时作业称为前台作业;而把那些需要运行时间较长,要调用其他外部设备的,比较大型,但无须终端用户干预的,且不需要立即处理的作业,即可以批量处理的作业,称为后台作业。换句话说,在系统的“前台”响应需频繁交互的作业,如大量终端的处理要求;而“后台”则处理对时间性要求不强的作业。
1.3.3实时操作系统
实时操作系统(RealTimeOperatingSystem,RTOS)是指使计算机能在规定的时间内及时响应外部事件的请求,同时完成对该事件的处理,并能够控制所有实时设备和实时任务协调一致地工作的操作系统。实时操作系统主要目标是:在严格时间范围内,对外部请求作出反应,系统具有高度可靠性。
实时操作系统主要有两类:第一类是硬实时系统。硬实时系统对关键外部事件的响应和处理时间有着极严格的要求,系统必须满足这种严格的时间要求,否则会产生严重的不良后果。火箭和导弹控制、机器人控制、核反应堆控制等是硬实时系统应用的典型领域。飞行控制系统就是硬实时的,它对飞行数据和外部数据采集与处理时机的把握要非常严格,否则就有可能造成飞机碰撞这样的灾难后果。这种时间精确度的要求通常会在微秒以下。第二类是软实时系统。软实时系统对事件的响应和处理时间有一定的时间范围要求,不能满足相关的要求会影响系统的服务质量,但是通常不会引发灾难性的后果。如视频(信息)处理、电信(自动交换机)、银行、飞机订票等领域的信息处理。在一个网络视频服务中心中,如果不能将视频信息连续定期地(如每一秒钟每个用户25帧图像)传送给多个用户,用户将会感觉到影像的停滞、跳动或变形。这种后果,虽然通常不会引发致命或灾难性的后果,但是也影响了系统服务质量的提高。所以良好的定时特性也是软实时系统的要求。
实时系统为了能够实现硬实时或软实时的要求,除了具有多道程序系统的基本能力外,还需要具有以下几方面的能力。
1.实时时钟管理
实时系统的主要设计目标是对实时任务能够进行实时处理。实时任务根据时间要求可以分为两类:第一类是定时任务,它依据用户的定时启动并按照严格的时间间隔重复运行;第二类是延时任务,它非周期地运行,允许被延后执行,但是往往有一个严格的时间界限。依据任务功能的不同,还可以分为主动式任务和从动式任务,前者依据时间间隔主动运行,多用于实时监控;后者的运行依赖于外部事件的发生,当外部事件出现时(例如某个中断),这种实时任务应尽可能快地进行处理,并且尽量保证不丢失事件。绝大多数实时任务均与时间相关,良好的实时时钟管理能力就成为实时系统的一个关键能力。
2.过载防护
实时系统中的实时任务往往与环境的依赖关系很大。实时任务的启动时间和数量具有很大的随机性,突发的大量实时任务极有可能超出系统的处理能力,从而发生过载。实时系统在出现过载现象时,要有能力在大量突发的实时任务中,迅速分析判断并找出最重要的实时任务,然后通过抛弃或者延后次要任务以保证最重要任务成功的执行。
3.高可靠性
高可靠性是实时系统的设计目标之一。由于实时系统往往用在一些关键应用上,如航空控制、工业机器人等领域。实时操作系统的任何故障,都有可能对整个应用系统带来极大的危害。所以实时操作系统需要有很强的健壮性和坚固性。当然,高可靠性的要求不仅仅是对软件系统的要求,也是对硬件系统的要求。
1.3.4嵌入式操作系统
在各种电器、电子和智能机械上,嵌入安装着各种微处理器或微控制芯片。嵌入式操作系统(EmbeddedOperatingSystem)就是运行在嵌入式芯片环境中,对整个芯片以及它所操作、控制的各种部件装置等资源进行统一协调、调度、指挥和控制的系统软件。
嵌入式操作系统具有高可靠性、实时性、占有资源少、智能化能源管理、易于连接、低成本等优点。嵌入式操作系统的功能可针对需求进行裁剪、调整和生成,以便满足最终产品的设计要求。
嵌入式操作系统通常配有对应的嵌入式操作系统开发环境。在幵发环境中提供了源码级可配置的系统模块设计、多种的同步原语、可选择的调度算法、可选择内存分配策略、定时器与计数器、多方式中断处理支持、多种异常处理选择、多种通信方式支持、标准C语言库、数学运算库和开放式应用程序接口。用户可以使用嵌入式操作系统开发环境,设计开发出符合各种应用要求的定制嵌入式操作系统。
嵌入式操作系统是嵌入式系统(EmbeddedSystem)的控制中心,而嵌入式系统则是嵌入式操作系统、相应设备环境与应用环境的结合,是一个很宽的概念。从字面理解好像“嵌入”就应该很小,实际上并不是这样,小到手机的通信控制,大到一枚导弹,都可以视为嵌入式系统。或许将它理解为其他更大系统的构成子系统更合理一些。
嵌入式操作系统在工业监控、智能化生活空间(信息家电、智能大厦等)、通信系统、导航系统等领域中的应用非常广泛,也极为重要。举个简单的例子,一辆现代化的轿车里面可能有数十个微处理器,它们监控汽车发动机和各个部件的运行,彼此通信,组成一个嵌人式系统网络。这些嵌入式微处理器要接受驾驶员通过驾驶操纵装置发来的各种控制汽车运行的命令,控制汽车发动机转速的高低、喷射量的大小、转向的角度和快慢以及刹车减速的力度等。这些嵌入式微处理器还要接受汽车上大量传感器发来的各种数据,如进入发动机空气流量的大小,燃油的燃烧状态(废气中C0的含量、C02的含量以及氧的含量)等。所有的数据采集、实时计算、智能控制、网络通信、数据管理和人机交互等诸多方面的功能,以及计算资源的分配等都需要嵌入式操作系统进行控制、协调。系统的任何故障,轻则会引起汽车发动机工作不正常、浪费燃油;重则会引起汽车驾驶操纵失控、引发事故。
1.3.5个人计算机操作系统
个人计算机操作系统(Personal Computer Operating System)是一种单用户多任务的操作系统。个人计算机操作系统主要供个人使用,功能强,价格便宜,在几乎任何地方都可安装使用它能满足一般人操作、学习、游戏等方面的需求。个人计算机操作系统的主要特点是:计算机在某一时间内为单个用户服务;采用图形界面人机交互的工作方式,界面友好;使用方便,用户无需具备专门知识,也能熟练地操纵系统。
1.3.6网络操作系统
为计算机网络配置的操作系统称为网络操作系统。网络操作系统(Network Operating System)是基于计算机网络的,在各种计算机操作系统之上按网络体系结构协议标准设计开发的软件,它包括网络管理、通信、安全、资源共享和各种网络应用。
网络操作系统把计算机网络中的各个计算机有机地连接起来,其目标是相互通信及资源共享。通过网络操作系统,用户可以使用网络中其他计算机的资源,实现相互计算机间的信息交换,从而扩大了计算机的应用范围。
计算机网络有不同的模式。在集中式模式中,运算处理在主计算机里发生,终端仅作为输入/输出设备使用,通过连接两台或更多主机的方式构成计算机网络。在分布式模式中,每台计算机都有运算处理能力,多台计算机通过网络交换数据并共享资源和服务。网络环境中的计算机不仅能共享数据、资源及服务,还能够共享运算处理能力。
1.3.7分布式操作系统
将大量的计算机通过网络联结在一起,可以获得极高的运算能力及广泛的数据共享。这样一种系统称为分布式系统(DistributedSystem)。为分布式系统配置的操作系统称为分布式操作系统(DistributedOperatingSystem)0
分布式操作系统是网络操作系统的更高级形式,分布式操作系统除了保持了网络操作系统的各种功能之外,还具备如下的特征:
(1) 分布式操作系统是一个统一的操作系统,在系统中的所有主机使用的是同一个操作系统。
(2) 实现资源的深度共享。在网络操作系统中,由于各个主机使用不同的操作系统,不能随意地将一个计算任务从一台主机迁移到另一台主机执行。而在分布式系统中,通过统一的操作系统的调度,在某台主机上的一个计算任务可以迁移到另一台主机上执行,真正实现了处理机资源的共享。
(3) 透明性。整个分布式系统在用户眼里就像是一台具有强大功能的计算机系统。用户并不知道该分布式系统运行在多少台计算机上,各个主机地理位置上的差异对用户来讲是透明的,分布式操作系统屏蔽了这种差异。相应地,在网络操作系统中,用户能够清晰地感觉到本地主机和非本地主机之间的区别。
(4) 自治性。处于分布式系统中的各个主机都处于平等的地位,各个主机之间没有主从关系。一个主机的失效一般不会影响整个分布式系统。
分布式系统把系统中的所有计算机构成一个完整的、功能更加强大的计算机系统。分布式操作系统可以使系统中的计算机相互协作,共同完成一个大型计算任务,即把一个计算任务分解成若干可以并行执行的子任务,让每个子任务分别在不同的计算机上执行^可见分布式操作系统可以充分利用各种资源,从而使计算机系统处理能力增强,速度更快,可靠性更高。
分布式系统的优点在于它的分布式,分布式系统可以以较低的成本获得较高的运算性能。分布式系统的另一个优势是它的可靠性。由于有多个计算机系统,当一个计算机系统发生故障时,整个分布式系统仍旧能够工作。对于高可靠的环境,如核电站等,分布式系统是有其用武之地的。
集群(Cluster)是分布式系统的一种。一个集群通常由一群处理器密集构成,集群操作系统专门服务于这样的集群。在集群操作系统的指挥下,可以用低成本的微型计算机和以太网设备等产品,构造出性能相当于超级计算机运算性能的集群。
网络操作系统与分布式操作系统在概念上的主要不同之处在于网络操作系统可以构架于不同的操作系统之上,也就是说它可以在不同的本机操作系统上通过网络协议实现网络资源的统一配置。在网络操作系统中,并不要求对网络资源透明地访问,即需要显式地指明资源位置与类型,对本地资源和异地资源访问区别对待。分布式操作系统强调单一操作系统对整个分布式系统的管理、调度。在这种操作系统中,网络的概念在应用层被淡化了,所有资源,无论是本地的还是异地的,都用同一方式管理与访问,用户不必关心资源所在的真正物理位置,或者是如何存储的。
1.3.8智能卡操作系统
在日常生活中的各类智能卡中,都隐藏着一个微型操作系统,称为智能卡操作系统。这恐怕是目前获得实际商业应用的最小的操作系统了。智能卡操作系统围绕着智能卡的操作要求,提供了一些必不可少的管理功能。
智能卡名称来源于英文名词“SmartCard”,又称集成电路卡(IntegratedCircuitCard,IC)。它是将一个集成电路芯片镶嵌于塑料基片中,封装成卡的形式,其外形与覆盖磁条的磁卡相似。严格地讲,只有根据卡中的集成电路包括中央处理器CPU的1C卡才是真正的智能卡。在智能卡中的集成电路包括有中央处理器、存储部件以及对外联络的通信接口,如图1-6。智能卡实际上是一台卡上的单片微机系统。
图1-6 一种智能卡的结构
智能卡操作系统,又称片内操作系统(ChipOperatingSystem,COS),其功能不可避免地受到了智能卡内微处理器芯片的性能及内存容量的影响。通常智能卡的存储容量为若干千字节KB。因此,智能卡操作系统在很大程度上不同于通常所见到的操作系统。
常见的智能卡操作系统一般都是根据某种智能卡的特点及其应用范围而设计开发的。智能卡操作系统的基本指令集由ISO/IEC7816-4国际标准给出,所提供的指令类型大致可分为:数据管理类、通信控制类和安全控制类。
一般而言,智能卡操作系统具有四个基本功能:资源管理、通信管理、安全管理和应用管理。作为操作系统,管理卡的硬件资源和数据资源是其基本任务,智能卡上的硬件资源包括CPU,存储部件以及通信接口。通信管理主要功能是:执行智能卡的信息传送协议,接收读写器发出的指
令,并对指令传递是否正确进行判断;自动产生对指令的应答并发回读写器,也能为送回读写数据及应答信息自动添加传输协议所规定的附加信息。智能卡操作系统最重要的功能之一就是安全管理,包括对用户与卡的鉴别,核实功能以及对传输数据的加密与解密操作等。应用管理功能包括对读写器发来的命令进行判断、译码和处理。智能卡的各种应用以专有文件形式存在卡上,各专有文件则由智能卡的指令系统中的指令排列所组成。
智能卡进行具体处理时,读写器与智能卡之间通过“命令-响应对”方式进行通信和控制,即读写器发出操作命令,智能卡接收命令,操作系统对命令加以解释,完成命令的解密与校验。然后操作系统调用相应程序来进行数据处理,产生应答信息,加密后送给读写器。随着计算机技术的快速发展,智能卡CPU的功能也越来越强,存储容量也不断增大。有的智能卡系统中还有一个Java解释器,可以从网络下载并运行JavaApplet,从而不断更新智能卡的功能。
1.4操作系统结构
所谓操作系统的结构,是指操作系统各部分程序的存在方式及相互关系。若操作系统的各部分程序以程序模块方式存在,相互之间通过调用建立起关系,那么这种操作系统具有模块接口结构。若各部分程序以进程的方式存在,相互之间通过通信建立起关系,那么这种操作系统具有进程结构。若操作系统能按照诸模块的调用顺序或主进程的信息发送顺序把模块进程分层,各层之间只能单向依赖,这样就分别产生了模块层次结构的操作系统或进程层次结构的操作系统。
在早期的操作系统设计中,由于计算机结构比较简单,系统规模也较小,逻辑关系较简单,设计者往往只注重功能设计和效率,而忽视了结构的设计。但随着计算机结构的复杂化,应用范围的不断扩大,使用要求的不断提高,人们不仅要求系统有较强的功能,而且要求系统有较强的可适应性和可靠性。比如,在容错的概念出现之后,人们希望设计一种在部分硬、软件失效的情况下仍能正常工作的系统,从事这种容错操作系统的设计,更加需要对操作系统的结构有深入的研究和认识。
常见的操作系统体系结构有整体式结构、层次式结构和微内核(客户机/服务器)结构等。下面对这些常见的操作系统体系结构作简要介绍。
1.4.1整体式结构
这是早期操作系统设计中所采用的方法,即首先确定操作系统的总体功能,然后将总功能分解为若干个子功能,实现每个子功能的程序称为模块。再按照功能将上述每个大模块分解为若干个较小的模块,如此下去,直至每个模块仅包含单一功能或紧密联系的小功能为止,即分解为最基本的模块为止。最后通过接口将所有模块连接起来形成一个整体。我们把这种操作系统的结构称之为模块组合结构。它的主要优点是,结构紧密,接口简单直接,系统效率较高。此时,操作系统是一个具有多种功能的系统程序,可。。。。。。。。。。。。。。
模块组合法(或称无序模块法、模块接口法等)中,系统中的模块不是根据程序和数据本身的特性而是根据它们完成的功能来划分的,数据基本上作为全程量使用。在系统内部,不同模块的程序之间可以不加控制地互相调用和转移,信息的传递方式也可以根据需要随意约定,因而可能造成模块间的循环调用。
模块组合法的缺点有以下三点:
(1) 模块间转接随便,各模块互相牵连,独立性差,系统结构不清晰。
(2) 数据基本上作为全程量处理,系统内所有模块的任一程序均可对其进行存取和修改,从而造成了各模块间有着更为隐蔽的关系。要更换一个模块或修改一个模块都比较困难,因为要弄清各模块间的接口,按当初设计时随意约定的格式来给信息,这是一件相当复杂的事。
(3) 由于模块组合结构常以大型表格为中心,为保证数据完整性,往往采用全局关中断办法,从而限制了系统的并发性。系统中实际存在的并发也未能抽象出明确的概念,缺乏规格的描述方法。所以,这种结构的可适应性比较差。
模块组合法的关键在于“接口”。因为把各基本模块之间的有机连接都推到“接口”上,所以无需太多的结构设计工作,很快就可进入编码阶段,而且模块之间转接的灵活性使得系统具有效率高的优点。但是,由于各基本模块之间可以任意相互调用,各模块之间相互依赖,甚至可能构成循环,形成一个复杂的网络。这种网络实际上是一种相当复杂的有向图,它使得难于对结构作出综合性的观察,也难于对系统作局部性修改,因而可靠性、易读性和适应性都很难得到保证。随着系统规模的不断增大,采用这种结构构造的系统的复杂性迅速增长,以致人们难以驾驭,这就促使人们去寻求新的结构概念和新的结构设计方法。
1.4.2层次结构
从对整体式结构缺点的分析可以看到,要克服整体式结构的缺点,就必须减少各模块之间毫无规则地互相调用、相互依赖的关系,特别是循环调用现象。层次结构正是从这点出发,力求使模块间调用的无序性变为有序性。
所谓层次结构就是把操作系统的所有功能模块,按功能流图的调用次序,分别将这些模块排列成若干层,各层之间的模块只能是单向依赖或单向调用(如只允许上层或外层模块调用下层或内层模块)关系。这样,不但操作系统的结构清晰,而且不构成循环。
在一个层次结构的操作系统中,如果各层之间是单向调用的,而且每一层中的同层模块之间不存在互相调用的关系,则称这种层次结构关系为全序的层次关系。
但是在实际的大型操作系统中,要构建一个全序的层次结构关系是十分困难的,往往无法完全避免循环现象,只能尽量减少系统中的循环现象。
层次结构法的优点是,它既具有模块接口法的优点,即把复杂的整体问题分解成若干个比较简单的相对独立的成分,即把整体问题局部化,使得一个复杂的操作系统分解成许多功能单一的模块:同时它又具有模块接口法不具有的优点,即各模块之间的组织结构和依赖关系清晰明了。这不但增加了系统的可读性和可适应性,而且还使我们对操作系统的每一步都建立在可靠的基础上。
因为层次结构是单向依赖的,上一层各模块所提供的功能(及资源)是建立在下一层的基础上的。或者说上一层功能是下一层的扩充和延续。最内层是硬件基础——裸机,裸机的外层是操作系统的最下面(或内层)的第一层。按照分层虚拟机的观点,每加上一层软件就构成了一个比原来机器功能更强的虚拟机,也就是说进行了一次功能扩充。而操作系统的第一层是在裸机基础上进行的第一次扩充后形成的虚拟机,以后每增加一层软件就是在原虚拟机上的又一次扩充,又成为一个新的虚拟机。因此只要下层的各模块设计是正确的,就为上层功能模块的设计提供了可靠基础,从而增加了系统的可靠性。
层次式结构的优点还在于很容易对操作系统增加或替换掉一层而不影响其他层次。不难理解,采用层次结构法设计的操作系统具有易于调试、易于修改、易于扩充、易于维护、易于保证正确性等优点。因而被广泛采用。
层次结构的操作系统的各功能模块应放在哪一层?系统一共应有多少层?这是一个很自然会提出的问题。但对这些问题通常并没有一成不变的规律可循,必须要依据总体功能设计和结构设计中的功能流图和数据流图进行分层,大致的分层原则如下:
(1) 为了增加操作系统的可适应性,并且方便于将操作系统移植到其他机器上,必须把与机器特点紧密相关的软件,如中断处理、输入输出管理等放在紧靠硬件的最底层。这样经过这一层软件扩充后的虚拟机,硬件的特性就被隐藏起来了,方便了操作系统的移植。为了便于修改移植,它把与硬件有关和与硬件无关的模块截然分开,而把与硬件有关的BIOS(管理输入输出设备)放在最内层。所以当硬件环境改变时只需要修改这一层模块就可以了。
(2) 对于一个计算机系统来说,往往具有多种操作方式(例如既可在前台处理分时作业,又可在后台以批处理方式运行作业,也可进行实时控制),为了便于操作系统从一种操作方式转变到另一种操作方式,通常把三种操作方式共同要使用的基本部分放在内层,而把随三种操作方式而改变的部分放在外层:如批作业调度程序和联机作业调度程序,键盘命令解释程序和作业控制语言解释程序等。这样,操作方式改变时仅需改变外层,内层部分保持不变。在操作系统的层次式结构研究和应用中,还演化出几种不同的层次式结构,如进程分层结构、层次管程结构、虚拟机结构等。限于篇幅,就不在这里介绍了。
1.4.3微内核(客户机/服务器)结构
当前计算机技术发展的突出特点是要求广泛的信息和资源的共享。1所以,分布式处理成为新的应用需求。
在这样的应用环境下,操作系统的结构也在发展和变化。采用客户机/服务器结构的操作系统就适宜于应用在网络环境下分布式处理的计算环境中。由于这种体系结构所具有的一些特征,它又被称为微内核结构。
釆用客户机/服务器结构模式的典型操作系统有卡内基•梅隆大学研制的Mach操作系统和WindowsNT的早期版本。它们的共同特点如下:
(1) 运行在核心态的内核:内核提供所有操作系统基本都具有的那些操作,如线程调度、虚拟存储、消息传递、设备驱动以及内核的原语操作集和中断处理等。这些部分通常采用层次结构并构成了基本操作系统。因为这时的内核只提供了一个很小的功能集合,所以通常又称为微内核。
(2) 运行在用户态的并以客户机/服务器方式运行的进程层:除内核部分外,操作系统所有的其他部分被分成若干个相对独立的进程,每一个进程实现一组服务,称为服务进程(用户应用程序对应的进程,虽然也以客户机/服务器方式活动于该层,但不作为操作系统的功能构成成分看待)。这些服务进程可以提供各种系统功能、文件系统服务以及网络服务等。服务进程的任务是检查是否有客户机提出要求服务的请求,并在满足客户机进程的请求后将结果返回。而客户机可以是一个应用程序,也可以是另一个服务进程。客户机进程与服务器进程之间的通信是釆用发送消息进行的,这是因为每个进程属于不同的虚拟地址空间,它们之间不能直接通信,必须通过内核进行,而内核则是被映射到每个进程的虚拟地址空间内的,它可以操纵所有进程。客户机进程发出消息,内核将消息传给服务进程。服务进程执行相应的操作,其结果又通过内核用发消息方式返回给客户机进程,这就是客户机/服务器的运行模式。
这种模式的优点在于,它将操作系统分成若干个小的并且自包含的分支(服务进程),每个分支运行在独立的用户进程中,相互之间通过规范一致的方式接收发送或消息而联系起来。操作系统在内核中建立起了最小的机制,而把策略留给用户空间中的服务进程,这带来了很大的灵活性,直接的好处是:
•可靠:由于每个分支是独立的自包含的(分支之间耦合最为松散),所以即使某个服务器失败或产生问题,也不会引起系统其他服务器和系统其他组成部分的损坏或崩溃。
•灵活:便于操作系统增加新的服务功能。因为它们是自包含的,且接口规范;同时修改一个服务器的代码不会影响系统其他部分,可维护性好。
•适宜于分布式处理的计算环境:因为不同的服务可以运行在不同的处理器或计算机上,从而使操作系统自然地具有分布式处理的能力。
当然这种结构也有它的缺陷,主要是效率较低。因为所有的用户进程只能通过微内核相互通信,微内核本身就成为系统的瓶颈,在一个通信很频繁的系统中,微内核往往不能提供很好的效率。例如高性能的图形用户界面系统中经常有大量的数据在不同的进程中来回拷贝,那么把图形引擎作为一个运行在用户态的服务进程对一个有着高性能图形需求的系统来说是合适的。

浙公网安备 33010602011771号