版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 进程管理3.1 进程的概念3.2 进程的描述3.3 进程状态及其转换3.4 进程控制3.5 进程互斥3.6 进程同步3.7 进程通信3.8 死锁问题3.9 线程的概念3.1 进程的概念现代操作系统的重要特点 程序的并发执行 系统所拥有的资源被共享 系统的用户随机地使用。引入进程(process)概念3.1.1 程序的并发执行1. 程序程序程序是一个在时间上按严格次序前后相继的程序是一个在时间上按严格次序前后相继的操作序列,是一个操作序列,是一个静态静态的概念。的概念。2. 程序的顺序执行程序的顺序执行特征:特征:顺序性、封闭性、可再现性顺序性、封闭性、可再现性I1C1P1I2C2P23
2、. 多道程序系统中程序执行环境的变化多道程序系统中程序执行环境的变化特点:特点:(1) 独立性独立性每道程序都是逻辑上独立的,它们之间不存在每道程序都是逻辑上独立的,它们之间不存在逻辑上的制约关系。逻辑上的制约关系。(2) 随机性随机性在多道程序环境下,特别是在多用户环境下,在多道程序环境下,特别是在多用户环境下,程序和数据的输入与执行开始时间都是随机的。程序和数据的输入与执行开始时间都是随机的。(3) 资源共享资源共享资源共享将导致对进程执行速度的制约。资源共享将导致对进程执行速度的制约。3. 程序的并发执行程序的并发执行(concurrent)(1) 概念概念 一组在逻辑上互相独立的程序或
3、程序段在执行过程中,一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。未结束,另一个程序段的执行已经开始的这种执行方式。l并发的类型并发的类型 程序之间程序之间 程序段之间程序段之间l并发执行时的特征并发执行时的特征 间断性、失去封闭性、不可再现性间断性、失去封闭性、不可再现性(2) 程序的并发执行所带来的影响程序的并发执行所带来的影响l间断性:程序在并发执行时,由于它们共享资源或间断性:程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,
4、使在并发程序之间为完成同一项任务而相互合作,使在并发程序之间形成了相互制约的关系。相互制约将导致并发程序形成了相互制约的关系。相互制约将导致并发程序具有具有“执行执行- -暂停暂停- -执行执行”这种间断性活动规律。这种间断性活动规律。l失去封闭性:程序在并发执行时,是多个程序共享失去封闭性:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。程序来改变,致使程序的运行已失去了封闭性。l不可再现性:程序在并发执行时,由于失去了封闭不可再现性:程序在并发执行时,由于失去了封闭性,也将导致
5、失去结果的可再现性。即程序经过多性,也将导致失去结果的可再现性。即程序经过多次运行,虽然其各次的环境和初始条件相同,但得次运行,虽然其各次的环境和初始条件相同,但得到的结果却各不相同。到的结果却各不相同。例:设有堆栈例:设有堆栈S,栈指针,栈指针top,栈中存放内,栈中存放内存中相应数据块地址(如图存中相应数据块地址(如图3.1(a))设有)设有两个程序段两个程序段getaddr(top)和和reladdr(blk),其中其中getaddr(top)从给定的从给定的top所指栈中所指栈中取出相应的内存数据块地址,取出相应的内存数据块地址,而而reladdr(blk)则将内存数据块地址则将内存数
6、据块地址blk放放入堆栈入堆栈S中。中。getaddr(top)和和reladdr(blk)可分别描述可分别描述为:为: procedure getaddr(top) beginlocal rr (top)top top-1return(r) end procedure reladdr(blk) begin top top+1 (top) blk end说明问题:在某些情况下,程序的并发执行说明问题:在某些情况下,程序的并发执行使得其执行结果不再具有封闭性和可再现使得其执行结果不再具有封闭性和可再现性,且可能造成程序出现错误。性,且可能造成程序出现错误。原因原因: 上例中的程序段并发执行出现错
7、误结果是上例中的程序段并发执行出现错误结果是由于两程序段由于两程序段共享资源堆栈共享资源堆栈S,从而使得,从而使得执行结果受执行速度影响。执行结果受执行速度影响。结论结论:并发执行的各程序段共享软、硬件资源并发执行的各程序段共享软、硬件资源造成造成其执行结果受执行速度影响的局面。其执行结果受执行速度影响的局面。采取措施采取措施:操作系统操作系统用户随机性与各道程序逻辑用户随机性与各道程序逻辑独立独立的特点使得每个用户程序所使用的软、硬件资的特点使得每个用户程序所使用的软、硬件资源都受到其他并发程序的共享和竞争,从而得源都受到其他并发程序的共享和竞争,从而得到非预料的或不正确的结果。为了控制和协
8、调到非预料的或不正确的结果。为了控制和协调各程序段执行过程中的软、硬件资源的共享和各程序段执行过程中的软、硬件资源的共享和竞争,显然,必须应该有一个描述各程序段执竞争,显然,必须应该有一个描述各程序段执行过程和共享资源的基本单位。行过程和共享资源的基本单位。程序的程序的顺序性、静态性以及孤立性顺序性、静态性以及孤立性程序段执行的程序段执行的并发性、用户随机性,以及并发性、用户随机性,以及资源共享资源共享用程序作为描述其执行过程以及共享资源用程序作为描述其执行过程以及共享资源的基本单位是不合适的。的基本单位是不合适的。引入引入 进程进程(或任务)。(或任务)。3.1.2 进程的定义进程的定义进程
9、的概念是进程的概念是60年代初期,首先在年代初期,首先在MIT 的的 Multics系系统和统和IBM 的的 TSS/360系统中引用的。系统中引用的。进程的定义进程的定义:(1) 进程是可以并行执行的计算部分(进程是可以并行执行的计算部分(S.E.Madnick,J.T.Donovan););(2) 进程是一个独立的可以调度的活动(进程是一个独立的可以调度的活动(E.Cohen,D.Jofferson););(3) 进程是一抽象实体,当它执行某个任务时,将要进程是一抽象实体,当它执行某个任务时,将要分配和释放各种资源(分配和释放各种资源(P.Denning););(4) 行为的规则叫程序,程
10、序在处理机上执行时的活行为的规则叫程序,程序在处理机上执行时的活动称为进程(动称为进程(E.W.Dijkstra););(5) 一个进程是一系列逐一执行的操作,而操一个进程是一系列逐一执行的操作,而操作的确切含义则有赖于以何种详尽程度来描述作的确切含义则有赖于以何种详尽程度来描述进程(进程(Brinch Hansen),等等。),等等。总结总结进程进程:一个具有独立功能的程序对某一个具有独立功能的程序对某个数据集在处理机上的执行过程和分配个数据集在处理机上的执行过程和分配资源的基本单位。资源的基本单位。 这里,程序指一组操作序列,而数据集则是这里,程序指一组操作序列,而数据集则是接受程序规定操
11、作的一组存储单元的内容。接受程序规定操作的一组存储单元的内容。进程和程序的区别和关系:进程和程序的区别和关系:(1) 进程是一个动态概念,而程序则是一个静进程是一个动态概念,而程序则是一个静态概念。态概念。 (2) 进程具有并行特征,而程序没有。进程具有并行特征,而程序没有。(3) 进程是竞争计算机系统资源的基本单位,进程是竞争计算机系统资源的基本单位,从而其并行性受到系统自己的制约。从而其并行性受到系统自己的制约。(4) 不同的进程可以包含同一程序,只要该程不同的进程可以包含同一程序,只要该程序所对应的数据集不同。序所对应的数据集不同。作业和进程的关系1.作业是用户向计算机提交任务的任务实体
12、作业是用户向计算机提交任务的任务实体. 进程是完成用户任务的执行实体进程是完成用户任务的执行实体.是向系统是向系统申请分配资源的基本单位申请分配资源的基本单位.2.作业可由多作业可由多(1-n)个进程组成个进程组成,反之不成立反之不成立.3.作业用在批处理系统作业用在批处理系统.进程用在多道系统中进程用在多道系统中.3.2 进程的描述进程的描述l系统对进程的管理必须建立在一定的数据结构之上系统对进程的管理必须建立在一定的数据结构之上l进程的静态描述由三部分组成:进程的静态描述由三部分组成:进程控制块进程控制块PCB:包含了有关进程的描述信息、控包含了有关进程的描述信息、控制信息以及资源信息,是
13、进程动态特征的集中反映制信息以及资源信息,是进程动态特征的集中反映 (PCB结构都是全部或部分常驻内存的结构都是全部或部分常驻内存的)。有关程序段有关程序段:描述进程所要完成的功能描述进程所要完成的功能对其进行操作的数据结构集对其进行操作的数据结构集:程序在执行时必不可程序在执行时必不可少的工作区和操作对象少的工作区和操作对象(一般放在外存一般放在外存)PCB程 序和数 据PCB数据程序3.2.1 进程控制块进程控制块PCB (Process Control Block)PCB(Process Control Block)uPCB中记录了中记录了操作系统所需的操作系统所需的、用于、用于描述描述
14、进进 程的当前情况程的当前情况以及以及控制进程运行控制进程运行的全部的全部信息。信息。 u作用:使一个在多道程序环境下不能独立运作用:使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程基本单位,一个能与其他进程并发执行的进程.u反映了进程动态特征反映了进程动态特征uPCB存放在存放在OS中专门开辟的中专门开辟的PCB区内区内(1) 描述信息描述信息 进程名或进程标识号进程名或进程标识号 用户名或用户标识号用户名或用户标识号 家族关系家族关系(2) 控制信息控制信息 进程当前状态进程当前状态进程
15、在活动期间可分为就绪态、执行态和等待进程在活动期间可分为就绪态、执行态和等待状态。状态。 进程优先级进程优先级一般来说,根据操作系统的要求不同,进程一般来说,根据操作系统的要求不同,进程的的 PCB所包含的内容会多少有所不同。但所包含的内容会多少有所不同。但是,下面所示基本内容是必需的:是,下面所示基本内容是必需的:进程优先级是选取进程占有处理机的重要依进程优先级是选取进程占有处理机的重要依据。与进程优先级有关的据。与进程优先级有关的PCB表项有:表项有:a. 占有占有CPU时间;时间;b. 进程优先级偏移;进程优先级偏移;c. 占据内存时间,等。占据内存时间,等。 程序开始地址程序开始地址
16、各种计时信息各种计时信息给出进程占有和利用资源的有关情况。给出进程占有和利用资源的有关情况。 通信信息通信信息通信信息用来说明该进程在执行过程中与别的进程通信信息用来说明该进程在执行过程中与别的进程所发生的信息交换情况。所发生的信息交换情况。(3) 资源管理信息资源管理信息 PCB 中包含最多的是资源管理信息,包括有关中包含最多的是资源管理信息,包括有关存储器的信息、使用输入输出设备的信息、有关文存储器的信息、使用输入输出设备的信息、有关文件系统的信息等。这些信息有:件系统的信息等。这些信息有: 占用内存大小及其管理用数据结构指针,例如后占用内存大小及其管理用数据结构指针,例如后述内存管理中所
17、用到的进程页表指针等。述内存管理中所用到的进程页表指针等。 在某些复杂系统中,还有对换或覆盖用的在某些复杂系统中,还有对换或覆盖用的有关信息,如对换程序段长度,对换外存地址有关信息,如对换程序段长度,对换外存地址等。这些信息在进程申请、释放内存中使用。等。这些信息在进程申请、释放内存中使用。 共享程序段大小及起始地址。共享程序段大小及起始地址。 输入输出设备的设备号,所要传送的数据输入输出设备的设备号,所要传送的数据长度、缓冲区地址、缓冲区长度及所用设备的长度、缓冲区地址、缓冲区长度及所用设备的有关数据结构指针等。这些信息在进程申请释有关数据结构指针等。这些信息在进程申请释放设备进行数据传输中
18、使用。放设备进行数据传输中使用。 指向文件系统的指针及有关标识等。进程指向文件系统的指针及有关标识等。进程可使用这些信息对文件系统进行操作。可使用这些信息对文件系统进行操作。(4) CPU 现场保护结构现场保护结构 当前进程因等待某个事件而进入等待状当前进程因等待某个事件而进入等待状态或因某种事件发生被中止在处理机上的执态或因某种事件发生被中止在处理机上的执行时,为了以后该进程能在被打断处恢复执行时,为了以后该进程能在被打断处恢复执行,需要保护当前进程的行,需要保护当前进程的 CPU现场(或称进现场(或称进程上下文)。程上下文)。PCB 中设有专门的中设有专门的 CPU现场现场保护结构,以存储
19、退出执行时的进程现场数保护结构,以存储退出执行时的进程现场数据。据。结论:结论:l进程控制块进程控制块PCB 是是系统感知进程存在系统感知进程存在的唯的唯一实体。一实体。l通过对通过对PCB 的操作,系统为有关进程分配的操作,系统为有关进程分配资源从而使得有关进程得以被调度执行;资源从而使得有关进程得以被调度执行;l完成进程所要求功能的程序段的有关地址,完成进程所要求功能的程序段的有关地址,以及程序段在进程过程中因某种原因被停以及程序段在进程过程中因某种原因被停止执行后的现场信息放在止执行后的现场信息放在PCB 中。中。l当进程执行结束后,则通过释放当进程执行结束后,则通过释放PCB 来释来释
20、放进程所占有的各种资源。放进程所占有的各种资源。 CPU现场保护现场保护 进程描述信息进程描述信息 控制信息等控制信息等PCB 其他部分其他部分外存外存3.2.2 进程上下文进程上下文进程上下文实际上是进程执行活动全过程的静进程上下文实际上是进程执行活动全过程的静态描述。态描述。进程上下文进程上下文:1)计算机系统中与执行该进程有关的各种计算机系统中与执行该进程有关的各种寄存寄存器器的值的值2)程序段在经过编译之后形成的机器指令代码程序段在经过编译之后形成的机器指令代码集(或称集(或称正文段正文段)3)数据集数据集4)各种堆栈值各种堆栈值5)PCB结构结构(图图3.2)。图图3.2 进程上下文
21、结构进程上下文结构有关寄存器和栈区的内容是重要的。有关寄存器和栈区的内容是重要的。 程序计数器程序计数器PC 程序状态寄存器程序状态寄存器PS (CPU下条待执行指令下条待执行指令的地址和控制有关操作的地址和控制有关操作) 从从CPU是活动的观点来静态地看一个进程时,是活动的观点来静态地看一个进程时,必须把有关寄存器和栈区的内容也包括在必须把有关寄存器和栈区的内容也包括在其中。其中。无论在何种系统中,进程上下文的各部分都无论在何种系统中,进程上下文的各部分都必须按一定的规则有机地组合起来以便于必须按一定的规则有机地组合起来以便于执行。执行。进程上下文可按一定的执行层次组合,例进程上下文可按一定
22、的执行层次组合,例如如 用户级上下文用户级上下文 系统级上下文系统级上下文 一个进程的执行是在该进程的上下文中一个进程的执行是在该进程的上下文中执行,而当系统调度新进程占有处理机时,执行,而当系统调度新进程占有处理机时,新老进程的上下文发生转换。新老进程的上下文发生转换。在在UNIX System 中的进程上下文中的进程上下文 用户级上下文用户级上下文:进程的用户程序段部分编译进程的用户程序段部分编译而成的用户正文段、用户数据、用户栈等而成的用户正文段、用户数据、用户栈等 寄存器上下文寄存器上下文: 程序寄存器程序寄存器PC:给出给出CPU 将要执行的下条指将要执行的下条指令的虚地址令的虚地址
23、 处理机状态字寄存器处理机状态字寄存器PS:给出机器与该进程给出机器与该进程相关联时的硬件状态,例如当前执行模式、相关联时的硬件状态,例如当前执行模式、能否执行特权指令等能否执行特权指令等 栈指针栈指针:栈指针指向下一项的当前地址栈指针指向下一项的当前地址 通用寄存器的值通用寄存器的值:用于不同执行模式之间的用于不同执行模式之间的参数传递等。参数传递等。 系统级上下文系统级上下文: 系统级上下文系统级上下文: 动态部分动态部分指在进入和退出不同的上下文层指在进入和退出不同的上下文层次时,系统为各层上下文中相关联的寄存器值次时,系统为各层上下文中相关联的寄存器值所保存和恢复的记录。所保存和恢复的
24、记录。 静态部分静态部分包括包括PCB 结构(结构(UNIX系统中的系统中的 PCB结构被分为结构被分为proc结构和结构和user结构两部结构两部分)、将进程虚地址空间映射到物理空间用的分)、将进程虚地址空间映射到物理空间用的有关表格和核心栈。有关表格和核心栈。(核心栈主要用来装载进核心栈主要用来装载进程中所使用系统调用的调用序列程中所使用系统调用的调用序列)图图3.3 UNIX System 进程上下文组成进程上下文组成3.2.3 进程上下文切换l发生在不同进程之间。发生在不同进程之间。l含含3个部分:个部分: 1.保存被切换进程的正文。保存被切换进程的正文。 2. 操作系统调度执行,选新
25、进程。操作系统调度执行,选新进程。 3.恢复被选中进程的上下文。恢复被选中进程的上下文。3.2.4 进程空间任一进程,都有一个自己的地址空间,把该空间称为任一进程,都有一个自己的地址空间,把该空间称为进程空间或虚空间。进程空间或虚空间。进程空间的大小只与处理机的位数有关。程序的执行进程空间的大小只与处理机的位数有关。程序的执行都在进程空间内进行。用户程序、进程的各种控制表都在进程空间内进行。用户程序、进程的各种控制表格等都按一定的结构排列在进程空间中。格等都按一定的结构排列在进程空间中。在在UNIX以及以及Linux等操作系统中的进程空间等操作系统中的进程空间图图3.4 进进程程空空间间执行用
26、户程序-用户态执行系统程序-系统态3.3 进程状态及其转换进程状态及其转换3.3.1 进程状态进程状态一个进程的生命期可以划分为一组状态,这一个进程的生命期可以划分为一组状态,这些状态刻划了整个进程。系统根据些状态刻划了整个进程。系统根据PCB 结结构中的状态值控制进程。构中的状态值控制进程。在进程的生命期内,一个进程至少具有五种在进程的生命期内,一个进程至少具有五种基本状态基本状态: 初始态,终止态,初始态,终止态,执行状态,等待状态和就绪状态执行状态,等待状态和就绪状态。就绪状态就绪状态1.处于就绪状态的进程已经得到除处于就绪状态的进程已经得到除 CPU之外的其他资源,只要由调度得到处理之
27、外的其他资源,只要由调度得到处理机,便可立即投入执行。机,便可立即投入执行。2.就绪状态分为就绪状态分为 内存就绪状态内存就绪状态 外存就绪状态外存就绪状态执行状态执行状态l在单在单CPU系统中,任一时刻处于执行状系统中,任一时刻处于执行状态的进程只能有一个。态的进程只能有一个。l就绪状态的进程经调度选中后进入执行就绪状态的进程经调度选中后进入执行状态。状态。l在某些操作系统中,一个进程在其生命在某些操作系统中,一个进程在其生命期内的执行过程中,总要涉及到用户程期内的执行过程中,总要涉及到用户程序序用户执行状态用户执行状态和操作系统内核程序和操作系统内核程序系系统执行状态统执行状态两部分。两部
28、分。等待状态1. 进程因等待某个事件发生而进程因等待某个事件发生而放弃放弃处理机进处理机进入等待状态。入等待状态。2. 等待状态可根据等待事件的种类而进一步等待状态可根据等待事件的种类而进一步划分为不同的子状态,如内存等待、设备划分为不同的子状态,如内存等待、设备等待、文件等待和数据等待等。等待、文件等待和数据等待等。l优点:系统控制简单,发现和唤醒相应的优点:系统控制简单,发现和唤醒相应的进程较为容易。进程较为容易。l缺点:系统中设置过多的状态又会造成系缺点:系统中设置过多的状态又会造成系统参数和状态转换过程的增加。统参数和状态转换过程的增加。3.3.2 进程状态转换进程状态转换什么样的条件
29、使得进程各状态发生转换什么样的条件使得进程各状态发生转换呢?呢?进程的状态转换是一个非常复杂的过程。进程的状态转换是一个非常复杂的过程。转换时需要使用不同的控制过程,有时转换时需要使用不同的控制过程,有时要借助于硬件触发器才能完成。要借助于硬件触发器才能完成。进程的基本状态l就绪状态(Ready)得到了除CPU以外的所有必要资源l执行状态(Running)已获得处理机,程序正在被执行l等待状态(Blocked)因等待某事件发生而暂时无法继续执行,从而放弃处理机,使程序执行处于暂停状态中断接纳 完成进程调度事件发生 等待某事件初始终止就绪执行等待3.4 进进 程程 控控 制制进程控制是进程和处理
30、机管理的一个重进程控制是进程和处理机管理的一个重要任务。要任务。进程控制进程控制:l系统中系统中创建、撤消创建、撤消进程进程l完成进程各状态间的完成进程各状态间的转换转换l达到多进程高效率并发执行和协调、实达到多进程高效率并发执行和协调、实现资源共享现资源共享l原语原语:一般地,把系统态下执行的某些一般地,把系统态下执行的某些具有特定功能的程序段称为原语。具有特定功能的程序段称为原语。l原语可分为两类:原语可分为两类:1)机器指令级的,特点是执行期间不允机器指令级的,特点是执行期间不允许中断,在操作系统中,它是一个不许中断,在操作系统中,它是一个不可分割的基本单位。可分割的基本单位。2)功能级
31、的,其特点是作为原语的程序功能级的,其特点是作为原语的程序段不允许并发执行。段不允许并发执行。 特点:不能中断,不能并发特点:不能中断,不能并发 控制进程状态转换及创建和撤消进程控制进程状态转换及创建和撤消进程的程序段并发执行,会出现什么情况?的程序段并发执行,会出现什么情况? 在操作系统中,通常把进程控制用程在操作系统中,通常把进程控制用程序段做成原语。用于进程控制的原语有:序段做成原语。用于进程控制的原语有:创建原语创建原语撤消原语撤消原语阻塞原语阻塞原语唤醒原语唤醒原语3.4.1 进程创建与撤消进程创建与撤消1. 进程创建进程创建(1) 由系统程序模块统一创建,例如在批由系统程序模块统一
32、创建,例如在批处理系统中,由操作系统的作业调度程序处理系统中,由操作系统的作业调度程序为用户作业创建相应的进程以完成用户作为用户作业创建相应的进程以完成用户作业所要求的功能。业所要求的功能。(2) 由父进程创建,例如在层次结构的系由父进程创建,例如在层次结构的系统中,父进程创建子进程以完成并行工作。统中,父进程创建子进程以完成并行工作。进程创建(Creat( ))l进程之间的关系:父、子进程与祖先进程:PCB中标识继承归还资源、“父”创建“子”、父撤子消引起创建进程的事件l用户登录、作业调度、提供服务、应用请求进程创建的过程l申请空白PCB、为新进程分配资源、初始化PCB、插入就绪进程队列PD
33、PBPEPCPFPAPIPHPGPJPKPLPMPNHD就绪队列指针PCB0 4PCB1 PCB2PCB3PCB4 12PCB5 0PCB6PCB7 8PCB8 11PCB9PCB10PCB11 25PCB12 5空PCB队列指针RAM程序+数据PCB7 0PCB5 71.由系统统一创建的进程之间的关系是由系统统一创建的进程之间的关系是平等的,它们之间一般不存在资源继平等的,它们之间一般不存在资源继承关系。承关系。2.父进程创建的进程之间则存在隶属关父进程创建的进程之间则存在隶属关系,且互相构成树型结构的家族关系。系,且互相构成树型结构的家族关系。属于某个家族的一个进程可以继承其属于某个家族的
34、一个进程可以继承其父进程所拥有的资源。父进程所拥有的资源。3.无论是哪一种方式创建进程,在系统无论是哪一种方式创建进程,在系统生成时,都必须由操作系统创建一部生成时,都必须由操作系统创建一部分承担系统资源分配和管理工作的分承担系统资源分配和管理工作的系系统进程统进程。创建创建原语原语创建步骤创建步骤: 1.扫描系统的扫描系统的PCB链表,在找到空链表,在找到空PCB之后之后 2.填入调用者的有关参数,最后形成代填入调用者的有关参数,最后形成代表进程的表进程的PCB提供结构。这些参数包括:提供结构。这些参数包括:进程名、进程优先级进程名、进程优先级0 、进程正文段起、进程正文段起始地址始地址0
35、、资源清单、资源清单0等。等。其实现过程如图其实现过程如图3.7。图图3.7 创建原语流图创建原语流图进程撤消(Terminat( ))l 引起进程终止(Termination)的事件正常结束:执行到最后的结束指令、中断异常结束:出现错误或因故障而被迫终止外界干扰:进程应外界的请求而终止运行l 进程撤消的过程检索进程状态、结束并置调度标志、撤销其所有的子进程、归还资源、移出队列一个进程可以向其父进程申请撤消自己;也可以因父进程的被撤销而被同时撤消。PDPBPEPCPFPAPIPHPGPJPKPLPMPNT_RQT()撤消原语撤消原语 1.首先检查首先检查 PCB进程链或进程家族,寻找所进程链或
36、进程家族,寻找所要撤消的进程是否存在。要撤消的进程是否存在。 2.如果找到了所要撤消的进程的如果找到了所要撤消的进程的 PCB结构,结构,则撤消原语释放该进程所占有的资源则撤消原语释放该进程所占有的资源. 3. 之后,把对应的之后,把对应的 PCB结构从进程链或进程结构从进程链或进程家族中摘下并返回给家族中摘下并返回给 PCB空队列。空队列。 4. 如果被撤消的进程有自己的子进程,则撤如果被撤消的进程有自己的子进程,则撤消原语先撤消其子进程的消原语先撤消其子进程的 PCB结构并释放子结构并释放子进程所占用的资源之后,再撤消当前进程的进程所占用的资源之后,再撤消当前进程的 PCB结构和释放其资源
37、。如图结构和释放其资源。如图3.8。图3.8 撤消原语流图3.4.2 进程的阻塞与唤醒进程的阻塞与唤醒阻塞原语阻塞原语:进程从执行状态到等待状态转进程从执行状态到等待状态转换的原语。换的原语。唤醒原语唤醒原语:进程从等待状态到就绪状态转进程从等待状态到就绪状态转换的原语。换的原语。阻塞原语l引起阻塞的事件:引起阻塞的事件:请求系统服务、启动某种操作、数据尚请求系统服务、启动某种操作、数据尚未到达、无新工作可做未到达、无新工作可做l进程阻塞的过程进程阻塞的过程 1.先中断处理机和保存该进程的先中断处理机和保存该进程的CPU现场。现场。 2.将被阻塞进程置将被阻塞进程置“阻塞(等待)阻塞(等待)”
38、状态后状态后插入等待队列中。插入等待队列中。 3. 再转进程调度程序选择新的就绪进程投再转进程调度程序选择新的就绪进程投入运行。入运行。图3.9 阻塞原语图l唤醒原语唤醒原语l引起唤醒的事件引起唤醒的事件与引起阻塞的事件相对应与引起阻塞的事件相对应l进程唤醒的过程进程唤醒的过程阻塞进程所期待的事件出现,有关的进程阻塞进程所期待的事件出现,有关的进程调用唤醒原语,将等待该事件的进程唤醒调用唤醒原语,将等待该事件的进程唤醒将将PCB从阻塞队列中移出,修改从阻塞队列中移出,修改PCB中中的状态信息,再将其插入到就绪进程队列的状态信息,再将其插入到就绪进程队列中中l阻塞与唤醒要匹配使用,以免造成阻塞与
39、唤醒要匹配使用,以免造成“永永久阻赛久阻赛”唤醒原语既可被系统进程调用,也可被事件唤醒原语既可被系统进程调用,也可被事件发生进程调用。发生进程调用。唤醒原语过程:唤醒原语过程:l首先将被唤醒进程从相应的等待队列中摘首先将被唤醒进程从相应的等待队列中摘下,将被唤醒进程置为就绪状态之后,送下,将被唤醒进程置为就绪状态之后,送入就绪队列。入就绪队列。l把被唤醒进程送入就绪队列之后,唤醒原把被唤醒进程送入就绪队列之后,唤醒原语既可以返回原调用程序,也可以转向进语既可以返回原调用程序,也可以转向进程调度,以便让调度程序有机会选择一个程调度,以便让调度程序有机会选择一个合适的进程执行。合适的进程执行。如图
40、如图3.10。图3.10 唤醒原语3.5 进进 程程 互互 斥斥3.5.1 资源共享所引起的制约资源共享所引起的制约进程的并发执行不仅仅是用户程序的执进程的并发执行不仅仅是用户程序的执行开始时间的随机性和提高资源利用率行开始时间的随机性和提高资源利用率的结果,也是的结果,也是资源有限性资源有限性导致资源的竞导致资源的竞争与共享对进程的执行过程进行制约所争与共享对进程的执行过程进行制约所造成的。造成的。进程的并发执行过程中存在哪些制约?进程的并发执行过程中存在哪些制约?1. 临界区临界区在描述一个程序或算法时,总是认为存在一在描述一个程序或算法时,总是认为存在一个伪处理机,可以按程序或算法所规定
41、的个伪处理机,可以按程序或算法所规定的步骤来执行该程序或算法的。步骤来执行该程序或算法的。实际的系统中的一条语句,也是由多条执行实际的系统中的一条语句,也是由多条执行指令构成的。指令构成的。例如:例如:X=X+1;改为汇编语言时:改为汇编语言时:LOAD A,XADDI A,1STORE A,X这里这里 A代表累加器。代表累加器。为了保证程序执行最终结果的正确性,必须对为了保证程序执行最终结果的正确性,必须对并发执行的各进程进行制约,以控制它们的执并发执行的各进程进行制约,以控制它们的执行速度和对资源的竞争。行速度和对资源的竞争。设有两个计算进程设有两个计算进程A,B共享内存共享内存S。其中。
42、其中 S分为三个领域,即系统区、进程工作区和数据区。分为三个领域,即系统区、进程工作区和数据区。这里数据区被划分大小相等的块,每个块中既可能这里数据区被划分大小相等的块,每个块中既可能放有数据,也有可能未放有数据。系统区主要是堆放有数据,也有可能未放有数据。系统区主要是堆栈,其中存放那些空数据块的地址(如图栈,其中存放那些空数据块的地址(如图3.11)。)。图图3.11 多进程共享内存栈区示例多进程共享内存栈区示例令令getspace 为取空数据块过程为取空数据块过程:当进程当进程A或或B要求空数据块时,从堆栈最顶部(要求空数据块时,从堆栈最顶部(top指针指针所指的位置)取出所需数据块。所指
43、的位置)取出所需数据块。release(ad)为释放数据块过程为释放数据块过程:当进程当进程A或或B释放数据块时,则把所释放数据块的地址放释放数据块时,则把所释放数据块的地址放入堆栈顶部。入堆栈顶部。(ad为待释放数据块的地址为待释放数据块的地址)。如果堆栈非空的话,进程如果堆栈非空的话,进程A或或B是可以用是可以用任意的顺序释放和获取数据块的。任意的顺序释放和获取数据块的。 getspace和和 release(ad)可进一步描述可进一步描述为:为: getspace:beginlocalggstack top toptop-1end release(ad):begin top top+1s
44、tack top adend设时刻设时刻t0时,时,top=h0,则进程,则进程PA要求取空数据块要求取空数据块h0,调用调用getspace,而进程而进程PB释放数据块调用释放数据块调用 release(ad),由于并发由于并发,两个程序可能按以下顺序执行:两个程序可能按以下顺序执行:首先首先 release(ad)的第一句执行,的第一句执行,t0:top top+1 top=h0+1;接着接着getspace 执行,得:执行,得:t1:g stack top g=stack h0+1;t2:top top-1 top=h0;再是再是 release(ad)的第二句执行,得:的第二句执行,得
45、:t3:stack top ad stack h0 ad;其结果是调用其结果是调用getspace的进程的进程PA取到的是取到的是h0+1中的一中的一个未定义值,而调用个未定义值,而调用release(ad)的进程的进程PB把所释放的把所释放的空块地址空块地址ad重复放入了重复放入了h0中。中。toph0+1 执行顺序执行顺序:top top+1gstack top toptop-1stack top adh0 ad先释放一块,入栈,再回先释放一块,入栈,再回收一块,出栈:收一块,出栈:正确顺序正确顺序:top top+1stack top ad gstack top toptop-1怎样保证
46、上述执行结果的正确性呢?怎样保证上述执行结果的正确性呢? 把不允许多个并发进程交叉执行的一段把不允许多个并发进程交叉执行的一段程序程序称为称为临界部分(临界部分(critical section )或临界区(或临界区(critical region)。)。临界区是由属于不同并发进程的程序段临界区是由属于不同并发进程的程序段共享公用数据或公用数据变量而引起的,共享公用数据或公用数据变量而引起的,临界区不可能用增加硬件的方法来解决。临界区不可能用增加硬件的方法来解决。临界区也可以称为访问公用数据的那段临界区也可以称为访问公用数据的那段程序。程序。2. 间接制约间接制约l类(类(class):不允许
47、交叉执行的临界区不允许交叉执行的临界区按不同的公用数据划分为不同的集合按不同的公用数据划分为不同的集合,这这些集合称为类。些集合称为类。l对类给定一个唯一的标识名,系统就会对类给定一个唯一的标识名,系统就会容易地区分它们。可用下列标准形式来容易地区分它们。可用下列标准形式来描述临界区:描述临界区:when类名类名do临界区临界区od设类设类 getspace,release 的类名为的类名为sp,则则getspace和和release(ad)可重新描述为:可重新描述为:getspace: when sp do getspcestack top toptop-1 odrelease(ad): w
48、hen sp do top top+1 stacktop ad od间接制约间接制约:由于共享某一公有资源而引起由于共享某一公有资源而引起的在临界区内不允许并发进程交叉执行的在临界区内不允许并发进程交叉执行的现象,称为由共享公有资源而造成的的现象,称为由共享公有资源而造成的对并发进程执行速度的间接制约,简称对并发进程执行速度的间接制约,简称间接制约。间接制约。“间接间接”二字主要是指各并发进程的二字主要是指各并发进程的速速度度受公有资源制约,而不是进程间直接受公有资源制约,而不是进程间直接制约的意思。制约的意思。引入互斥。引入互斥。3. 什么是互斥什么是互斥定义:一组并发进程中的一个或多个程定
49、义:一组并发进程中的一个或多个程序段,因共享某一公有资源而导致它们序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行。必须以一个不允许交叉执行的单位执行。OR:不允许两个以上的共享该资源的并发不允许两个以上的共享该资源的并发进程同时进入临界区称为进程同时进入临界区称为互斥互斥。l考虑类中只有一个元素,也就是只有考虑类中只有一个元素,也就是只有一个程序段的情况。这时程序段本身一个程序段的情况。这时程序段本身为公有资源被并发进程共享。一般情为公有资源被并发进程共享。一般情况下,作为程序段的一个过程不允许况下,作为程序段的一个过程不允许多个进程共同访问它。多个进程共同访问它。l若该
50、过程是纯过程,则各并发进程可若该过程是纯过程,则各并发进程可以同时访问它。以同时访问它。 纯过程纯过程是指在执行过程中不改变过程是指在执行过程中不改变过程自身代码的一类过程。自身代码的一类过程。互斥执行的准则:互斥执行的准则:(1) 不能假设各并发进程的相对执行速度。不能假设各并发进程的相对执行速度。 (2) 并发进程中的某个进程不在临界区时,并发进程中的某个进程不在临界区时,它不阻止其他进程进入临界区。它不阻止其他进程进入临界区。(3) 并发进程中的若干个进程申请进入临并发进程中的若干个进程申请进入临界区时,只能允许一个进程进入。界区时,只能允许一个进程进入。(4) 并发进程中的某个进程申请
51、进入临界并发进程中的某个进程申请进入临界区时开始,应在有限时间内得以进入区时开始,应在有限时间内得以进入临界区。临界区。3.5.2 互斥的加锁实现如何实现?如何实现?对临界区对临界区加锁!加锁!当某个进程进入临界区之后,它将锁上临当某个进程进入临界区之后,它将锁上临界区,直到它退出临界区时为止。并发进界区,直到它退出临界区时为止。并发进程在申请进入临界区时,首先测试该临界程在申请进入临界区时,首先测试该临界区是否是上锁的。如果该临界区已被锁住,区是否是上锁的。如果该临界区已被锁住,则该进程要等到该临界区开锁之后才有可则该进程要等到该临界区开锁之后才有可能获得临界区。能获得临界区。例如例如:只能
52、从里面上锁的厨房。只能从里面上锁的厨房。设临界区的类名为设临界区的类名为设锁定位设锁定位 keykey表示该锁定位属于类名为的临表示该锁定位属于类名为的临界区。界区。加锁后的临界区程序:加锁后的临界区程序:lock(key )临临 界界 区区unlock(key )keys=0 表示已上锁表示已上锁keys=1 表示没上锁表示没上锁上锁上锁lock:while (key =0); key =0;开锁开锁unlock: key =1;问题:可能有两个以上的多个进程同时进入临界区问题:可能有两个以上的多个进程同时进入临界区3.5.3 信号量和,原语信号量和,原语1. 信号量(信号量(semapho
53、re)加锁法中,循环测试锁定位将损耗较加锁法中,循环测试锁定位将损耗较多的多的 CPU计算时间。如果一组并发计算时间。如果一组并发进程的进程数较多,且由于每个进程进程的进程数较多,且由于每个进程在申请进入临界区时都得对锁定位进在申请进入临界区时都得对锁定位进行测试,这种开销是很大的。行测试,这种开销是很大的。使用加锁法实现进程间互斥时使用加锁法实现进程间互斥时,可能导致可能导致在某些情况下出现不公平现象。在某些情况下出现不公平现象。PAA:lock(key) unlock(key)Goto APBB:lock(key ) unlock(key )Goto BPB可能可能处于永处于永久饥饿久饥饿
54、问题的原因?问题的原因?l一个进程能否进入临界区是依靠自己一个进程能否进入临界区是依靠自己调用调用lock过程去测试相应的锁定位。过程去测试相应的锁定位。l每个进程能否进入临界区是依靠自己每个进程能否进入临界区是依靠自己的测试判断。这样没有获得执行机会的测试判断。这样没有获得执行机会的进程当然无法判断,从而出现不公的进程当然无法判断,从而出现不公平现象。平现象。l获得了测试机会的进程又因需要测试获得了测试机会的进程又因需要测试而损失一定的而损失一定的CPU 时间。时间。荷兰科学家荷兰科学家E.W.Dijkstra提出:提出:信号量的概念和、原语信号量的概念和、原语(和分别是和分别是荷兰语荷兰语
55、 Passeren 和和Verhoog 的头一个字母,的头一个字母,相当于英文的相当于英文的pass和和increment的意思的意思)在操作系统中,信号量在操作系统中,信号量sem是一整数。是一整数。在在sem大于等于零则代表可供并发进程大于等于零则代表可供并发进程使用的资源实体数;使用的资源实体数;sem小于零时则表示正在等待使用临界小于零时则表示正在等待使用临界区的进程数。区的进程数。sem初值?初值?2. ,原语,原语lsem是与临界区内所使用的公用资源有关是与临界区内所使用的公用资源有关的信号量。的信号量。l信号量信号量sem的数值仅能由,原语操作的数值仅能由,原语操作改变。改变。l
56、一次原语操作使得信号量一次原语操作使得信号量sem减减1。l一次原语操作将使得信号量一次原语操作将使得信号量sem加加1。原语:原语:(1) sem减减 1;(2) 若若sem减减1后仍大于或等于零,则进后仍大于或等于零,则进程继续执行;程继续执行;(3) 若若sem减减1后小于零,则该进程被阻后小于零,则该进程被阻塞后与该信号相对应的队列中,然后转塞后与该信号相对应的队列中,然后转进程调度。进程调度。原语操作的功能框图如图原语操作的功能框图如图3.11。原语:原语:(1) sem加加1;(2) 若相加结果大于零,进程继续执行;若相加结果大于零,进程继续执行;(3) 若相加结果小于或等于零,则
57、从该若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。后再返回原进程继续执行或转进程调度。原语操作的功能框图如图原语操作的功能框图如图3.12。图图3.11 原语操作功能原语操作功能图图 3.12原语操作功原语操作功能能,过程要以原语实现。且在,过程要以原语实现。且在,原语执行期间不允许中断发生。原语执行期间不允许中断发生。为什么?为什么?实现过程描述如下:实现过程描述如下:(sem):): begin封锁中断;封锁中断;lock(lockbit)valsem=valsem-1if valsem0保护当前进程保
58、护当前进程CPU现场现场当前进程状态置为当前进程状态置为等待等待将当前进程插入信号将当前进程插入信号sem等待队列等待队列转进程调度转进程调度fiunlock(lockbit);开放中断;开放中断 end(sem):): begin 封锁中断;封锁中断; lock(lockbit) vasem=valsem+1 if valsem0 localk 从从sem等待队列中选取一等待进程,将其等待队列中选取一等待进程,将其指针置入指针置入k中中 将将k插入就绪队列插入就绪队列 进程状态置进程状态置“就绪就绪”fiunlock(lockbit);开放中断;开放中断 end3.5.4 用,原语实现进程互
59、斥设信号量设信号量sem是用于互斥的信号量,且是用于互斥的信号量,且其初值为其初值为1,表示没有并发进程使用该临界表示没有并发进程使用该临界区。区。 : (sem)临界区临界区 (sem): :l进程进入临界区进程进入临界区前前,必须先执行原,必须先执行原语操作以将信号量语操作以将信号量sem减减1。l进程完成对临界区的操作进程完成对临界区的操作后后,必须执,必须执行原语(加行原语(加1)操作以释放它所占用)操作以释放它所占用的临界区。的临界区。l由于信号量初始值为由于信号量初始值为 1,所以,任一,所以,任一进程在执行原语操作之后将进程在执行原语操作之后将sem的的值变为值变为0,表示该进程
60、可以进入临界区。,表示该进程可以进入临界区。在该进程未执行原语操作之前如有另一进程在该进程未执行原语操作之前如有另一进程想进入临界区的话,它也应先执行想进入临界区的话,它也应先执行 原语操原语操作,从而使作,从而使sem 的值变为的值变为-1,因此,第二个,因此,第二个进程将被阻塞。直到第一个进程执行原语操进程将被阻塞。直到第一个进程执行原语操作之后,作之后,sem 的值变为的值变为0,从而可唤醒第二个,从而可唤醒第二个进程进入就绪队列,经调度后再进入临界区。进程进入就绪队列,经调度后再进入临界区。在第二个进程执行完原语操作之后,如果没在第二个进程执行完原语操作之后,如果没有其他进程申请进入临
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初级会计职称全真模拟考试题(含答案解析)
- 手术室管理制度
- 厂区门禁管理实施细则
- 塑胶跑道施工专项方案
- 城市体检样本小区实地踏勘工作指引
- 2026‑2031年中国无人驾驶出租行业市场调查研究及发展前景预测报告
- 物业行业绿化部绿化主管绿化养护手册(执行版)
- 年回收废旧铅酸蓄电池20000吨项目环评报告表
- 罗樾之教授自拟“罗氏再生乾坤再造血合剂”
- 2025-2026年福建省部编版小学六年级道德与法治第9课练习题
- JGJ/T235-2011建筑外墙防水工程技术规程
- 如果历史是一群喵
- 民间借款和解协议书
- 土地使用权代持协议
- 金蝶云星空操作手册
- 《电脑基础操作》课件
- 卵巢纤维瘤疾病演示课件
- 四年级下册科学《谁在运动》-课件
- 城市安全问题与城市防灾减灾课件
- 光伏建设工艺流程教材课件
- 马工程西方经济学(第二版)教学课件-5
评论
0/150
提交评论