操作系统原理与实践教程课件_第1页
操作系统原理与实践教程课件_第2页
操作系统原理与实践教程课件_第3页
操作系统原理与实践教程课件_第4页
操作系统原理与实践教程课件_第5页
已阅读5页,还剩437页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章操作系统引论1.1操作系统的目标和作用1.2操作系统的发展过程1.3操作系统的基本特性1.4操作系统的主要功能1.5操作系统的结构设计1.1操作系统的概念1.1.1操作系统的地位和作用

1.操作系统的地位一个完整的计算机系统由两大部分组成:计算机硬件和计算机软件。硬件部分是指计算机物理装置本身,主要包括中央处理机(运算器和控制器)、存储器、输入/输出设备等。由硬件组成的计算机称为裸机(BareMachine),裸机只能执行机器代码语言,一般人无法使用。软件部分是指由计算机硬件执行以完成一定任务的所有程序及数据,主要包括系统软件和应用软件两大类。操作系统是一个最基本也是最重要的系统软件,它是对硬件功能的首次扩充,所有其它的软件如汇编程序,编译程序等系统软件以及大量的应用软件都建立在操作系统的基础上,并得到它的支持和服务。

1.操作系统的地位

硬件裸机操作系统其它系统软件应用软件用户2.操作系统的作用(1)操作系统作为计算机资源的管理者。在一个计算机系统中,通常含有各种硬件和软件资源,相应地,操作系统的主要功能也正是针对这些资源进行有效的管理,即:处理机管理,用于分配和控制处理机;存储器管理,主要负责内存的分配与回收;I/O设备的管理,负责I/O设备的分配与操纵;文件管理,负责文件的存取、共享和保护。

2.操作系统的作用(2)操作系统作为用户与计算机硬件系统之间的接口。用户通过操作系统来使用计算机系统,可通过以下三种方式使用计算机。①命令方式②程序方式③图形方式2.操作系统的作用(3)操作系统作为扩充机器(ExtendedMachine)。通常把覆盖了软件的机器称为虚拟机(VirtualMachine)或扩充机器,它是对裸机的抽象和功能的扩充。1.1.2操作系统定义根据前面关于操作系统的地位和作用的描述,可以给操作系统一个非常形式化的定义如下:

操作系统是计算机系统中的一个系统软件(位于硬件层之上,所有其它软件层之下),能够有效控制和管理计算机硬件和软件资源。合理组织计算机工作流程以及方便用户的程序集合。1.2操作系统发展过程操作系统的形成迄今已近50年的历史,经历了从无到有,从功能简单到功能完善的演变过程,并且还处于进一步发展之中。下面分别加以叙述。1.2.1手工操作方式早期计算机上没有配置操作系统,人们采用手工操作方式使用计算机硬件系统,即由操作员将纸带(卡片)装入纸带输入机(或卡片输入机),然后启动输入机将程序和数据送入计算机,接着通过控制台开关启动程序运行,当程序运行完毕,用户取走计算结果,让下一个用户上机。这种操作方式具有用户独占计算机资源和CPU等待人工操作的特点。1.2.1手工操作方式随着CPU速度的提高,手工操作的低速与CPU运算的高速之间产生了矛盾,即所谓的人机矛盾。例如:CPU运行1万次/秒,某程序运行时间为60分钟,手工操作需3分钟,则手工操作时间与程序运行时间的比为3:60=1:20;若CPU速度提高60万次/秒,则该程序运行时间为1分钟,手工操作方式仍为3分钟,则手工操作时间与程序运行时间的比为3:1,所以人机矛盾日趋严重。此外,CPU与I/O设备之间速度不匹配矛盾也日益突出。1.2.2脱机输入/输出技术为了解决手工操作所产生的人机矛盾以及CPU与I/O设备之间速度不匹配矛盾,20世纪50年代末出现了脱机输入/输出技术。该技术是预先将用户程序和数据在一台外围机的控制下,从低速输入设备输入到磁带上,当CPU需要这些程序和数据时,再从磁带上高速输入内存(此即脱机输入技术);当CPU需要输出时,可由CPU直接高速把数据送至磁带上,然后在外围机的控制下,把磁带上的数据由相应的低速输出设备输出(此即脱机输出技术)。若在主机的直接控制下进行输入/输出的方式称为联机输入/输出。1.2.2脱机输入/输出技术脱机I/O的优点:在脱机I/O方式下,由外围机而不是主机的CPU等待手工操作,从而减少主机CPU的空闲时间,缓和人机矛盾;另外,CPU直接通过高速磁带进行输入/输出,这极大提高I/O速度,从而较好缓和了CPU与I/O设备之间速度不匹配的矛盾。1.2.3批处理系统1.单道批处理系统(SimpleBatchProcessingSystem)

批处理技术是指在系统中配置一个监督程序(Monitor),并在该监督程序的控制下,能够对一批作业自动进行处理的一种技术。1.2.3批处理系统1.单道批处理系统(SimpleBatchProcessingSystem)还有下一个作业?是否停止将下一个作业的源程序转换成目标程序否源程序有错?装配目标程序运行目标程序是开始1.2.3批处理系统1.单道批处理系统(SimpleBatchProcessingSystem)单道批处理系统的主要特征如下:(1)自动性。磁带上的一批作业能自动地、逐个地依次运行,无须人工干预。(2)顺序性。作业完成的顺序与它们进入内存的顺序以及作业在磁带上的顺序一致。(3)单道性。内存中仅能存放一道作业。1.2.3批处理系统2.多道批处理系统(MultiprogrammedBatchProcessingSystem)尽管批处理系统提高了系统的效率,但它是单道顺序地处理作业,效率仍不很高,如图1.3所示。在图1.3种给出了单道程序运行时的CPU空闲情况,t2至t3这段时间用户程序在进行I/O操作,CPU是空闲的,为了改善CPU的利用率和设备的利用率而引入多道程序。所谓多道是指在内存中同时存放几道作业,使它们轮流交替在处理机上运行。当正在执行的作业因I/O请求而暂停执行时,系统可立即调度另一道作业运行。多道程序设计技术可显著提高内存、CPU与I/O设备的利用率,增加系统的吞吐量(单位时间内完成的总工作量)。如图1.4所示的多道程序运行情况。1.2.3批处理系统2.多道批处理系统(MultiprogrammedBatchProcessingSystem)

用户程序MonitorI/O请求I/O操作启动I/OI/O完成I/O请求启动I/Ot1t2t3t4t5t6 t1.2.3批处理系统2.多道批处理系统(MultiprogrammedBatchProcessingSystem)

I/O请求程序A程序BI/O请求程序C程序B程序A再被调度程序AI/O请求I/O完成I/O完成B再被调度调度程序程序CI/O完成t1.2.3批处理系统2.多道批处理系统(MultiprogrammedBatchProcessingSystem)多道批处理系统的主要特征如下:(1)多道性。内存中可以存放多个作业。(2)调度性。通过作业调度,从外存选取若干作业装入内存。进程调度在内存的多个作业中为某作业分配CPU。(3)无序性。作业调度次序与作业在外存中次序无关,作业完成的次序与作业进入内存的次序也无关。1.2.4分时系统1.分时系统的工作原理分时系统(TimeSharingSystem)模型为一台高性能的主机(快速CPU与大容量的RAM)连接多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。系统设置一个运行时间片,轮流让每个用户程序运行一个时间片,当时间片用完立即切换到下一个程序。如果在不长的时间(如3秒)内,能使所有的用户程序都执行一次(一个时间片的时间),便可使每个用户都能及时与自己的作业交互,从而可使用户的请求得到及时响应。1.2.4分时系统2.分时系统特征

