版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统原理及实验(第2版)目录\h第1章操作系统概述\h1.1什么是操作系统\h1.2操作系统的目标与功能\h1.2.1操作系统作为用户与计算机之间的接口\h1.2.2操作系统作为资源管理器\h1.2.3操作系统的扩展性\h1.3操作系统的发展历程\h1.3.1单道批处理系统\h1.3.2多道批处理系统\h1.3.3分时系统\h1.3.4实时系统\h1.3.5网络操作系统、分布式操作系统与并行操作系统\h1.3.6基本操作系统的特征\h1.4现代Linux系统演变过程\h习题一\h第2章进程描述和控制\h2.1进程概念\h2.1.1程序的顺序执行\h2.1.2资源与共享\h2.1.3程序的并发执行\h2.1.4进程概念的引入\h2.2进程描述\h2.2.1进程映像\h2.2.2进程控制块\h2.3进程状态及转换\h2.4进程控制\h2.4.1进程创建\h2.4.2进程终止\h2.4.3进程挂起\h2.5线程\h2.5.1线程的引入\h2.5.2线程状态\h2.5.3线程与进程之间的关系\h2.5.4线程实现方式\h2.6Linux进程、线程创建与管理\h2.6.1Linux进程结构\h2.6.2进程表\h2.6.3系统进程\h2.6.4创建新进程\h2.6.5替换一个进程映像\h2.6.6复制一个进程映像\h2.6.7Linux线程创建\h习题二\h第3章同步与互斥\h3.1基本概念\h3.1.1并发进程间的关系\h3.1.2竞争关系\h3.1.3协作关系\h3.1.4解决临界区互斥问题的准则\h3.2实现互斥的软件方法\h3.3实现互斥的硬件方法\h3.3.1中断禁用\h3.3.2测试并建立指令\h3.3.3交换指令\h3.4信号量\h3.4.1整型信号量\h3.4.2记录型信号量\h3.4.3用信号量实现互斥\h3.4.4用信号量实现同步\h3.4.5经典同步/互斥问题\h3.5管程\h3.5.1管程概念\h3.5.2管程应用\h3.6进程通信\h3.6.1信号通信机制\h3.6.2共享存储区通信机制\h3.6.3共享文件通信机制\h3.6.4消息传递通信机制\h3.7死锁与饥饿\h3.7.1死锁产生的原因\h3.7.2死锁产生的条件\h3.7.3死锁预防\h3.7.4死锁避免\h3.7.5死锁检测\h3.8Linux进程通信机制及其应用\h3.8.1信号\h3.8.2管道\h3.8.3SystemV\h3.8.4SystemV消息队列\h3.8.5SystemV信号量\h3.8.6SystemV共享内存\h3.9Linux线程互斥与同步\h3.9.1互斥量\h3.9.2条件变量\h3.9.3信号量\h习题三\h第4章存储器管理\h4.1存储器管理概述\h4.1.1地址重定位\h4.1.2内存的分配和回收\h4.1.3存储保护\h4.1.4存储共享\h4.2单一连续存储区管理\h4.3分区管理\h4.3.1固定分区\h4.3.2动态分区\h4.3.3可重定位动态分区管理\h4.3.4伙伴系统\h4.4简单分页技术\h4.4.1分页存储管理的基本概念\h4.4.2地址变换机构\h4.5简单分段技术\h4.5.1分段存储管理的基本概念\h4.5.2段的共享与保护\h4.6段页式存储管理\h习题四\h第5章虚拟存储器管理\h5.1基础知识\h5.1.1分级存储体系\h5.1.2虚拟存储器的引入\h5.2虚拟分页存储管理\h5.2.1基本思想\h5.2.2硬件支持\h5.2.3两级页表和多级页表\h5.2.4反置页表\h5.3页面置换算法\h5.3.1页面置换过程\h5.3.2最佳置换算法\h5.3.3先进先出页面置换算法\h5.3.4最近最久未使用算法\h5.3.5时钟置换算法\h5.3.6驻留集管理\h5.4虚拟分段存储管理\h习题五\h第6章处理器调度\h6.1单处理器调度\h6.1.1调度类型\h6.1.2选择调度算法的准则\h6.2调度算法\h6.2.1先来先服务算法\h6.2.2最短进程优先算法\h6.2.3时间片轮转算法\h6.2.4最高优先级算法\h6.2.5最高响应比优先算法\h6.2.6多级反馈队列算法\h6.2.7各种调度算法的比较\h6.3多处理器的任务调度\h6.3.1多处理器调度模型\h6.3.2多处理器的静态调度\h6.3.3多处理器的动态调度\h6.4实时调度\h6.4.1实时系统分类\h6.4.2实时任务调度算法的性能评价\h6.4.3实时任务调度算法\h6.5实时多处理器的调度\h6.5.1局部调度和全局调度\h6.5.2静态调度和动态调度\h习题六\h第7章设备管理\h7.1概述\h7.1.1I/O设备分类\h7.1.2设备管理功能\h7.2缓冲技术\h7.2.1单缓冲\h7.2.2双缓冲\h7.2.3循环缓冲\h7.3中断技术\h7.4SPOOLing技术\h7.4.1SPOOLing技术概述\h7.4.2SPOOLing系统工作原理\h7.5磁盘特性及调度算法\h7.5.1磁盘结构与特性\h7.5.2磁盘性能参数\h7.5.3磁盘调度策略\h7.6Linux设备管理\h7.6.1Linux中的设备管理概述\h7.6.2Linux设备驱动程序\h7.6.3Linux设备驱动的系统调用\h习题七\h第8章文件系统\h8.1文件系统概述\h8.1.1记录、文件与数据库概念\h8.1.2文件管理功能\h8.2文件组织和访问\h8.3文件目录\h8.3.1目录\h8.3.2目录组成\h8.3.3目录操作\h8.4文件共享\h8.5记录组块\h8.6辅存管理\h习题八\h实验一Linux及其使用环境、内核查看\h实验二SHELL编程\h实验三进程的创建和简单控制\h实验四进程互斥\h实验五进程通信——信号\h实验六进程通信——共享内存\h实验七进程通信——消息队列\h实验八进程通信——管道\h实验九POSIX线程机制一\h实验十POSIX线程机制二\h实验十一POSIX线程机制三\h实验十二内存管理和页面置换算法的模拟\h实验十三模拟进程调度方法\h实验十四文件与目录\h附录1Linux环境下的程序设计预备知识\h附录2Linux环境下的常用系统调用简介第1章操作系统概述本章摘要一个完整的计算机系统是由硬件和软件两大部分组成。操作系统作为所有软件中最基础、最核心的部分,是控制和管理计算机系统各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户和计算机硬件之间的接口。本章首先介绍操作系统的概念、目标与功能;其次,简述操作系统的发展历程;最后,对Linux操作系统的发展简况进行描述。1.1什么是操作系统一个完整的计算机系统是由硬件和软件两大部分组成,其中,硬件又称为“裸机”,是由中央处理器(运算器和控制器)、存储器、输入设备和输出设备等部件组成,它构成了系统本身和用户作业赖以活动的物质基础。软件包括应用软件、支撑软件和系统软件。应用软件是为解决各种实际问题而编制的计算机应用程序及其有关资料。应用软件往往都是针对用户的需要,利用计算机来解决某类应用需要或某个特定问题,如学生成绩管理软件、飞机订票系统、财务应用软件等;支撑软件是辅助计算机技术人员从事软件开发工作的软件,如各种开发工具、测试工具等。系统软件是为了计算机能正常、高效工作所配备的各种管理、监控和维护系统的程序及其有关资料。系统软件主要包括:(1)操作系统软件,这是软件的核心;(2)各种语言的解释程序和编译程序(如BASIC语言解释程序等);(3)各种服务性程序(如机器的调试、故障检查和诊断程序等);(4)各种数据库管理系统(ORACLE、MySQL、ACCESS等),具体层次关系如图1-1所示。从图1-1中可以看出,操作系统(OperatingSystems)是所有软件中最基础、最核心的部分,是控制和管理计算机系统各种硬件和软件资源,有效地组织多道程序运行的系统软件(或程序集合),是计算机用户和计算机硬件之间的中介程序,它控制、调度各种硬件资源以满足用户运行各种应用程序的需要,从而为用户执行程序提供更方便、更有效的环境。1.2操作系统的目标与功能操作系统作为控制应用程序执行的系统软件,作为分配系统硬件和软件资源的管理者,充当着应用程序和计算机硬件之间的媒介。简单地说,它需实现以下三个目标:图1-1计算机系统的层次关系(1)方便:操作系统要让计算机更易于被用户操作、使用;(2)有效:操作系统允许用户更有效地使用计算机系统资源;(3)扩展性:在构造操作系统时,应该允许在不妨碍服务的前提下有效地开发、测试和引进新的系统功能。1.2.1操作系统作为用户与计算机之间的接口从图1-1中可以看出,使用应用程序的用户,即终端用户,通常并不关心计算机系统的硬件细节。因此,终端用户把计算机系统看作是一组应用程序。这种应用程序可以用一种程序设计语言描述,并由应用程序设计人员开发。如果需要用一组完全负责控制计算机硬件的机器指令开发应用程序,则会面临非常复杂的任务。为简化这类任务,需要提供一些系统程序,其中一部分即上述称之为支撑软件或实用程序,它们实现了在创建程序、管理文件和控制I/O设备中经常使用的功能。程序员在开发应用程序时将使用这些软件;应用程序在运行时,将调用这些支撑程序以实现特定的功能。最重要的系统程序是操作系统,操作系统为程序员屏蔽了硬件细节,并为程序员使用系统提供方便的接口,使程序员在编程时更容易地访问和使用这些功能和服务。为了方便用户使用操作系统,操作系统为用户提供了多种接口:命令接口、程序接口和图形接口。这些接口通常是以命令或系统调用的形式呈现在用户面前,命令接口提供给用户在键盘终端上使用,程序接口则提供给用户在编程时使用。在较晚出现的操作系统中,则又向用户提供了图形接口。1.命令接口为了便于用户直接或间接地控制其作业,操作系统向用户提供了命令接口。用户可通过该接口向作业发出命令以控制作业的运行。该接口又可进一步分为联机用户接口和脱机用户接口。这里所谓的作业是指用户定义的、由计算机完成的工作单位,它通常包括一组计算机程序、文件和对操作系统的控制语句。(1)联机用户接口这是为联机用户提供的接口,它由一组键盘操作命令及命令解释程序所组成。当用户在终端或控制台上每键入一条命令,系统便立即转入命令解释程序,对该命令进行解释并执行。在完成指定功能后,控制又返回到终端或控制台上,等待用户键入下一条命令。这样,用户可通过先后键入不同的命令来实现对作业的控制,直至作业完成。(2)脱机用户接口该接口是为批处理作业的用户提供的,故也称为批处理用户接口。它由一组作业控制语言(JobControlLanguage,简称JCL)组成。批处理作业的用户不能直接与其作业交互作用,只能委托系统代替用户对作业进行控制和干预。这里的作业控制语言JCL便是提供给批处理作业用户的、为实现所需功能委托系统代为控制的一种语言。用户使用JCL把需要对作业进行的控制和干预,写在作业说明书上,然后将作业连同作业说明书一起提交给系统。当系统调度到该作业运行时,立刻调用命令解释程序,对作业说明书上的命令逐条地解释执行。如果作业在执行过程中出现异常现象,系统也将根据作业说明书上的指示进行干预。这样,作业一直在作业说明书的控制下运行,直至遇到作业结束语句时,系统才停止该作业的运行。2.程序接口程序接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径,它由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序,是操作系统提供给编程人员的唯一接口。编程人员利用系统调用,在源程序一级动态请求和释放系统资源,调用系统中已有的系统功能来完成那些与机器硬件部分相关的工作以及控制程序的执行速度等。因此,系统调用像一个黑盒子那样,对用户屏蔽了操作系统的具体动作而只提供有关的功能。它与一般用户程序、库函数和实用程序的区别是:系统调用程序运行在内核态模式,调用它们需要一个类似于硬件中断处理的中断处理机制来提供系统服务。早期的Unix和MS-DOS系统,它们的系统调用都是由汇编语言提供的,因而只有在用汇编语言书写的程序中,才能直接使用系统调用;而在高级程序设计语言以及C语言中,往往提供了与各系统调用一一对应的库函数,因而,应用程序便可通过调用对应的库函数来使用系统调用。但在后来所推出的操作系统中,如UnixSystemV、OS/22.X版本中,其系统调用是采用C语言编写的,并以函数形式提供,故在用C语言编制的程序中,可直接使用系统调用。3.图形接口用户虽然可以通过联机用户接口来取得操作系统服务,并控制自己的应用程序运行,但要求用户熟记各种命令的名字和格式,并严格按照规定的格式输入命令,这既不方便又花时间。于是,图形用户接口便应运而生。图形用户接口采用了图形化的操作界面,用非常容易识别的各种图标(icon)来将系统的各项功能、各种应用程序和文件直观、逼真地表示出来。用户可通过鼠标、菜单和对话框来完成对应用程序和文件的操作。此时用户已完全不必像使用命令接口那样去记住命令名及格式,从而把用户从繁琐且单调的操作中解放出来,也使计算机成为一种非常有效且生动有趣的工具。20世纪90年代后期推出的主流操作系统都提供了图形用户接口。例如,Microsoft公司的Windows操作系统、IBM公司的OS/2操作系统以及Apple公司的Macintosh操作系统。总之,为了方便用户有效地使用操作系统,操作系统通常在以下几个方面提供功能服务:(1)程序开发:操作系统提供各种各样的软件和服务,如编辑器和调试器,用于帮助程序员创建程序。通常,这些服务以实用程序的形式出现,严格来说并不属于操作系统核心的一部分;它们由操作系统提供,称作应用程序开发工具。(2)程序运行:运行程序需要执行很多任务,必须把指令和数据载入到主存储器(简称主存或内存),还必须初始化I/O设备,准备其他一些资源。操作系统为用户处理这些资源调度问题。(3)访问I/O设备:每个I/O设备的操作都需要特有的指令集或控制信号,操作系统隐藏这些细节,并提供了统一的接口,因此,程序员可以使用简单的读和写操作访问这些设备。(4)控制访问文件:对操作系统而言,关于文件的控制不仅必须详细了解I/O设备(磁盘驱动器、磁带驱动器)的特性,而且必须详细了解存储介质中文件数据的结构。此外,对有多个用户的系统,操作系统还必须提供保护机制来控制对文件的访问。(5)系统访问:对于共享或公共系统,操作系统控制对整个系统的访问以及对某些特殊系统资源的访问。访问函数必须提供对资源和数据的保护,避免未授权用户的访问,还必须解决资源竞争时的冲突问题。(6)错误检测和响应:计算机系统运行时可能发生各种各样的错误,包括内部和外部硬件错误,如存储器错误、设备失败或故障以及各种软件错误,如算术溢出、试图访问被禁止的存储器单元、操作系统无力确认应用程序的请求等。对每种情况,操作系统都必须提供响应以清除错误条件,使其对正在运行的应用程序影响最小。响应可以是终止引起错误的程序、重试操作或简单地给应用程序报告错误。(7)统计:操作系统可以收集、统计各种资源的使用状况,监控诸如响应时间之类的性能参数。在任何系统中,这种统计对于预测将来对增强功能的需求以及调整系统以提高性能都是很有用的。对多用户系统,统计信息还可用于记账。1.2.2操作系统作为资源管理器一个完整的计算机系统由中央处理器(或简称为CPU)、存储器、时钟、磁盘、鼠标、网络接口、打印机等设备组成。这些就是所谓的硬件资源。这些资源用于对数据的移动、存储和处理以及对这些功能的控制;而操作系统负责管理、分配调度这些资源,满足用户程序对资源的请求,提高系统资源利用率,协调各用户程序使用资源时产生的冲突,保护系统资源,以防有意或无意的破坏。假如某个系统中运行着多个用户的程序,操作系统如何为它们分配内存资源?何时调度哪个用户程序使用CPU资源?要打开某个文件时,操作系统怎样为用户到磁盘中查找该文件?多个用户都要在同一台打印机上输出各自计算结果时,如何解决彼此的竞争问题?诸如此类的资源分配、管理、保护以及程序活动的调度和协调等都需要操作系统负责解决。因此,作为计算机系统资源管理者,操作系统主要负责以下一些工作:(1)监视各种系统资源,随时记录它们的状态;(2)使用一些调度策略,合理分配系统资源给用户作业使用;(3)及时回收资源,以便再分配使用;(4)统计各种资源使用情况,作为调整调度策略提高系统性能的依据。1.2.3操作系统的扩展性一个有商业价值的操作系统必须能够适应计算机技术进步,同时满足用户不断膨胀的需求,做到与时俱进,自身不断发展,究其原因主要有:(1)硬件升级或新硬件出现。比如:字符终端之后出现的图像终端、容量更大的内存、多处理器系统、高速网络以及大小品种不断增加的内部、外部存储设备等等,这些都要求操作系统进行升级换代。(2)应用需求扩大。比如:用户要求支持Internet服务,要求提供多媒体应用和Web访问等,也促使操作系统不断发展满足用户的这些需求。1.3操作系统的发展历程计算机从1946年问世至今,已有半个多世纪的发展时期。一开始并没有操作系统,当时在使用方式上是单用户独占,即每次只能一个用户使用计算机,一切资源全部由该用户占有使用。并且在一个作业运行过程中,以及在作业完成后转换到另一个作业都需要很多人工的干预。到了20世纪50年代中、后期,随着处理器速度的提高,这种手工操作所浪费的机时问题变得越来越严重。人们就想在作业转换过程中排除人工干预,使之自动转换。于是出现了早期的“批处理系统”。操作系统的基本概念因此形成。此后,操作系统进入快速发展时期。1.3.1单道批处理系统所谓单道是指计算机内存中只存放一个作业,辅存(如硬盘)中存放多个作业。单道批处理是早期的一种计算机管理方式。其策略可以简单地叙述为:一次运行一个作业,所有计算机资源均为该作业所使用,直到该作业运行完成,才轮到下一作业运行。具体操作过程描述如下:用户将应用程序和初始数据制作成一叠卡片,交给计算机操作人员在计算机上进行运算。操作员将若干个作业收集在一起,装入卡片读卡机,读入用户的源程序和初始数据,然后编译成可以运行的目标程序存储在目标磁带上。接下来,操作员在控制台上按下“开始”开关,计算机从该磁带上读出第1道作业存入内存,开始运行。当运行完成以后,接着运行第2道作业,第3道作业,…,这是一种封闭式的管理方式。用户和操作员的职责分离,避免了因用户在计算机前思索造成的CPU闲置和低效率的人工操作时间,与用户直接操作裸机相比有了很大的进步。单道批处理系统是操作系统的雏形,从以上操作过程可以看出其特点:(1)自动性:顺利情况下,磁带上的作业可一个接一个地运行,无需人工干预;(2)顺序性:按进入磁带的顺序进入内存;(3)单道性:内存中只存放一道作业运行。单道批处理系统的引入解决了作业之间的自动切换问题,提高了计算机资源利用率。但是,由于这种系统需要有标准输入输出程序、汇编程序、编译程序、连接程序等支持,这种要求在早期的计算机内存资源稀缺昂贵的情况下,增加了成本;另外,由于CPU的运算速度与外部设备的输入输出速度差距很大,CPU仍需要花费大量时间等待低速外部设备的输入输出处理结果,浪费仍然是非常惊人的。这也是单道批处理系统的不足之处。1.3.2多道批处理系统单道不能总是保持CPU或I/O设备忙碌,通过组织多个作业,多道批处理系统提高了CPU的利用率。所谓多道批处理系统,是指在辅存(硬盘)中创建大量作业,并将这些作业按一定要求排成队列(称之为后备作业队列),从这些作业队列中,选出若干个作业加载入内存多道运行。当有作业运行完成退出系统时,按照某一调度策略(比如:先进先出),从作业队列中选择作业调入内存,从而使作业批量运行,无需人工干预,如图1-2所示。和单道批处理系统一样,多道程序批处理系统仍然必须依赖于某些计算机硬件。例如,I/O中断技术和通道是多道程序批处理系统运行最重要的物质基础。所谓通道是一种专用处理部件,它能控制一台或多台I/O设备工作,负责I/O设备与内存之间的数据传输。它一旦被启动就能独立于CPU运行,这样可使CPU和通道并行操作,而CPU和多种I/O设备之间也能并行操作;而中断是指当CPU收到一个外部信号(如I/O设备操作完成信号)时,马上暂停原来工作,转去处理这个信号,处理完毕后,CPU回到原来的断点继续工作。此外,需要硬件——存储保护机构的支持,因为当内存中存放多道作业时,操作系统必须对这些作业予以充分的信息保护,以防其他作业有意或无意的破坏,同时也要防止作业对操作系统程序的破坏。当然,还需要地址转换机构硬件的支持,因为作业中的地址与内存中的实际地址可能不一样,况且内存地址会因作业换入或换出内存而变动,这就需要对地址重新定位,进行地址转换。图1-2多道批处理系统中的作业流程多道批处理系统的引入,可以使CPU、内存、各种I/O设备资源得以充分利用。因为在单道批处理系统中,运行用户程序时,I/O设备就会闲置,而I/O设备工作时,CPU就闲置。在多道批处理系统中,情况发生了变化。例如:三道作业投入运行,一种可能的运行情况如图1-3所示。图1-3多道作业一种可能的运行轨迹单处理器多道批处理系统宏观上是并行的,即多个作业“同时”在计算机系统中运行;但微观上是串行的,也就是说,在CPU上还是一个接一个地运行(因为只有一个处理器),但CPU利用率显著提高。这样,多道、宏观并行、微观串行就成了多道批处理系统的特点。具体地说,多道批处理系统包括如下一些特征:(1)多道性:在内存中可同时驻留多道作业,并允许它们交错执行。(2)无序性:多个作业完成的先后顺序与它们进入内存的顺序之间,并无严格的对应关系,即先进入内存的作业可能较后甚至最后完成,而后进入内存的作业也可能先完成。(3)调度完成:一个作业从提交给系统开始直至完成,可能需要经过多次作业调度和进程调度。所谓作业调度,是指按特定的作业调度算法,从辅存的后备作业队列中,选择若干个作业加载入内存;而进程调度,是指按某一进程调度算法,从加载到内存的多个作业中选择一个作业,将CPU分配给它,使之运行。具体的一些调度算法将在后续章节中论述。从多道批处理系统的这些特征可以看出,其优点主要在于:(1)资源利用率高:由于在内存中加载了多道作业,它们可以共享CPU、内存和I/O设备等资源。这样,使得各种资源处于忙碌状态的可能性增大,从而使各种资源得以充分利用。(2)系统吞吐量大:所谓系统吞吐量是指系统在单位时间内所完成的作业量或任务数。而其主要缺点是:(1)缺乏交互能力:用户一旦把作业提交给系统后直至该作业完成,均无法干预其运行,使用起来不方便。(2)平均周转时间长:所谓周转时间是指从作业提交给系统开始,直至其完成并退出系统为止所经历的时间间隔。在多道批处理系统中,由于作业要排队等待处理,因而作业周转时间较长。1.3.3分时系统通过使用多道程序设计,可以使批处理变得更加有效,提高了系统资源利用率和吞吐量。但是,对许多作业来说,需要提供一种新模式以便用户可以直接与计算机交互。实际上,对一些作业如事务处理,交互模式是必需的。当今对交互计算软件的需求常常通过使用专用的微型计算机来满足,但这在20世纪60年代却是行不通的,当时大多数计算机都非常庞大而且昂贵,为了能够同时满足多用户的需要,因而开发了分时系统。美国麻省理工学院在20世纪60年代初期建立了全世界第一个分时系统CTSS。所谓分时是指多个用户分享使用同一台计算机,也就是说把计算机的系统资源(尤其是CPU时间)进行时间上的分割,即将整个工作时间分成一个个的时间段,每个时间段称为一个时间片,通常为几十毫秒,从而可以将CPU工作时间分别提供给多个用户使用,每个用户依次地轮流使用时间片,如图1-4所示。图1-4分时系统分时系统与多道批处理系统相比,具有完全不同的特征,具体包括以下几点:(1)同时性:允许在一台主机上同时连接多台联机终端,系统按分时原则为每个用户服务。宏观上,多个用户同时工作,共享系统资源;微观上,每个用户作业轮流运行一个时间片。(2)交互性:用户可以通过终端与系统进行广泛的人机对话。例如:用户可以请求系统提供多方面服务——文件编辑、数据处理、程序编译等。(3)独立性:每个用户各占用一台终端,彼此独立操作,互不干扰。(4)及时性:用户能够在很短时间内得到系统的响应,通常为2~3秒。由以上特征可以看出分时系统具有的优点是:首先,可以为用户提供友好的人机接口,即用户能在较短时间内得到系统响应,可以以对话方式完成对程序的编写、调试、修改、运行并得出计算结果;其次,促进了计算机的普及应用,一个分时系统可以携带多台终端,同时为多个用户使用,这在早期计算机价格昂贵的情况下,大大缓解了用户对计算机需求的矛盾,为教学和办公自动化提供了很大方便;最后,便于资源共享和交换信息,为软件开发和工程设计提供了良好的环境。1.3.4实时系统计算机经过几十年的发展,不但广泛使用于科学计算、数据处理方面,也大量应用于工业生产中的自动控制、实验室中的实验过程控制、军事上的导弹发射控制、民用航空上的机票预订管理等方面,这些我们通常称之为实时控制应用。所谓实时是指对随机发生的外部事件作出及时的响应并对其进行处理。而实时系统是指能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件处理的操作系统。它将系统中各种设备有机地联系在一起,控制它们完成既定的任务。根据对响应时间限定的严格程度,实时系统可分为硬实时系统(也称为实时控制系统)和软实时系统(也称为实时信息处理系统)。硬实时系统主要用于工业生产的过程控制、航天系统的跟踪及控制、武器的制导等。这类操作系统要求的响应速度快,一般为毫秒级甚至微秒级,要求系统安全可靠性非常高,否则就有可能造成灾难性后果。而软实时系统主要用于响应速度在秒级以上的应用系统中。常见的有机票预订系统、情报检索系统、银行财务处理系统、信用卡业务处理系统等。这些系统一般配备有大型数据库,对系统安全性、可靠性和保密性要求较高。由此可见,实时系统具有以下一些特点:(1)实时系统的任务具有截止期,即实时任务必须在一个确定的时间内完成;(2)任务的活动具有各种要求和时限,如计算时间要求、资源要求、执行次序、执行时间等限制;(3)实时系统的任务是可预测的,即任务在最坏情况下的执行时间以及所需要的资源,要求对最坏情况的预测值与实际的差别尽可能的小;(4)实时系统里所有任务,都是外部事件所激发触发的;(5)实时系统的任务具有合作性,它们相互关联,共同完成某个控制任务;(6)实时系统的任务活动具有不可逆性。总之,在实时系统中,被控对象是一个并发活动的有机整体,对被控对象进行监视和控制任务,它们之间存在着各种复杂的逻辑关系。与分时系统相比,两者之间存在的差异主要表现在:(1)交互性:实时信息处理系统虽也具有一定交互性,但其交互能力较差。一般实时系统是具有特殊用途的专用服务系统,仅允许终端操作员访问数量有限的专用程序。(2)实时性:实时系统对响应时间一般有严格限制,它是以控制过程或信息处理过程所能接受的延迟来确定的,其数量级为毫秒甚至微秒级,事件处理必须在给定时限内完成,否则可能导致系统失败,严重的可能会造成人员或生命财产的损失。而分时系统一般以人们能够接受的等待时间为依据设定相应的响应时间,其数量级通常为秒级。(3)可靠性:虽然分时系统也要求系统可靠,但相比之下,实时系统对系统可靠性要求更高。因为任何差错都可能带来巨大的经济损失、甚至无法预料的灾难性后果。因此,实时系统往往采用多级容错措施来保证系统安全和数据安全。比如:硬件采用双机工作方式,软件加入多种安全保护策略。1.3.5网络操作系统、分布式操作系统与并行操作系统通常,网络操作系统是指服务于计算机网络,按照网络体系结构的各种协议来完成网络的通信、资源共享、网络管理和安全管理的系统软件。而分布式操作系统是指建立在网络操作系统之上,对用户屏蔽了系统资源的分布而形成的一个逻辑整体系统的操作系统。现如今,各类科学技术和实际应用促使计算机技术发展,单核的串行计算机性能提高已经到达极限,多处理器、多核等并行计算机成为技术主流。并行计算与分布计算技术是实现高性能计算的关键技术途径。其中分布计算意在有效组织管理异构资源,开发功能并行性,即大量的计算机通过网络被连接在一起,可以获得极高的运算能力及广泛的数据共享,这种系统被称作分布式系统;并行计算重在发掘计算过程中的并行性,并行计算机性能提高和功能增强的关键是并行软件的发展,包括并行操作系统、并行程序语言等,其中又以并行操作系统为核心。并行操作系统的发展方向是采用多线程控制结构的微内核操作系统,为并行计算和并行处理提供更高的资源利用率、更有效的执行效率和更方便的界面。基于分布式操作系统的定义,可以看出其具备的具有如下一些特征特点:(1)统一性,即它是一个统一的操作系统;(2)共享性,即所有的分布式系统中的资源是共享的;(3)透明性,其含义是用户并不知道分布式系统是运行在多台计算机上,在用户眼里整个分布式系统中的许多计算机就像是一台计算机,对用户来讲是透明的。(4)独立性,即处于分布式系统的多个主机都处于平等地位,在物理上独立。因此,分布式系统的优点是它的分布式。分布式系统可以以较低的成本获得较高的运算性能。分布式系统的另一个优点是它的可靠性。由于有多个独立的CPU系统,因此当一个CPU系统发生故障时,整个系统仍旧能够工作。对于高可靠的环境,如核电站等,分布式系统是有其用武之地的。1.3.6基本操作系统的特征多道批处理系统、分时系统和实时系统是三种基本的操作系统类型。而一个实际的操作系统可能兼有三者或其中两种的功能。例如:VAX-11系列机上所配置的VMS操作系统便是一个兼有分时、实时和批处理功能的操作系统。分时系统、多道批处理系统都是多个用户同时使用一台计算机资源,称为多用户操作系统;而实时系统则要迅速处理多个事件,则称之为多任务。因此,现代的操作系统一般都具有如下特征:(1)并发性:所谓并发是指在某一时间间隔内,计算机系统内部有多个程序活动。而并行是指在同一时刻计算机系统内部有多个程序同时运行。在单处理机系统中,多个程序是不可能并行的。并发性从宏观上看,可以看作多道程序在同时运行,而微观上,在单处理机系统中,每一时刻仅能执行一个程序,这些程序只能是交替执行的。(2)共享性:所谓共享是指系统中的资源可供多个用户程序或作业共同使用。操作系统通过资源充分共享来提高系统资源利用率。所以,资源共享是现代操作系统的一个重要特征。共享方式分为互斥共享和同时共享。系统中的某些资源如打印机、磁带机、扫描仪等,虽然可以提供给多个用户作业使用,但这些资源不允许两个以上作业同时使用,称之为互斥共享。比如:当一个作业正在使用一台打印机,其他欲使用该打印机的作业必须等待,仅当该作业使用完并释放该打印机后,才允许另一作业使用。而系统中的另一类资源如磁盘允许多个作业交替使用,一个作业暂时不用时,另一作业可以使用。因此宏观上看,多个作业同时使用,所以是同时共享。软件资源也可以按互斥或同时两种方式共享。比如:只读的数据、只读文件或不可修改的可执行文件等都可以同时共享;而可写的数据、文件等只能互斥共享。(3)虚拟性:操作系统中的所谓虚拟,是指通过某种技术把一个物理实体变成若干个逻辑上的对应物。物理实体是实际存在的,而逻辑对应物是虚的,只是用户感觉上的东西。比如:在分时系统中,虽然实际中系统只有一个CPU,但每个终端用户感觉上都认为有一个CPU在专门为他服务。也就是说,利用多道程序设计技术可以把一个物理上的CPU虚拟成多个逻辑上的CPU,也称为虚处理机。类似地,也可以把一台物理上的I/O设备虚拟成多台逻辑上的I/O设备。在操作系统中体现虚拟特性,主要通过分时使用的办法实现。(4)不确定性:所谓不确定性是指系统中各种事件发生顺序的不可预测性。这是多道程序系统中并发和资源共享两大特征所带来的必然结果。在多道程序环境下,允许多个作业并发执行。但是由于系统资源有限等因素的制约,通常一个作业的执行无法“一气呵成”,而是以“走走停停”的方式运行。内存中的每个作业在何时执行,何时暂停,以怎样的速度向前推进,每道作业总共运行多长时间才能完成等等,都是不可预知的。有可能先加载入内存的作业后完成,而后进入内存的作业却先完成。这种不确定性或异步性是现代操作系统的又一重要特征。1.4现代Linux系统演变过程Linux操作系统是网络时代的一个伟大产品,它伴随着Internet的发展而发展,又为Internet的发展推波助澜。它是目前世界上最大的一个自由免费软件,其本身是一个功能可与Unix和Windows相媲美的操作系统,具有完备的网络功能。Linux最早是在1991年由芬兰赫尔辛基大学一位大学二年级的学生LinusBebedictTorvalds所开发的一个仿Unix的免费版本。其源程序在Internet上公开发布,引发了全球电脑爱好者的开发热情。许多人下载该源程序并按自己的意愿完善某一方面的功能,再发回网上,Linux也因此被雕琢成为一个全球最稳定的、最有发展前景的操作系统。从1991年至今,Linux系统经历了以下几个重要发展阶段:(1)1991年10月5日,LinusTorvalds在新闻组comp.os.minix发布了大约有1万行代码的Linuxv0.01版本;(2)到了1992年,大约有1000人在使用Linux。值得一提的是,他们基本上都属于真正意义上的黑客(hacker)。(3)1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成。此时Linuxv0.99的代码大约有10万行,用户大约有10万左右。(4)1994年3月,Linuxv1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议(GnuGeneralPublicLicense)。至此,Linux的代码开发进入良性循环。很多系统管理员开始在自己的操作系统环境中尝试Linux,并将修改的代码提交给核心小组。由于拥有了丰富的操作系统平台,因而Linux的代码中也充实了对不同硬件系统的支持,大大提高了跨平台移植性。(5)1995年,此时的Linux可在Intel、Digital以及SunSPARC处理器上运行了,用户量也超过了50万,主要介绍Linux操作系统的LinuxJournal杂志也发行了超过10万册之多。(6)1996年6月,Linuxv2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器。此时的Linux已经进入了实用阶段,全球大约有350万人使用。(7)1997年夏,电影《泰坦尼克号》在制作特效中使用的160台Alpha图形工作站中,有105台采用了Linux操作系统。(8)1998年是Linux迅猛发展的一年。当年1月,小红帽高级研发实验室成立,同年Redhatv5.0获得了InfoWorld的操作系统奖项。4月Mozilla代码发布,成为Linux图形界面上的王牌浏览器。Redhat宣布商业支持计划,网罗了多名优秀技术人员开始商业运作。王牌搜索引擎Google采用的也是Linux服务器。同年10月,Intel和Netscape宣布小额投资红帽软件(Redhat),这被业界视作Linux获得商业认同的信号。同月,微软在法国发布了反Linux公开信,这表明微软公司开始将Linux视作一个对手来对待。12月,IBM发布了适用于Linux的文件系统AFS3.5以及JikesJava编辑器和SecureMailer及DB2测试版,IBM的此番行为,可以看作是与Linux羞答答地第一次亲密接触。迫于Windows和Linux的压力,Sun逐渐开放了Java协议,并且在UltraSparc上支持Linux操作系统。1998年可说是Linux与商业接触的一年。(9)1999年,IBM宣布与Redhat公司建立伙伴关系,以确保Redhat在IBM机器上正确运行。3月,第一届LinuxWorld大会的召开,象征Linux时代的来临。IBM、Compaq和Novell宣布投资Redhat公司,以前一直对Linux持否定态度的Oracle公司也宣布投资。5月,SGI公司宣布向Linux移植其先进的XFS文件系统。对于服务器来说,高效可靠的文件系统是不可或缺的,SGI的慷慨移植再一次帮助Linux确立了其在服务器市场的专业性。7月,IBM启动对Linux的支持服务,并发布了LinuxDB2,从此结束了Linux得不到支持服务的历史,这可以视作Linux真正成为服务器操作系统一员的重要里程碑。(10)2000年初始,Sun公司在Linux的压力下宣布Solaris8降低售价。事实上Linux对Sun造成的冲击远比对Windows来得更大。当年2月,Redhat发布了嵌入式Linux的开发环境,Linux在嵌入式行业的潜力逐渐被发掘出来。4月,拓林思公司宣布了推出中国首家Linux工程师认证考试,从此Linux操作系统管理员的水准可以得到权威机构的资格认证,此举大大增加了国内Linux爱好者学习的热情。伴随着国际上的Linux热潮,国内的联想和联邦推出了“幸福Linux家用版”,同年7月中国科学院与新华科技合作发展红旗Linux,此举让更多的国内个人用户认识到了存在着Linux这个操作系统。11月,Intel与Xteam合作,推出基于Linux的网络专用服务器,此举结束了Linux单向顺应硬件制造商需求以“硬件驱动开发”的历史。(11)2001年初,Oracle宣布在OTN上的所有会员都可免费索取Oracle9i的Linux版本,从几年前的“绝不涉足Linux系统”到如今的主动献媚,足以体现Linux的发展迅猛。IBM则决定投入10亿美元扩大Linux系统的运用,此举犹如一针强心剂,令华尔街的投资者们闻风而动。到了5月这个初夏的时节,微软公开反对“GPL”引起了一场大规模的论战。8月红色代码爆发,导致许多站点纷纷从Windows操作系统转向Linux操作系统,虽然是一次被动的转变,不过也算是一次应用普及。12月,Redhat公司为IBMs/390大型计算机提供了Linux解决方案,从此结束了AIX孤单独行无人伴的历史。(12)2002年是Linux企业化的一年。当年2月,微软公司迫于各州政府的压力,宣布扩大公开代码行动,这可是Linux开源运动带来的深刻影响的结果。3月,内核开发者宣布新的Linux系统支持64位的计算机。(13)2003年1月,NEC宣布将在其手机中使用Linux操作系统,代表着Linux成功进军手机领域。5月中旬,SCO表示就Linux使用的涉嫌未授权代码等问题对IBM进行起诉,此时人们才留意到,原本由SCO垄断的银行/金融领域,份额已经被Linux抢占了不少,也难怪SCO如此气急败坏了。9月,中科红旗发布RedFlagServerv4版本,性能改进许多。11月,IBM注资Novell以2.1亿美元收购SuSE,同期Redhat计划停止免费的Linux,顿时业内骂声四起。Linux在商业化的道路上渐行渐远。(14)2004年3月,SGI宣布成功实现了Linux操作系统支持256个Itanium2处理器。4月,美国斯坦福大学Linux大型机系统被黑客攻陷,再次证明了没有绝对安全的操作系统。6月的统计报告显示在世界500强超级计算机系统中,使用Linux操作系统的已经占到了280席,抢占了原本属于各种Unix的份额。9月,HP开始网罗Linux内核代码人员,希望影响新版本的内核开发朝对HP有利的方式发展,而IBM则准备推出OpenPower服务器,仅运行Linux系统。如今,这只可爱的小企鹅终于能独当一面,在IBM、HP、Novell、Oracle等诸多厂商的支持下,迎着风雪傲然前行。经过这么多年的发展和壮大,现代成熟的Linux操作系统体现出如下一些特点:(1)Linux是一个开放的免费软件,任何人都可以免费获得Linux的源代码,并允许修改源代码。(2)Linux是一个基于POSIX标准(PortableOperationSystemInterfaceforComputingSystems,简称POSIX)操作系统界面和Unix的多用户、多任务、支持多进程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,支持32位和64位的硬件系列机,是一个性能稳定的多用户网络操作系统。并且,其模块化设计结构很容易扩充。(3)Linux脱胎于Unix,它不仅继承了Unix的高安全性、高可靠性、稳定性等诸多优点,而且还引进了新的技术,从一开始就把网络安全和信息的保密问题作为头等考虑的因素,并且Linux自身就提供了非常优秀的自由软件,可作为防火墙来使用,如Ipchains等。(4)支持几乎所有的硬件平台,包括Intel系列、680x0系列、Alpha系列、MIPS系列等,并广泛支持各种外围设备。(5)提供了强大的网络功能。首先,Linux是在互联网上诞生的,能够完全支持TCP/IP网络协议,它的网络应用软件非常丰富,很多都已经得到广泛使用,如BIND、APACHE、NFS等。其次,Linux支持的大型数据库很多,如ORACEL、SQLSERVER,而且还有一些数据库是免费的,如POSTGRESQL、MYSQL等。由于这些数据库涉及数据的并发控制、数据共享等问题,用Linux作为数据库服务器平台是非常理想的。最后,Linux提供了丰富的网络服务,如电子邮件、文件传输、网络新闻等。这些服务工具都具有一个共同点:功能强、完全免费。因此,被广大用户所接受。由于Linux诞生于因特网,所以Linux是一个优异的、标准的网页Web应用平台,您可利用它来作为路由器、防火墙、网页服务器、电子邮件服务器、数据库服务器和目录服务器来建立一个完善的、安全的因特网站点。Linux的版本号分为两部分:内核(kernel)与发行(distribution)版本。目前的最新内核为2.6,而发行版本是一些厂商或组织将Linux内核及应用软件和文档包装起来所构成的一个发行套件。如目前常见的有Redhatv9.0、Redflagv2.4等。Linux系统为用户提供两种接口:面向操作命令的接口Shell和面向编程用户的接口,即系统调用。常见的Shell命令诸如login、logout、vi、emacs、ls等,使用方法见附录1;常见的系统调用,比如:read、write、open、close、execl、fork、wait、exit等,使用方法见附录2。目前大多数发行版本都提供了类似Windows的图形用户界面,称为X-Window。由于不在内核中,因此,这个图形界面非常灵活,便于修改。比较流行的有KDE、GNOME、Enlightment等。Linux正在世界各地迅速普及推广,各大软件厂商如Oracle、Sybase、Novell、IBM等均发布了Linux版的产品,许多硬件厂商也推出了预装Linux操作系统的服务器产品,当然,PC用户也可使用Linux。另外,还有不少公司或组织有计划地收集有关Linux的软件,组合成一套完整的Linux发行版本上市,比较著名的有RedHat(即红帽子)、Slackware等公司。我国也十分重视Linux的发展,在Linux的汉化方面已经做了很多工作,从表1-1、图1-5、图1-6和图1-7可见一斑。目前比较流行的Linux的汉化产品主要有:TurboLinux、RedflagLinux(红旗)、XteamLinux、BluePointLinux(蓝点)等。虽然现在说Linux会取代Unix和Windows还为时过早,但一个稳定性、灵活性和易用性都非常好的软件,肯定会得到越来越广泛的应用。图1-52006年第一季度中国Linux平行市场分布(数据来源:赛迪顾问,2006,04)表1-12005年和2006年第一季度中国Linux销售总量对比数据来源:赛迪顾问,2006,04。图1-62003—2006年中国Linux软件市场总量与增长(数据来源:赛迪顾问,2007,01)图1-72008—2013年中国Linux软件市场规模和增长率预测(数据来源:IDC中国Linux市场2009—2013年预测与分析)习题一1-1请解释下列关键术语:操作系统、应用软件、程序接口、单道、单道批处理系统、多道批处理系统、作业调度、进程调度、分时、实时、响应时间、周转时间、系统吞吐量、并发、并行。1-2操作系统的基本功能是什么?1-3试列举操作系统为用户提供的多种接口。1-4多道批处理系统需要哪些硬件技术的支持?1-5多道批处理系统存在哪些优缺点?1-6试比较单道和多道批处理系统。1-7分时系统中的响应时间与哪些因素有关?1-8试叙述实时操作系统的分类。1-9简述现代操作系统的特征及其要解决的主要问题。1-10试叙述系统调用的实现原理。1-11试叙述系统调用与过程调用、库函数的主要区别。1-12Linux操作系统为用户提供哪些接口?试举例说明。1-13一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序A先开始做,程序B后开始运行。程序A的运行轨迹为:计算50ms、打印100ms、再计算50ms、打印100ms,结束。程序B的运行轨迹为:计算50ms、输入80ms、再计算100ms,结束。试说明:(1)两道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会等待?(2)程序A、B有无等待CPU的情况?若有,指出发生等待的时刻。1-14若内存中有3道程序A、B、C,它们按A、B、C优先次序运行。各程序的计算轨迹为:A:计算(30)、I/O(40)、计算(10)。B:计算(60)、I/O(30)、计算(10)。C:计算(20)、I/O(40)、计算(20)。如果三道程序都使用相同设备进行I/O(调度开销忽略不计)。试分别画出单道和多道运行的时间关系图。两种情况下,CPU的平均利用率各为多少?第2章进程描述和控制本章摘要现代多数计算机系统通常都是多道批处理系统,其操作系统的重要特征是并发和共享。为了提高和增强计算机系统中各种硬件资源的并发处理能力,每个用户的作业以及操作系统内部的某些程序模块,都是以进程(Process)的形式参与系统的并发执行,进程作为资源分配和独立运行的基本单位,操作系统通过对进程的服务来达到为用户服务的目的。因此,在操作系统中,进程是一个极其重要的概念。为了减少程序并发执行时所付出的时间和空间开销,使操作系统具有更好的并发性,在近几年出现的操作系统中,在进程的基础上又引进了比进程更小的能够独立运行的基本单位——线程(Thread),其目的是为了进一步提高程序并发执行的程度,改善系统性能。由于线程具有更好的并发性,因此,在数据库管理系统、某些程序设计语言和应用软件中,也都引入线程概念来改善系统性能。本章首先引入进程概念,并对构成进程实体(或进程映像)的要素进行描述说明;其次陈述进程的状态模型及转换关系;然后对进程创建、终止等过程进行叙述;接着引入线程概念及实现方式;最后举例说明Linux系统中进程、线程的创建与管理方法。2.1进程概念由于进程概念在整个操作系统的理论研究和实际应用方面起着重要作用,我们先从如下几个方面阐述进程的来龙去脉,以便更透彻地理解它的实质。2.1.1程序的顺序执行所谓程序,是指为完成一定功能的若干条指令序列构成的集合。在单道批处理环境中,我们可以把一个“程序”理解为“一个在时间上严格按次序执行的指令序列”。这是因为一个复杂的程序,总是可以划分成若干个时间上完全有序的逻辑相对独立操作段,其操作系列按照物理先后次序来执行,从而保证某些操作的结果可为其他一些操作所利用。例如,一个根据三角形边长计算其面积的程序。首先,要在键盘上用户输入(Input)三角形的三条边长,然后进行判断能否构成一个三角形,如可以,根据公式计算(Compute)其面积,最后输出(Output)计算结果。从这个例子看出,不仅这三个操作阶段有着严格的顺序,只能一个一个地顺序执行,而且程序段之间也必须按照先后次序执行。当程序执行时,占用了系统全部资源(如CPU、内存等),直至结束之时才释放全部资源。由此可见,程序的顺序执行体现了如下一些特征:(1)顺序特征。程序在处理机上执行时,其操作只能严格地按照所规定的顺序执行,即后继操作只能在前一操作执行完毕之后才能进行,否则就会出现错误。(2)封闭特征。程序在执行过程中独占系统中的全部资源,计算机的状态完全由该程序的控制逻辑来决定,不受外界环境的影响,其计算的结果也不受外部环境的影响。(3)可再现特征。只要程序执行时的环境和初始条件相同,程序执行后产生的结果与其执行速度无关,即与时间无关,程序重复执行时都能获得相同的结果。2.1.2资源与共享程序运行需要使用系统资源,如CPU、内存等。资源是计算机系统运行的物质基础,可分为软件资源和硬件资源,信息、数据、文件、程序属于软件资源,而CPU、内存、外围设备如打印机、扫描仪等则属于硬件资源;按使用次数,资源可分为可重用(或永久性)资源和不可重用(或临时性或可消耗)资源,前者指一次只能供一个应用程序安全地使用,并且不会由于使用而耗尽,如:CPU、I/O通道、内存、辅存、外围设备以及诸如文件、数据库和信号量之类的数据结构。后者指可以创建(生产)并且可以因使用而消耗掉的资源,比如:中断、信号、消息和I/O缓冲区中的信息。按其使用中可否剥夺,资源又可分为可剥夺性资源和不可剥夺性资源,CPU、内存、磁盘等都是可剥夺性资源,而打印机、绘图仪、扫描仪等资源则属于不可剥夺性资源。对资源的合理使用是操作系统的重要课题,特别是在引入多道程序以后,多个作业同时使用资源从而带来一系列的问题。这种多个用户共同使用资源的状况称之为资源共享。资源共享是现代操作系统的一个重要特征。操作系统正是通过资源的充分共享来提高整个系统资源利用率,从而改善系统性能。在操作系统中,资源共享有两种方式:①由应用程序自行安排使用。一般对私有软件资源可采用此方法,比如:隶属于该应用程序的共享变量,可在该应用程序的多个模块间共享使用。这些资源无需系统分配,可以由应用程序自行安排使用。但为了避免混乱使用,系统一般设置一个协调机构来使各模块相互协调地使用共享资源,后续章节介绍的同步机构即属于此。②由系统统一分配。对大部分资源来说,共享资源的使用是通过系统来协调的,共享者须经系统统一安排。2.1.3程序的并发执行为了提高系统资源的利用率和增强系统处理能力,在现代计算机系统中广泛采用并行操作技术和并发程序设计技巧。在这里,并行操作指多个操作在计算机系统的不同部件上同时进行。并行操作是硬件工作的并行进行,是硬件研究的范畴。而并发运行指多个程序在计算机系统中的交叉执行,是多道程序系统中的一种运行方式。它允许多个程序共享CPU,以并发方式进行运算。在这种方式下,系统资源不再被某一个程序独占,而是由内存中同时活跃着的多个用户程序共享。当然,资源共享与程序并发执行互为存在条件,一方面资源共享以程序并发为条件,若无多程序并发现象则无资源共享可言;另一方面系统对资源共享实施的管理是否有效,直接影响并发程序执行的情况。程序的并发执行失去了程序的顺序执行特征,它也不再具有封闭特征和可再现特征,同时并发程序间还存在相互制约的关系。下面的例子说明程序的并发执行失去了封闭特征。程序A和B共享一变量X,程序A每次对X加1,程序B每次打印X值(X初值为0)。若按先A后B的顺序执行,其结果必然打印出X值为1;若按先B后A的顺序执行,则打印出X值为0。现在程序A与B并发执行,并可按各自需要执行任意多次。例如:按A、A、B顺序执行,则打印出X值为2;按B、A、A顺序执行,则打印出X值为0;按A、B、A顺序执行,则打印出X值为1;按B、A、B顺序执行,则打印出X值为0、1。可见,计算(打印)结果与并发程序运行顺序有关,也就是说,并发程序不再具有封闭特征和可再现特征。因此,程序的并发执行产生了与程序的顺序执行所不同的新特征:(1)程序执行的间断(异步)特征。在多道程序系统中,多个程序共享同一个CPU,CPU交替执行多个程序,一道程序在CPU上运行一段时间之后便让给另一道程序运行,因此,每道程序的运行都是走走停停的。(2)资源分配的动态特征。多道程序在运行过程中可根据需要随时提出使用资源的请求,由于资源的共享特性,所以资源的状态不再取决于一道程序,而是由多个并发程序的活动共同决定的。因此,操作系统应根据当前资源的使用情况决定分配与否。(3)程序并发执行的相互制约特征。并发程序的执行过程不再像单道程序系统那样总是顺序连贯的,而具有“执行—暂停—执行”的活动规律,各程序活动的工作状态与所处的系统环境密切相关。系统中一些不可剥夺性资源具有独占性质,即一次只让一个程序使用,如打印机、磁带机等。这就使逻辑上彼此独立的程序由于共用这类独占资源而形成相互制约的关系:在顺序执行时可连续运行的程序,在并发执行时却不得不暂停下来,等待其他程序释放自己所需的这类资源。如果多个程序之间有一种合作关系,共同完成一次任务,例如:合作解同一个题目,则它们在运行过程中可能需要相互通信,比如,一个程序等待另一个程序发送中间结果,这就导致了相互通信的可能性,从另一方面表现出并发程序间的相互制约性。2.1.4进程概念的引入所谓操作系统,简单地说,就是资源管理器,管理系统资源的目的是为了提高资源使用效率,改善系统性能,提高系统吞吐量。那么,作为操作系统,必须及时全面了解掌握各种资源的使用状况、资源被利用的载体,从而才能更好地合理调度分配资源。在进程概念未引入时,资源被使用的载体是程序,而程序是一个静态的概念,无法很好地反映出各种资源被利用的动态过程。比如:用WORD字处理软件分别在2008年7月10日上午8:00和当天中午12:00编辑同一个文档的操作,实际上,在这两个不同时段,WORD字处理软件都占用了部分内存空间,使用了部分CPU时间,但用程序概念难于准确表述这两个时段资源(内存、CPU)被使用的情况。为此,引入进程概念,便于操作系统准确掌握资源被使用的状况。进程的概念是20世纪60年代初首先由麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统引入的。什么叫进程呢?所谓进程,是指一个具有独立功能的程序在某个数据集合上的一次运行过程,是系统进行资源分配和调度的基本单位。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。从理论角度看,进程是对正在运行的程序活动规律的抽象,它是一个动态的概念,它不同于程序,但又依赖于程序;从实现角度看,进程是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。因此,进程具有程序所不具备的如下特征:(1)动态特征。进程具有生命周期,由创建而产生,由调度而运行,由得不到资源而阻塞,由撤销而消亡。而程序是个静态的概念。(2)并发特征。多个进程共同驻留在内存中,能在一段时间内交错执行。而程序不具备并发性。(3)独立特征。进程是系统进行资源分配和调度的一个基本单位。而程序段是不可作为独立单位接收系统分配的资源和被调度执行的。(4)结构特征。为描述进程的变化运动过程,系统为每一个进程配置一个进程控制块(ProcessControlBlock,简称PCB),这样从结构上看,进程由程序、数据集合以及PCB三部分组成。一般把进程的这三部分组成内容称之为进程映像或进程实体,如图2-1所示。图2.1进程映像结构(5)异步特征。各进程按其各自独立的、不可预知的速度向前推进,对系统来说,需提供一些机制来协调它们。在这五个特征中,进程最基本的特征是动态特征和并发特征。2.2进程描述2.2.1进程映像进程的活动是通过在CPU上执行一系列程序和对相应数据进行操作来体现的,因此,程序和数据是组成进程映像(或进程实体)的内容,但这两者仅仅是静态的文本,没有反映其动态特征,无法体现进程使用资源的历史情况、拥有资源的状况以及等待使用资源的情况。为此,还需要引入一个数据结构描述进程当前的状态、对资源的占用及调度信息等。这种数据结构称为进程控制块PCB,所以,进程映像(或进程实体)一般是由程序、数据和PCB三部分组成,如图2-1所示。2.2.2进程控制块进程控制块(PCB)是进程映像中最重要的组成部分,其中包含有进程的描述信息和控制信息,是进程动态特性的集中反映,是操作系统对进程进行识别和控制的依据。它由进程标识信息、处理器状态信息和进程控制信息三部分组成,具体如表2-1所示。表2-1进程控制块(PCB)组成要素2.3进程状态及转换进程是动态的概念,所以是有生命周期的,都要经历由创建(诞生)到消亡的过程。在这一过程的不同阶段,为了表明进程拥有资源状况的差异,引入进程状态模型。比如:用于说明一进程是否拥有CPU资源,我们可以用进程的两状态模型来描述,所以,若该进程拥有CPU资源,则表明该进程处于运行状态,否则为非运行状态。当然,用进程的两状态模型来描述进程的生命周期中不同阶段拥有资源情况差异性是不够准确的。比如:一个处于非运行态的进程是否一定在等待使用CPU资源呢?不一定,可能该进程在等待某种事件的结果(比如I/O操作结果),也可能是在等待CPU资源,所以,若这时该进程属于前一种情况,那么,CPU一旦空闲,分配给该进程,将浪费CPU资源。因此,有必要引入新的进程状态模型加以描述。下面我们来论述一个进程五状态模型。为便于管理进程,将进程状态划分成:运行态(Running)、就绪态(Ready)、阻塞态(Blocked或等待态Waiting)、新建态(New)和终止态(或退出态,Exit)。(1)运行态。表明进程正在处理机(CPU)上运行的状态,说明该进程已经获得运行所需要的各种资源,比如:分配到一定量的内存和CPU等,它的程序正在CPU上运行。处于此状态的进程数目小于等于处理机的个数。在没有其他进程可以执行时(比如所有进程都处于阻塞态),通常会自动执行系统的空闲进程。(2)阻塞态。进程等待某种事件完成(如I/O操作)而暂时不能运行的状态。处于该状态的进程不能参加竞争处理机资源,因为此时即使将处理机资源分配给它也不能运行。(3)就绪态。进程已经得到必要的资源,唯缺处理机而使其处于等待处理机的状态,一旦获得处理机资源,便可投入运行,正可谓“万事俱备,只欠东风”。(4)新建态。刚刚创建的进程,操作系统还没有把它加入到就绪队列时的状态,通常是还没有加载到内存中的新进程。(5)终止态(或退出态)。当一个进程已经正常结束或异常结束,操作系统将收回它所占用的资源,但尚未将它撤销时的状态。进程在整个生命周期中,不仅需要按照自身程序逻辑关系推进,而且还必须随着外界环境的变化而变化。因此,在上述五种基本状态中,进程会依着一定条件而相应地转换为特定的状态,如图2-2所示。图2.2进程五状态模型(1)新建态→就绪态。当就绪队列允许接纳新的进程时,操作系统会把一个处于新建态的进程转换成就绪态。大多数操作系统在考虑这种状态转换时,常常会基于现有的加载到内存中的进程数量或分配给现有进程的内存空间设置一些限制条件,以确保不会因为活跃进程的数量过多而导致系统性能下降。(2)就绪态→运行态。当需要选择一个进程投入运行时,操作系统会根据一定的调度算法选择一个处于就绪态的进程,并将CPU分配供之使用。有关这些知识内容是进程调度范畴,将在后续章节中进行探讨。(3)运行态→阻塞态。正在运行的进程因等待某一事件的发生而无法运行,便由运行态转变为阻塞态。对操作系统的请求通常以系统服务调用的方式发出。例如,进程可能向操作系统请求一个无法立即得到的资源,如某一文件;或者进程在等待一次输入/输出操作完成的结果;当进程间相互通信时,一个进程等待另一个进程提供的数据时,或者等待来自另一个进程的信息时,便会由运行态转变成阻塞态。(4)运行态→就绪态。这种状态的转换同样是存在的。比如:在一个采用优先级剥夺调度算法的系统中,若一个优先级高的进程在运行期间,有一个更高优先级的进程处于就绪态,这个优先级更高的进程就会抢占正在运行进程的处理机资源,该低优先级进程便由运行态转换为就绪态;又如:在多数操作系统中,为了防止处理机资源被某一进程垄断占用,常采用时间片轮转调度算法,正在运行的进程由于规定的时间片用完而产生超时中断,被操作系统暂停运行,该进程便由运行态转换为就绪态,等待下一次使用处理机资源的机会。(5)阻塞态→就绪态。当某一进程所等待的事件结果出现时,处于阻塞态的该进程将转换到就绪态。(6)运行态→终止态(或退出态)。如果当前正在运行的进程已经完成其工作或出现异常事件(比如:该进程的程序执行时发生地址越界、出现除零溢出错误等)时,该进程会正常结束或异常终止。从进程五状态模型图(如图2-2)可以看出,第一,多数情况下进程的状态转换是不可逆的。例如,进程既不能从阻塞态转换成运行态,也不能从就绪态转换为阻塞态;第二,除了进程从运行态到阻塞态的转换是主动进行的,其他情况进程的状态转换都是被动进行的;第三,在采用进程五状态模型描述的情况下,一个进程在整个生命周期中某一指定时刻只能处于上述五种状态中的某一种状态。2.4进程控制操作系统为了对全部进程进行有效管理,必须加强进程控制。所谓进程控制,就是操作系统使用一些具有特定功能的程序段来负责创建进程、撤销进程以及完成进程各种状态间的转换,从而做到多进程并发执行时,实现资源共享,协调多进程间的关系。在继续讨论操作系统控制进程的方式之前,需要区分通常与操作系统相关联的以及与用户程序相关联的处理机执行模式。多数处理机至少支持两种执行模式:内核模式和用户模式。内核是操作系统中包含重要系统功能的核心代码部分,表2-2中列出了操作系统内核中常见的功能。内核模式指的是处于执行操作系统内核程序代码的状态。某些指令只能在较多特权模式下运行,包括读取或改变像程序状态字(PSW)之类控制寄存器的指令、与存储器管理相关的指令等。较少特权模式常称为用户模式,这是因为用户进程通常在该模式下运行。存在区别于用户模式的内核模式,其价值主要在于增强操作系统自身代码执行的安全性,避免用户程序执行时有意或无意地破坏操作系统程序代码和数据。为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未来五年粟米油企业数字化转型与智慧升级战略分析研究报告
- 2026年四川华新现代职业学院单招综合素质笔试备考试题带答案解析
- 房地产转介协议书
- 公司内部监督管理制度
- 企业福利体系构建与实施指南
- 河北省保定市部分高中2025-2026学年高二上学期12月期中生物试题(含答案)
- 企业中层管理述职报告模板
- 信息技术支持服务满意度调查报告
- 大型活动安保组织方案及人员调配策略
- 大数据驱动精准营销案例分析
- 卖香肠订货合同范本
- 统编版(2025)八年级上册历史期末复习各课重点考点提纲
- 物业公司安全生产管理体系
- 组织行为学期末考试试题库附答案
- 2025计算机一级考试wps 试题及答案
- 公牛产品知识培训内容课件
- 液压支架装配翻转平台施工方案
- 房地产企业财务风险分析及防范措施研究-以碧桂园为例
- 髌骨骨折护理查房课件
- 直播间合伙人合同协议书
- (2025年标准)园区基金投资协议书
评论
0/150
提交评论