(1)多路性。(2)及时性。(3)交互性。(4)独立性。1.2.5实时系统虽然多道批处理系统和分时系统,已获得较为令人满意的资源利用率和响应时间,从而扩大了计算机的应用范围,但它们仍然不能满足以下两个领域的需要,即实时控制和实时信息处理。1.实时系统定义所谓实时系统(RealTimeSystem)是指能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。1.2.5实时系统2.实时控制计算机通过特定的外围设备与被控制对象进行联系,被控制对象的信息通过外围设备传送到计算机,计算机接收后,经过分析,加工并做出处理决策,向控制对象发出控制信号。例如,火灾报警控制系统中,计算机不断给探测器发监测脉冲,探测器实时采集房间中的烟浓度和温度值,并将数据送入计算机控制系统,计算机则按一定算法进行判断,若发生火灾,计算机控制系统使探测器指示灯点亮,并触发相应报警装置,或者灭火设备等。此外,还可用于生产过程控制,医疗控制,飞机导航等。1.2.5实时系统3.实时信息处理该系统由一台或多台主机通过通信线路连接成百上千台远程终端,用户通过终端设备向系统提出服务请求(如预定飞机票),系统根据提出请求,对信息进行检索和处理,再通过终端回答用户。例如;飞机订票系统,情报检索系统等。1.2.5实时系统4.实时系统的特征(1)多路性。实时控制系统,其多路性主要表现在对多路的现场信息进行采集以及对多个对象或多个执行机构进行控制。而实时信息处理系统与分时系统的多路性表现在按分时的原则为多个终端用户提供服务。(2)及时性。实时信息处理系统在及时性上与分时系统相似,是以人所能接受的等待时间来确定的。而实时控制的及时性是以控制对象所要求的开始截止时间(Deadline)或完成截止时间来确定的,对实时性要求更高,一般为毫秒级。1.2.5实时系统4.实时系统的特征(3)交互性。分时系统具有较强的交互性,而实时系统则相对要差,提供的交互命令较简单,仅允许终端用户访问数量有限的专用服务程序。不存在分时系统的资源共享。(4)独立性。实时信息系统的终端用户在向系统提出服务请求时,彼此独立工作,互不干扰。同样,实时控制系统中,对信息的采集和对对象的控制,也是彼此互不干扰。(5)可靠性。虽然分时系统也要求系统可靠,但实时系统要求的可靠性更高,因为在实时控制方面往往是军事,经济,商业等目标,若可靠性没有保障,其后果是难以想象的。因此,往往采取多级容错措施来保障系统的安全性及数据的安全性(例如双主机的硬件冗余,多份程序、数据备份的软件冗余等)。1.2.6网络操作系统将地理上分散的自主计算机通过通信线路互连而形成计算机网络。随着计算机体系结构的发展,20世纪80年代中期出现了网络操作系统(NetworkOperatingSystem),可以把它定义成一组能使网络上各计算机方便有效地共享网络资源,为网络用户提供所需的各种服务的软件和有关通信协议程序的集合。1.2.6网络操作系统

计算机1服务器计算机2计算机4计算机31.2.7嵌入式操作系统嵌入式系统是集软硬件与一体的、可独立工作的计算机系统;从外观上看,嵌入式系统像是一个“可编程”的电子“器件”;从功能上看,它是对宿主对象(包括移动电话、数字电视、掌上电脑PDA等)进行控制,是其具有“智能”的控制器。运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一的协调、指挥和控制的系统软件称为嵌入式操作系统。由于嵌入式操作系统的硬件特点,应用环境的多样性和开发手段的特殊性,使它与普通的操作系统有很大的区别,其主要特点为微型化、可裁剪性、实时性、高可靠性和易移植性。1.2.7嵌入式操作系统按嵌入式操作系统的应用范围划分,可分为通用型嵌入式操作系统和专业型嵌入式操作系统。通用型嵌入式操作系统可用于多种应用环境,例如常见的WindowsCE、VxWorks、CLinux和C/OS等。专业型嵌入式操作系统则用于一些特定的领域,例如,移动电话的Symbian、PDA的PlamOS等。1.3操作系统的基本特征

1.并发(Concurrence)

并发性是指两个或多个事件在同一时间间隔内发生。要正确理解并发可以从以下三方面考虑:(1)并发与并行的区别。并行性是指两个或多个事件在同一时刻发生,而并发性则强调在同一时间间隔发生。(2)并发性是宏观上的考虑。并发性是指宏观上在一段时间内多道程序同时运行,但在单处理机系统中,每一时刻仅能执行一道程序,故微观上这些程序是交替执行的。(3)为了实现并发,应为每个程序建立进程。这因为程序是静态实体,它们不能并发执行。而进程是系统中能独立运行并能独立分配资源的基本单位,它由一组机器指令、数据、堆栈和进程控制块(PCB)组成,是一个活动实体。多个进程之间可以并发执行和交换信息。1.3操作系统的基本特征

2.共享(Sharing)

所谓共享是指系统中的资源可供内存中多个并发执行的进程共同使用。1.3操作系统的基本特征

2.共享(Sharing)由于资源属性不同,进程对资源共享方式也不同,主要有以下两种资源共享方式。(1)互斥共享。系统中可供共享的某些资源,如打印机、变量、队列等在一段时间内仅允许一个进程访问(使用)。只有当这个进程使用完毕并释放这些资源后,其他进程才能访问这些资源。(2)同时访问。系统中还有另一类资源,如磁盘、可重入代码,它们在同一段时间内可以被多个进程访问。但这种同时是指宏观上的,微观上这些进程可能交替访问资源。而进程的交替访问资源的顺序不会影响访问的结果。1.3操作系统的基本特征

3.虚拟(Virtual)

操作系统中的虚拟是指通过某种技术把一个物理上的实体变成若干个逻辑上的对应物。这种技术被称为虚拟技术,可用来实现虚拟处理机、虚拟存储器和虚拟设备等。

例如,在操作系统中引入多道程序设计后,虽然系统中只有一个CPU,每次只能执行一道程序,但通过分时技术,在一段时间间隔内,宏观上这个CPU能同时运行多道程序。这样给用户的感觉是每道程序都有一个CPU为它服务,即多道程序设计技术可以把一台物理上的CPU虚拟成多台逻辑上的CPU。1.3操作系统的基本特征

4.异步性(Asychronism)异步性是指在多道程序的环境下,由于资源等因素的限制,每个程序不知何时执行,何时暂停,即它们以不可预知的速度向前推进。但操作系统应保证程序的执行结果是可再现的,即只要运行环境相同,一个程序多次运行都会得到相同的结果。1.4操作系统的主要功能操作系统的主要功能包括处理机管理、存储器管理、设备管理、文件管理和提供用户接口五个方面。1.4操作系统的主要功能1.处理机管理

处理机管理主要是对处理机的分配和运行进行管理。在多道程序环境下,处理机分配和运行是以进程为基本单位的,因此对处理机的管理可以归结为对进程的管理。进程管理应实现下述主要的功能:(1)进程控制。(2)进程同步。(3)进程通信。(4)进程调度。1.4操作系统的主要功能2.存储器管理存储器管理的主要任务是对内存进行分配、保护和扩充。主要实现以下功能。(1)内存分配/回收。按一定的策略为每道程序分配内存,并在程序运行结束时回收内存。(2)内存保护。确保每道用户程序只在自己的内存空间中运行,从而不影响操作系统和其它程序的运行。(3)地址映射。实现地址空间中的逻辑地址到内存中的物理地址转换。(4)内存扩充。为了允许大型作业或多个作业的运行,必须借助虚拟存储技术去获得增加内存的效果。1.4操作系统的主要功能3.设备管理设备管理的主要功能是完成用户的I/O请求,具体包括以下几个方面:(1)缓冲管理。利用缓冲来缓和CPU与I/O设备速度上的不匹配矛盾,提高CPU与I/O设备的利用率和I/O速度。(2)设备分配。为用户分配完成I/O所需的设备与设备控制器,在配置有通道的系统中,还需为用户分配通道。(3)设备处理。启动设备进行真正的I/O操作,响应并处理设备控制器发来的中断请求。1.4操作系统的主要功能4.文件管理文件管理的主要任务是有效地支持文件的存储、检索和修改等操作,解决文件的共享、保护等问题,主要实现以下功能:(1)文件存储空间的管理。负责对文件存储空间管理,包括存储空间的分配/回收等功能。(2)目录管理。目录是为方便文件管理而设置的数据结构,它能提供按名存取的功能。(3)文件的读/写管理和保护。实现文件的读写操作,并提供有效的存取控制功能,保护文件的安全。1.5操作系统的结构设计任何大型复杂的工程任务都应认真考虑其结构的设计。操作系统是一个复杂的系统软件,为了更好有效地对它研制、维护、了解和使用,也应考虑它的结构设计问题,即操作系统的内部组织结构。在操作系统发展初期,由于系统规模较小,人们只关心功能设计和效率,但随着计算机硬件技术的全面,快速发展,操作系统越来越庞大,潜在性的错误也越来越多,例如,IBM/360操作系统每一个新的版本都隐藏着近千个错误,因此,操作系统的结构设计不能不提到日程上来。在进行操作系统的设计和开发时,必须遵循软件工程的原则和方法。了解操作系统的设计目标和设计原则,熟悉操作系统的体系结构是非常重要的。1.5操作系统的结构设计

1.5.1操作系统的设计目标1.方便性配置操作系统的计算机系统更容易使用,用户可通过操作系统所提供的各种命令来使用计算机系统。例如,用编译命令可方便把用户用高级语言书写的程序翻译成机器代码,方便用户的使用。若没有操作系统,人们只能用机器语言书写程序,很不方便。目前广为使用的Windows操作系统给用户提供窗口界面,也是方便性的具体体现。1.5操作系统的结构设计

1.5.1操作系统的设计目标2.有效性操作系统使计算机资源使用更加有效,在未配置操作系统的计算机系统中,CPU、I/O设备处于空闲而得不到充分利用,内、外存中所存放数据无序而浪费存储空间。有了操作系统后,可使系统中的各类资源处于忙碌状态,其资源得到了有效的利用,从而提高了系统的吞吐量。1.5操作系统的结构设计

1.5.1操作系统的设计目标3.可扩充性操作系统必须能方便地开发、测试和引进新的系统功能,以适应计算机硬件和体系结构的迅速发展以及应用领域不断扩大的要求。在操作系统的设计中,应采用层次化结构,以便增加新的功能模块和修改老的功能模块。1.5操作系统的结构设计

1.5.1操作系统的设计目标4.开放性80年代以来,由于计算机网络的发展,操作系统必须提供统一开放的环境,使其应用在不同的系统中具有可移植性,并使不同的系统能够通过网络进行集成,从而能正确、有效地协同工作。1.5.2操作系统的结构1.整体式结构操作系统的整体式结构又称模块组合结构,它是一种基于结构化程序设计的软件设计方法。早期的操作系统(如IBMS/360)及目前的一些小型操作系统(如DOS操作系统)均属于这种类型。整体式操作系统的基本思想是:整体系统是一堆过程的集合,每个过程都可以根据需要任意调用其它过程。使用这种结构时,系统的每个过程有一个定义完好的接口,即入口参数和返回值。但这种结构有一定缺陷,模块的独立性差,模块之间牵连太多,系统结构不清晰,正确性难以保证,特别随着系统规模的扩大,采用这种结构的系统复杂性迅速增长,这将促使人们去研究新的结构概念及设计方法。1.5.2操作系统的结构2.层次结构所谓的层次结构,就是把操作系统所有的功能模块按照功能调用次序分别排成若干层,各层之间的模块只有单向调用关系(例如,只允许上层或外层模块调用下层或内层模块)。分层的优点是:(1)把功能实现的无序性改成有序性,可显著提高设计的准确性。(2)把模块间的复杂依赖关系改为单向依赖关系,即高层软件依赖于低层软件。1.5.2操作系统的结构3.虚拟机结构采用虚拟机结构的操作系统中,其核心被称为虚拟机监控程序(VirtualMachineMonitor),它在裸机上运行并且具备了多道程序功能。该系统向上提供了若干台虚拟机。与其他操作系统不同的是:这些虚拟机不是具有文件等优良特性中的扩展计算机,相反,它们仅仅是精确复制裸机的硬件,包括:核心态/用户态、I/O功能、中断及其它真实硬件所具有的全部内容,即每台虚拟机与裸机相同。因此,不同的会话监控系统上可以运行不同的操作系统,形成更高一层的虚拟机。1.5.2操作系统的结构4.微内核结构微内核(Microkernel)的主要思想是:在操作系统内核中只留下一些最基本的功能,而将其它服务尽可能从内核中分离出去,用若干个运行在用户态下的进程(服务器进程)来实现,形成所谓的“客户/服务器”模式。普通用户进程(即客户进程)可通过内核向服务器进程发送请求,以取得操作系统的服务。1.5.2操作系统的结构4.微内核结构采用微内核结构,不仅提高了系统的灵活性和扩充性,还增加了系统的可靠性。此外,微内核结构比较适用于分布式系统。当前广泛使用的Windows2000操作系统,就采用了微内核结构,同时融入了面向对象的程序设计技术。而Linux属于单内核结构(含有操作系统的全部功能模块,并通过函数调用来实现通信的),但是它在单内核设计中引入了微内核的许多设计和实现方法。实践证明,这种通过在单内核模式中吸收某些微内核的实现方法所产生的混合体,比单纯使用单内核系统的功能更强大且更实用。1.6实例分析多道程序设计技术让两个以上程序并发执行,可以提高系统的效率。假定系统中有一个CPU,一台I/O设备,在t=0时刻,内存中同时到达3个程序A、B、C,它们的计算和I/O操作的时间如表程序操作ABC计算204030I/O203020计算3040301.6实例分析设它们按A、B、C的优先次序执行,试画出单道运行和多道运行的时间关系图,并求出两种情况下,完成三道程序各自花费多少时间?解:若采用单道方式运行三个程序(串行操作),次序分别为A、B、C,即A进行20ms计算,再完成20ms的I/O操作,之后再进行30ms计算;接下来B进行40ms计算,再完成30ms的I/O操作,之后再进行40ms的计算;然后C先进行30ms的计算,再完成20ms的I/O操作,最后再进行30ms的计算,至此,三道程序全部运行完毕。总计花费时间为:T串=20+20+30+40+30+40+30+20+30=260(ms)1.6实例分析

A(20)0204070110140180 210230260tI/O计算A(20)A(30)B(40)B(30)B(40)C(30)C(20)C(30)第二章进程管理2.1进程的概念2.2进程描述2.3进程的状态与转换2.4进程控制2.5进程同步2.6进程通信2.7实例分析2.1进程的概念2.1.1程序的顺序执行及其特征1.程序的顺序执行一个程序通常可分为多个程序段,它们必须按照某种先后次序执行,仅当前一操作执行完后,才能执行后继操作。这里,我们用结点(Node)代表各程序段的操作,用I代表输入操作,C为计算操作,P为打印操作,用箭头表示其操作顺序I1C1P1I2C2P2….InCnPn在顺序程序执行时,必须满足,且前趋关系。PiIi+1IiCiPi→→→2.程序顺序执行时的特征顺序性:(2)封闭性:(3)可再现性:2.1.2程序的并发执行及其特征1.程序的并发执行程序的并发执行可以看出有前趋关系:Ii→Ci,Ii→Ii+1,Ci→Pi,Ci→Ci+1,Pi→Pi+1Ii+1,Ci,Pi-1是可以并发执行的。即第i+1个程序的输入,第i个程序的计算以及第i-1个程序的打印可同时进行。2.程序并发执行时的特征1)间断性2)失去封闭性3)不可再现性2.程序并发执行时的特征例如:购买飞机票问题。假定一个飞机订票系统有两个终端,分别运行两个程序段P1和P2,该系统公共数据库中一些单元Aj(j=1,2,…)分别存放某月某日某次航班的余票数,而x1与x2表示P1和P2执行时所用的工作单元。飞机售票程序如下:2.程序并发执行时的特征ProcessPi(i=1,2)Varxi:integer;{按旅客订票要求找到Ajxi=Ajifxi>=1{xi=xi-1;Aj=xi;输出一张票;}Else{输出信息“票已售完!”;}}由于P1、P2是两个可同时执行的并发程序,在该系统中,它们共享一批票数资源,因此,可能出现如下所示的运行情况:P1:x1=AjP2:x2=AjP2:x2=x2-1,Aj=x2输出一张票P1:x1=x1-1,Aj=x1输出一张票显然,此时出现了把同一张票卖给两个旅客的情况,两个旅客各得一张票,但Aj的值实际上只减去1,造成余票数的不正确,这是不能允许的。为此,操作系统中必须对并发程序加以协调和控制,无论并发程序以怎样的速度向前推进,出现何种交叉情形,其程序的运行结果应当是唯一的、正确的。3.程序顺序执行与并发执行的比较

顺序执行并发执行程序顺序性程序间断性(多个程序在“走走停停”中进行)程序具有封闭性失去封闭性独享资源共享资源具有可再现性失去可再现性有直接或间接的相互制约关系2.1.3进程的定义和特征1.进程的定义

进程是具有独立功能的程序在某个数据集上的执行过程,是系统进行资源分配和调度的一个独立单位。这里,程序指一组操作序列,而数据集则是接受程序规定操作的一组存储单元的内容。例如:若给定数据(a,b,c),求ax2+bx+c=0的根,其C语言的程序描述如下:….x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);…当给定三组数据(a1,b1,c1),(a2,b2,c2),(a3,b3,c3),分别运行该程序时,则对应3个进程。从操作系统的角度看,可将进程分为系统进程和用户进程两类。系统进程执行操作系统程序,完成操作系统的某些功能,而用户进程运行用户程序,为用户服务,系统进程的优先级高于用户进程的优先级。2.1.3进程的定义和特征2.进程的特征1)动态性2)独立性3)并发性4)异步性5)结构特征2.1.4进程和程序的区别(1)进程是程序的执行(2)进程是程序的一次执行过程(3)进程是有结构的(4)进程与程序并非一一对应2.1.4进程和程序的区别程序与进程的对比程序进程静态的指令序列描述动态的程序执行过程永久性软件资源动态生亡暂时性资源一个程序可以包含多个进程一个进程在执行时至少对应一个程序经用户态由系统调用执行由操作系统内核进行分配调度2.2.1进程控制块1.进程控制块的定义为了描述和控制进程的运行,操作系统为每个进程定义了一个数据结构,称为PCB。2.2进程描述2.2.1进程控制块2.进程控制块的作用(1)标识进程的存在(2)为系统提供可并发执行的独立单位(3)为系统控制和管理进程提供所需的一切信息2.进程控制块中的信息

(1)进程标识符系统内部用于标识一个进程所赋予它的惟一编号,称为进程的内部名。

(2)进程的现行状态它标明进程当前所处的状态,作为进程调度程序分配处理机时的依据。

(3)现场保留区它用于保存进程由执行状态转变成其它状态时的CPU现场信息,以便当进程再次被调度运行时恢复处理机的现场信息。现场信息有程序状态字PSW、程序计数器、通用寄存器、栈指针等。(4)程序和数据地址

根据内存管理方式给出该进程相应的程序和数据所在的位置信息,以便把PCB与其程序、数据联系起来。2.进程控制块中的信息(5)互斥与同步机构

实现进程间互斥与同步时所必须的机构,例如,信号量或锁等。

(6)进程通信机制

用于实现进程之间通信所需的数据结构,例如,指向信箱或消息队列的指针。(7)优先级

表示进程使用CPU时优先级的一个整数,优先级高的进程可优先获得处理机。(8)资源清单

列出进程所需资源及当前已分配到的资源。(9)链接字

指出本进程所在队列中的下一个进程的PCB首址。(10)家族联系

指向父进程及子进程的指针。2.2.2进程控制块的组织方式1)链接方式队列头head……链指针PCB……链指针PCB……链指针PCB…2)索引方式1.进程的三种基本状态(1)执行态(Running)。进程已获得处理机,其程序正在执行,单处理机中只有一个进程在执行,多处理机则有多个进程处于执行状态。(2)就绪态(Ready)。当进程已分配到除处理机以外所有必要的资源时,它将处于准备执行状态,一旦获CPU,便立即执行。在一个系统中,可以有多个进程同时处于就绪状态。按时间片的大小,可构成多个就绪队列。(3)阻塞态(Blocked)。一个进程正等待输入输出或等待某一事件发生而暂时停止执行,即使把处理机分配给该进程也无法执行。称此刻进程所处的状态为阻塞状态(等待状态)。引起进程阻塞的事件有多种,例如,请求I/O,申请缓冲区,等待某个信号或消息,系统中同时处于阻塞状态的进程可以有多个,根据阻塞的原因(比如,阻塞到哪个资源信号量上),可分成多个阻塞队列。2.3进程的状态与转换2.三种基本状态及其转换1.挂起状态

“挂起”的实质是使进程不能继续执行,处于静止状态,“挂起”常被用在进程对换中以及其它场合(如用来调节系统的负荷等)。静止状态:对正在执行的进程暂停执行;对就绪进程暂时不接受调度;而对阻塞的进程,即使引起阻塞事件消失,也不能被调度。2.3.2具有挂起状态的进程转换图2.具有挂起状态的进程状态图

2.3.2具有挂起状态的进程转换图2.4进程控制所谓进程控制,就是系统使用一些具有特定功能的程序段来创建、撤消进程以及完成进程各种状态的转换,进程控制是由操作系统内核中的原语来实现的。一般地,系统状态下执行的某些具有特定功能程序段称为原语。为了保证操作的正确性,原语应该是原子操作。所谓原子操作即在一个操作中的所有动作要么全做,要么全不做。为了保证操作的正确性,在许多机器中规定执行原语操作时,要屏蔽中断,以保证其操作的不可分割性。1.进程创建(1)进程创建的方式①由系统模块统一创建。例如,在批处理系统中,由操作系统的作业调度程序为用户创建,相应的进程以完成用户作业的要求功能。②由父进程创建。例如,在层次结构的系统中,父进程创建子进程以完成并行工作。子进程还可以创建新的子进程,从而整个系统可以形成一个树型结构的家族。2.4.1进程的创建和撤消1.进程创建(2)进程创建原语创建一个进程的主要任务是建立进程控制块PCB,具体操作过程如图2.7所示。其步骤如下:①从系统的PCB表中找出一个空闲的PCB,并指定唯一的标识符PID。②为新进程分配资源,包括必要的内存空间、存放程序和数据的工作区等。③根据调用者提供的参数,将新进程PCB初始化。这些参数包括新的进程名、进程优先级、进程状态等。④将新进程加到就绪队列中。2.4.1进程的创建和撤消1.进程创建2.4.1进程的创建和撤消2.进程撤消(2)撤消原语撤消进程的实质是撤消PCB,一旦PCB撤消,进程就消亡了。具体操作过程是:找到要被撤消进程的PCB,判断该进程是否有子进程,若有,则撤消属于该进程的一切“子孙进程”,最后释放被撤消进程所占用的全部资源,同时释放该PCB结构本身2.4.1进程的创建和撤消2.进程撤消(2)撤消原语

2.4.1进程的创建和撤消1.阻塞原语某个进程在执行过程中,需要执行I/O操作,则由该进程调用阻塞原语把进程的状态由执行态变为阻塞态。2.4.2进程的阻塞与唤醒1.阻塞原语

2.4.2进程的阻塞与唤醒2.唤醒原语

一个进程,当等待的事件(如I/O操作)完成后,则该进程调用唤醒原语将其转换为就绪状态。2.4.2进程的阻塞与唤醒2.唤醒原语

2.4.2进程的阻塞与唤醒1.挂起原语

系统可利用挂起原语将一指定的进程挂起,具体操作过程是:首先检查被挂起进程的状态,若处于活动就绪,则将其改为静止就绪;若处于活动阻塞,将其改为静止阻塞;若挂起进程正在执行,则转调度程序重新进行进程调度。2.激活原语

系统利用激活原语激活指定进程。具体操作过程是:与挂起过程相反,把处于静止状态的进程转换成活动状态,可采用剥夺策略,进行进程调度。如果挂起是为了把某进程送入外存对换区,则激活是把被挂起的进程调入内存。2.4.3进程的挂起与激活操作系统中引入进程的目的是为了多个程序并发执行,以改善资源利用率和提高系统的效率,那么,在操作系统中引入线程则是为了减少程序并发所付出的时空开销,使并发程度更好。1.线程定义

线程(Thread)是进程内一个执行单位或进程内一个可调度的实体。线程由线程ID、程序计数器、一组寄存器和堆栈组成。2.4.4线程的概念及实现2.线程的属性(1)独立调度的基本单位。(2)可并发执行。(3)共享进程资源。(4)轻型实体。2.4.4线程的概念及实现3.线程的类型对于进程,无论是系统进程还是用户进程,在进行切换时都要依赖内核中进程调度,因此,无论什么进程都与内核有关,但对线程来说可以分为以下两类:(1)用户级线程线程仅存在用户级中,对于这种线程的创建、撤消和切换,不利用系统调用来实现,即无须通过中断进入OS内核,因而这种线程与内核无关,其切换速度特别快。(2)内核支持线程线程依赖于OS的内核,线程的创建、撤消以及切换都是由OS内核来实现的。在内核中保留每个线程的线程控制块(TCB),用于对该线程的控制和管理。2.4.4线程的概念及实现3.线程的类型进程与线程的对比2.4.4线程的概念及实现进程线程进程是CPU调度的分配单位线程是CPU调度的执行单位不同进程的地址空间相互独立各个线程共享同一地址空间进程的运行效率较低线程执行的时效高(创建、切换等时间短)进程之间的通信由操作系统控制同一进程的各线程可通过直接读写数据段进行通信2.5.1同步概念1.临界资源(CriticalResource)虽然在多道程序系统中的诸进程可以共享各类资源,然而有些资源却一次仅能提供一个进程使用,我们把这种一次仅允许一个进程访问的资源称为临界资源。例如,打印机、变量、表格、队列等。2.5进程同步2.5.1同步概念1.临界资源(CriticalResource)例如:有两个进程共享一个count变量,当两个进程按以下顺序执行时:P1 P2n1=count; n2=count;n1=n1+1; n2=n2+1;count=n1; count=n2;假定count初值为0,如果先执行P1,后执行P2,最后count变量的值为2,但如果按下列顺序并发执行:P1:n1=count;P2:n2=count;P1:n1=n1+1;count=n1;P2:n2=n2+1;count=n2;尽管P1与P2都有各自对count做了加1操作,但最后的count却是增加1,即发生了与执行顺序有关的错误,为防止这种错误,对临界资源count必须互斥访问。即P1访问count变量,P2就不能访问;当P1访问结束时,才允许P2访问count变量。2.5.1同步概念2.临界区(CriticalSection)把每个进程中访问资源的那段代码称为临界区,进入临界区流程对临界资源设一访问标志flag对flag检查,看是否被访问?该进程可以进入临界区,并设置已被访问标志该进程不能进入临界区YN2.5.1同步概念4.同步机制应遵循的准则

为解决进程同步问题,可在系统中设置专门的同步机制来协调它们,为此应遵循以下4条准则:(1)空闲让进。当系统中的临界资源处于空闲状态时,可允许一个请求该资源的进程进入自己的临界区。(2)忙则等待。当有一进程已进入临界区,表示某一临界资源正被访问,这时,其它欲访问该资源的进程必须等待,不能进入其临界区。(3)有限等待。对要求进入临界区的进程,应在有限的时间内使之进入,以免陷入“死等”状态。(4)让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。2.5.2信号量机制1.记录型信号量机制

在记录型信号量机制中,除了一个用于代表资源数目的整形变量value外,还有一个进程链表L,用于链接所有等待该信号量代表资源的进程,记录型信号量由于它采用了记录型的数据结构而得名的2.5.2信号量机制1.记录型信号量机制说明:(1)在记录型信号量机制中,S.value≥0时表示系统中某类资源的数目。当S.value<0时,(S.value的绝对值)为等待该资源的进程个数。(2)P(S)操作表示申请资源,减1操作,若S.value<0时,表示系统无某类资源,因而请求该类资源的进程处于阻塞状态,并送入相应的阻塞队列。(3)V(S)操作表示释放资源,加1操作,若S.value≤0时,则表示链表S.L中仍有因请求资源而被阻塞的进程,因此应把S.L中的第一个进程唤醒,将它移到就绪队列中。(4)当S.value的初值为1时,只允许一个进程访问资源,此时,记录型信号量转化为用于实现互斥的信号量。2.5.2信号量机制2.记录型信号量的应用例1:用P、V原语实现3个进程(A、B、C)互斥进入临界区。设互斥信号量mutex=1A B C…… …… ……P(mutex) P(mutex) P(mutex)CSA CSB CSCV(mutex) V(mutex) V(mutex)…… …… ……2.5.2信号量机制2.记录型信号量的应用分析:当A进程进入临界区,即执行了P(mutex)操作,mutex=1-1=0,这时如果B要进入临界区,先执行P(mutex)操作,mutex=0-1=-1,所以根据P操作的情形,B调用Blocked原语阻塞自己,并在等待队列中排队。若C此时也要进入临界区,执行P(mutex)等操作后,mutex=-2。故C也调用Blocked原语阻塞自己,并排在等待该资源信号量队列中的第2个位置。当A执行完后,调用V(mutex),mutex=-2+1=-1,则A唤醒等待队列中的队首进程,即B进程,使之入就绪队列。同样B执行完后,调用V(mutex),mutex=-1+1=0,则B唤醒等待队列中的第二个进程,即C进程。2.5.2信号量机制2.记录型信号量的应用序号调用进程被调用操作进入临界区运行的进程mutex值在mutex上等待的进程112AP(mutex)A03BP(mutex)A-1B4CP(mutex)A-2BC5AV(mutex)B-1C6BV(mutex)C07CV(mutex)12.5.2信号量机制2.记录型信号量的应用例2:以计算进程C和打印进程P为例来描述两个进程的合作关系,试用P、V原语实现。设:计算进程与打印进程共用一个缓冲区,如图2.12所示。为此可设置两个信号量:SA表示缓冲区满,令SA=0;SB表示缓冲区空,令SB=1C缓冲区P计算进程与打印进程的P、V描述如下:计算进程C…产生一个数据P(SB);往缓冲区送数据V(SA);…打印进程P…P(SA);从缓冲区取数V(SB);输出结果…例3:P1,P2,P3,P4,P5,P6为一组合作进程,其前趋图如图,试用P、V原语实现这6个进程的同步.P1P3P4P2P5P6设信号量Sij表示进程Pi结束后,Pj是否开始.令Sij=0,设S12=0,S13=0,S24=0,S36=0;S56=0,S46=0,利用PV原语的实现步骤如下:………P2 P(S12);︰V(S24);V(S25);P1 V(S12);V(S13);P4 P(S24);︰V(S46);P3 P(S13);︰V(S36);P5 P(S25);︰V(S56);P6 P(S46);P(S56);P(S36);2.5.3经典进程的同步问题经典的进程同步问题有:生产者-消费者问题,读者-写者问题,哲学家进餐问题。2.5.3经典进程的同步问题1.生产者—消费者问题(1)问题的描述设有L个生产者进程P1,P2,…,PL,m个消费者进程C1,C2,…,Cm,它们通过一个由n个缓冲区组成的有界缓冲池联系起来,每个缓冲区存放一个“产品”,生产者不断生产产品,并送入缓冲池中,而消费者不断地从缓冲池中取出产品并消费它。①生产者进程的P、V描述②消费者进程的P、V描述1.生产者—消费者问题(3)分析:①生产者进程申请一个空的缓冲区,并点燃信号灯(给缓冲区上锁),并往空缓冲区中放产品,这时欲有其它生产者,消费者进程要访问该缓冲区,只能等待。当该生产者存放完产品后,可以唤醒其它等待进程;同理,消费者进程正从缓冲区中取产品时,有其它进程要访问该缓冲区,也只能等待,当该消费者取走产品后,可以唤醒其它等待进程。②注意:无论生产者进程还是消费者进程,P操作的次序都不能颠倒,否则,将可能造成死锁。2.读者-写者问题(1)问题描述一个数据文件或数据对象,可能被多个进程共享,其中,有些进程要求读,而另一些进程要求对数据对象进行写或修改。允许多个读者同时读一个数据对象,因为读文件不会使数据发生混乱,但决不允许一个写者进程与其它读者进程或写者进程访问数据对象。2.读者-写者问题(2)用P、V操作实现读者-写者进程同步问题①设wmutex=1表示读者进程与写者进程,写者进程与写者进程之间的互斥信号量。②rcount=0;由于读者进程与读者进程之间不互斥,但要对多个读者读数据库文件进行计数。③rmutex=1;由于rcount是临界资源,因此在读的过程中,需要对rcount变量进行互斥访问。通过上述分析,读者进程、写者进程的同步描述如下:2.读者-写者问题2.读者-写者问题分析:①在读者进程中,可以有多个读者在读数据库,对读者进程的计数要互斥,以免发生错误,同时注意当第一个读者进程读时,一定要封锁写者进程。当读者进程逐渐撤离时,也要对计数变量进行互斥操作,若当前为最后一个读者进程读,则唤醒写者进程。②当写者进程在进行写操作时,可以封锁其它读者或写者进程,当写操作完成时,唤醒其它读者或写者进程。3.哲学家进餐问题(1)问题描述有5个哲学家,围坐在一张圆桌前,在圆桌上有5个碗和5支筷子,平时哲学家进行思考,饥饿时就试图去拿其左右最靠近他的筷子,只有拿到两支筷子才能进餐。就餐完毕后,放下筷子又继续思考。3.哲学家进餐问题(2)用P、V原语实现哲学家进餐的同步问题

由于筷子是临界资源,在一段时间内只允许一个哲学家使用,因此,用一个信号量表示一支筷子,由5个信号量构成信号量数组,如Semaphorechopstick[5]={1,1,1,1,1},这样第i个哲学家的活动可描述为:3.哲学家进餐问题3.哲学家进餐问题(3)上述描述中,虽然可以保证不会有两个相邻的哲学家同时进餐(因为对筷子的互斥使用),但有可能产生死锁(对资源的竞争所造成的一种僵局)。假定5位哲学家同时拿起左边的筷子,使得5个信号量的值为0,当他们请求右边的筷子时,因得不到产生了阻塞现象,便出现了循环等待的局面——死锁。为防止死锁的产生,可以有以下一些措施:①至多允许4位哲学家去拿其左边的筷子,最终保证至少有一位哲学家能够进餐。②对所有哲学家顺序编号,规定奇数号哲学家拿其左边的筷子,然后再拿其右边的筷子,而偶数号哲学家正好相反。③仅当哲学家的左、右筷子都可用时,才允许他拿起筷子进餐。2.5.4管程管程由三部分组成:①局部于管程的共享变量说明;②对该数据结构进行操作的一组过程;③对局部于管程的数据设置初始值的语句。管程定义一个数据结构和能为并发进程所执行的一组操作,这组操作能使进程同步和改变管程中的数据。管程的语法描述如下:Monitormonitor-name;/*管程的名字*//*以下为共享变量的说明define本管程内所定义,本管程外可调用的过程(函数)名字表use本管程外所定义,本管程内可调用的过程(函数)名字表*/voidEntryP1(…)/*对数据结构进行操作的函数*/{……}voidEntryP2(…){…}…voidEntryPn(…){…}{Initialization;/*设置初始值的语句*/}2.6进程通信1.进程通信的基本方法进程间交换信息被称为进程间通信.(1)共享存储器(SharedMemory)方法。相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。在共享存储器方法中,操作系统只负责为通信进程提供可共享使用的存储空间和一些同步、互斥工具。而数据交换则由用户安排读写指令完成。(2)消息传递(MessagePassing)方法。系统提供发送消息Send()和接收消息Receive()两个原语,进程通过使用这两个原语进行数据交换。2.消息缓冲队列通信机制(1)定义相关的数据结构①消息缓冲区定义:Structmessage-buffer{ charsender[30]; /*发送消息的进程名或标识符*/ intsize; /*消息长度*/ chartext[200]; /*消息正文*/ Structmessage-buffer*next; /*指向下一个消息缓冲区的指针*/}②PCB中应增加变量的定义:…

StructPCB {Structmessage-buffer*mq /*消息队列队首指针*/Semaphoremutex; /*消息队列互斥信号量初值为1*/Semaphoresm; /*记录消息的个数*/}(2)发送原语Send()发送进程在利用发送原语发送消息之前,应先在自己的内存空间设置一发送区a,把待发消息的正文,长度以及发送进程的标识符填入其中,然后调用发送原语,把消息发给目标进程。具体描述如下:Send(receiver,a){ getbuf(a.size,i);i.sender=a.sender;i.size=a.sizei.text=a.text;i.next=NULL;getid(PCB_Set,receiver.j); P(j.mutex); insert(j.mq,i); V(j.mutex); V(j.sm);}Send()原语实现功能:根据发送区a的长度申请一缓冲区i,将发送区a的内容复制到消息缓冲区i,获得接收进程的进程标识符j,然后将i挂到消息队列j.mq上,由于该队列是临界资源。用P,V原语互斥访问,最后使用V(j.sm)唤醒接收进程。

(3)接收原语Receive()接收进程在接收消息时,应调用Receive()原语,具体描述如下:Receive(b){j=internal_name;P(j.sm);P(j.mutex);remove(j.mq,i);V(j.mutex);b.sender=i.sender;b.size=i.size;b.text=i.text;}Receive原语实现的功能:接收进程从自己的消息缓冲队列mq中取下一个消息i,并将其中的数据复制到自己的消息接收区b中。2.7实例分析例1:下列算法是对两个并发进程的描述,其中c1,c2的初值设为1,问该算法能否保证两个进程互斥进入临界区,为什么?2.7实例分析①由于c1,c2的初始值都为1,若A先获得CPU并申请进入临界区。在A进入临界区后,c2=1,c1=0;②此时,若进行进程调度,并由B获得CPU,而使B也试图进入临界区,执行完c2=1-c1语句后,c2=1,c1=0;③此时又进入CPU调度,并且A重新获得CPU,并在退出临界区后执行c1=1语句,则c2=1,c1=1;④若再进行CPU调度,并且由B获得CPU,因c1=1,B进入临界区,而此时有c2=1,c1=1;⑤若再进行CPU调度,并使A获CPU,由于c2=1,当A申请进入临界区时,A将顺利进入其临界区,由此可见,A与B同时进入了临界区。2.7实例分析例2:在生产者-消费者问题中,若将两个P操作,即生产者的P(empty)和P(mutex)互换位置或将消费者的P(full)和P(mutex)互换位置,其结果如何?若将两个V操作即V(empty)和V(mutex)互换位置或V(full)和V(mutex)互换位置,其结果又将如何?2.7实例分析解:生产者-消费者问题中,将P(full)和P(mutex)或P(empty)和P(mutex)互换位置,都可能引起死锁。考虑系统中缓冲区全满(empty=0),生产者进程执行了P(mutex)操作并获成功,当再执行P(empty)操作时,它将因失败而进入阻塞状态(empty=-1),而消费者虽然顺利通过P(full)操作,但当执行P(mutex)操作时因失败而进入阻塞状态(mutex=-1),从而引起了死锁现象,类似地当消费者进程若先执行P(mutex),后执行P(full),这时考虑系统中的缓冲区为全空,同样可能造成死锁。(请读者自行分析)2.7实例分析解:生产者-消费者问题中,将P(full)和P(mutex)或P(empty)和P(mutex)互换位置,都可能引起死锁。考虑系统中缓冲区全满(empty=0),生产者进程执行了P(mutex)操作并获成功,当再执行P(empty)操作时,它将因失败而进入阻塞状态(empty=-1),而消费者虽然顺利通过P(full)操作,但当执行P(mutex)操作时因失败而进入阻塞状态(mutex=-1),从而引起了死锁现象,类似地当消费者进程若先执行P(mutex),后执行P(full),这时考虑系统中的缓冲区为全空,同样可能造成死锁若生产者、消费者的两个V操作互换位置,则不会发生死锁。2.7实例分析例3:进程A、B、C之间的关系为:A与B共用一个单缓冲区,而B与C共用一个单缓冲区,其合作方式如图所示。A将文件记录从磁盘读入缓冲区1,B将缓冲区1的内容复制到缓冲区2,C将缓冲区2的内容打印出来,试用P、V操作来保证文件的正确打印。2.7实例分析解:为遵循这一同步规则,设置4个信号量empty1,full1,empty2,full2,其中empty1,empty2分别表示缓冲区1及缓冲区2是否为空,其初值为1,信号量full1,full2分别表示缓冲区1及缓冲区2是否有记录可供处理,初值为0,2.7实例分析例4:请给出一个写者优先的“读者-写者”问题的算法描述。解:为了使写者优先,可在原来的读优先算法的基础上增加一个初值为1的信号量S,使得当至少有一个写者在准备访问其共享数据时,使后续的读者进程等待写操作完成。令wcount=0,用于对写者计数,mutex=1用于实现对wcount进行互斥访问的信号量。读写者的描述如下所示。2.7实例分析例4:请给出一个写者优先的“读者-写者”问题的算法描述。读者进程while(true){P(S);P(rmutex);if(rcount==0)p(wmutex);rcount++;V(rmutex);V(S);读数据文件;P(rmutex);rcount--;if(rcount==0)V(wmutex);V(rmutex);}写者进程while(true){P(mutex);If(wcount==0)P(S);wcount++;V(mutex);P(wmutex);写数据库文件;V(wmutex);P(mutex);wcount--;if(wcount==0)V(S);V(mutex);}第三章中断与处理机调度3.1中断技术3.2处理机调度3.3实例分析3.1.1中断及其相关概念1.中断定义

现代操作系统中都配置硬件中断装置,中断机制是计算机系统的重要组成部分之一。

所谓中断是指计算机在执行期间,系统内或系统外发生异步事件,使得CPU暂时中止当前正在执行的程序而去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。3.1中断技术2.中断源分类

引起中断的事件称为中断源。

不同硬件结构的中断源各不相同,从中断事件的性质和激活的手段来说,可分为强迫性中断和自愿性中断两类。①强迫性中断事件不是正在运行的程序所期待的,而是由于随机发生的某种事故或外部请求信息所引起的。这类中断包括:机器故障中断事件、程序性中断事件、外部中断事件和输入输出中断事件。②自愿性中断事件是正在运行的程序所期待的事件。这种事件是由于执行了一条访管指令而引起的,它表示正在运行的程序对操作系统的某种需求,一旦机器执行到一条访管指令,便自愿停止现行程序的执行而转入访管中断处理。3.中断装置

发现中断源并产生中断的硬件称为中断装置。这些硬件包括中断逻辑线路和中断寄存器。所有计算机都是采用硬件和软件(硬件中断装置和软件中断处理程序)结合的方法实现中断处理。硬件中断装置主要完成以下功能:①发现中断源,响应中断请求;②保护现场;③启动处理中断事件的中断处理程序,处理机状态从目态被切换到管态。4.中断处理程序

处理中断事件的程序称为中断处理程序。它的主要任务是处理中断和恢复正常操作。由于不同中断源对应不同中断处理程序,故快速找到中断处理程序的入口地址是一个关键问题。一个操作系统设计者将根据中断的不同类型和不同的应用环境,来确定不同的处理原则。具体地讲,一个中断处理程序主要完成以下几项工作:①保护未被硬件保护的一些必要处理状态;②识别各个中断源,分析产生中断的原因;③处理发生的中断事件;④恢复正常操作。3.1.2中断处理过程当CPU在执行某程序时,可随机接收外部的中断信号,CPU完成某指令的执行,进入中断处理过程,首先保存CPU现场,将中断处理程序入口地址(PC)和运行环境(PSW)压入栈中,然后转去执行中断处理程序,结束后,恢复现场,包括恢复被中断程序上下文环境等。3.1.2中断处理过程处理器结束当前指令的执行处理器发送中断应答信号处理器将PC和PSW压入栈根据中断设置加载新的PC硬件设备产生一个中断中断处理程序处理剩余状态的信息中断处理程序处理中断恢复被中断程序的上下文环境恢复原PSW和PC的值中断处理过程

3.1.3核心态和用户态

配置操作系统的计算机系统、系统资源由操作系统统一使用,用户无权直接使用系统资源。为保证这一点,现代操作系统提供两种处理机工作状态,即核心态(管态)和用户态(目态)。操作系统内核程序在核心态下运行,允许在核心态下运行的程序执行所有的指令(包括特权指令),而外层所有程序在用户态下运行,特权指令一般不允许在用户态下执行。在处理机状态字(PS或PSW)寄存器内设置一个标志触发器,根据当前值为1或0来分别表示处理机的核心态和用户态。例如Intelx86上运行的Linux或Windows,为增加系统的安全性,可用环保护方式,只用到0环和3环,其中0环表示核心态,而3环表示用户态。

3.2处理机调度处理机调度即进程调度。在多道程序环境中,进程数往往多于处理机数(如单处理机多道环境),这必然引起多个程序对处理机的竞争问题,分配处理机的任务是由处理机调度程序完成的。如何提高处理机的利用率,在很大程度上取决于调度算法性能的好坏。

3.2.1三级调度及其模型处理机调度的目的是满足系统响应时间、吞吐量、处理机的效率等要求,一个作业被提交后,必须经处理机调度后,才能获得执行权力,那么一个作业从提交到执行,往往要经过三级调度,即高级调度,低级调度和中级调度。

3.2.1三级调度及其模型

1.高级调度(HighLevelScheduling)高级调度又称作业调度,用于决定把外存中处于后备队列中的哪些作业调入内存。当作业调入内存后,为之分配必要的资源,创建进程,入就绪队列。例如,批处理系统中须配置作业调度机制,而分时、实时系统无须作业调度机制。

3.2.1三级调度及其模型

2.低级调度(LowLevelScheduling)低级调度又称进程调度,用于决定就绪队列中的哪个进程获得处理机,这个过程由分派程序来完成。例如,批处理系统、分时系统、实时系统都必须配置这级调度。进程调度有两种调度方式:

3.2.1三级调度及其模型

2.低级调度(LowLevelScheduling)

(1)剥夺方式(抢占方式)。剥夺方式允许进程调度程序根据某种策略终止当前正在运行的程序,将其转入就绪队列,并在根据某种调度算法选择另一个进程投入运行。剥夺的原则:①优先权原则;②短作业(进程)优先原则;③时间片原则。

3.2.1三级调度及其模型

2.低级调度(LowLevelScheduling)

(2)非剥夺方式(非抢占方式)。在这种进程调度方式下,一旦一个进程被选中投入运行,它就一直运行下去,直到完成工作或自愿放弃CPU或因某事件而被阻塞为止,才把CPU让给其它进程。这种调度方式优点是实现简单、系统开销小,适于大多数批处理系统环境,但它难以满足紧急任务的要求。

3.2.1三级调度及其模型

2.低级调度(LowLevelScheduling)

就绪队列阻塞队列等待事件事件出现交互用户时间片完进程完成进程调度CPU

3.2.1三级调度及其模型

3.中级调度(Intermediatelevelscheduling)中级调度又称对换功能,把那些暂时不能运行的进程调到外存去等待(挂起状态),当它们又具备运行条件且内存空闲时,决定将外存哪些重新又具备运行条件的就绪进程,重新又调入内存,并修改其状态为就绪状态,入就绪队列。中级调度的运行频率介于高级调度与低级调度之间。例如,在分时系统中或具有虚拟存储器操作系统中,专门引入中级调度。

3.2.1三级调度及其模型

4.三级调度模型

挂起就绪态中级调度就绪态终止态阻塞态运行态中级挂起阻塞态中级调度后备队列调度高级调度提交Spooling输入低级调度

3.2.2常用调度算法与调度算法和调度性能相关的概念如下:(1)周转时间。周转时间是指一个作业从提交开始到完成为止这段时间间隔。具体包括:①作业在外存后备队列等待时间;②作业在就绪队列等待调度的时间;③作业在CPU上的执行时间;④作业等待I/O操作完成的时间。

3.2.2常用调度算法第i个作业的周转时间Ti=第i个作业完成时间-第i个作业提交时间(或到达时间)。其平均周转时间。第i个作业的带权周转时间Wi=平均带权周转时间=

3.2.2常用调度算法(2)响应时间。响应时间是衡量分时系统调度性能的一个重要指标。响应时间是指用户通过键盘提交一个请求开始到首次产生响应为止这段时间间隔。包括:①请求信号从键盘传输到计算机的时间;②计算机对请求处理时间;③再将响应送回终端的时间。

3.2.2常用调度算法(3)截止时间。是衡量实时系统调度性能的一个重要指标。截止时间是指某任务必须开始的最迟时间或必须完成的最迟时间。包括开始截止时间和完成截止时间。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论