1、2022-6-9太湖学院信机系12.1进程的基本概念进程的基本概念I1C1P1I2C2P2程序段的顺序执行程序段的顺序执行2022-6-9太湖学院信机系2程序段中语句的顺序执行程序段中语句的顺序执行 S1:a:=x+y; S2:b:=a-5; S3:c:=b+1;S1S2S32022-6-9太湖学院信机系32.1.2前趋图定义前趋图定义P1P2P3P4S1S2S32022-6-9太湖学院信机系4 试画出下面几条语句的前趋图试画出下面几条语句的前趋图:S1: a=5-x; S2: b=a*x; S3: c=4*x;S4: d=b+c; S5: e=d+3。2022-6-9太湖学院信机系52.1.
2、3 程序的并发执行程序的并发执行I1I2I3I4C1C2C3C4P1P2P3P4t思考:思考: 哪些程序段的执行必须是顺哪些程序段的执行必须是顺序的?为什么?序的?为什么? 哪些程序段的执行是可并行的?为哪些程序段的执行是可并行的?为什么?什么?2022-6-9太湖学院信机系6程序的并发执行程序的并发执行(2)2022-6-9太湖学院信机系72.1.4进程的特征和状态进程的特征和状态2022-6-9太湖学院信机系82.1.4进程的特征和状态进程的特征和状态(2)2022-6-9太湖学院信机系9进程与程序的区别进程与程序的区别进程进程程序程序动态动态静态静态暂时暂时永久永久并发并发串行串行PCB
3、-多个多个一个一个一个一个多个多个2022-6-9太湖学院信机系10例题:设有设有2个程序,程序个程序,程序P打印工资报表的程序,程序打印工资报表的程序,程序C是计算是计算1000以以内所有素数并显示最后结果的程序。内所有素数并显示最后结果的程序。(1)在不支持进程运行环境的操作系统下运行。)在不支持进程运行环境的操作系统下运行。(2)在支持进程运行的操作系统环境下运行。)在支持进程运行的操作系统环境下运行。运行过程如下:运行过程如下:在不支持进程运行的环境下:在不支持进程运行的环境下: 依次运行程序依次运行程序P、程序、程序C。可以看到先是打印机不停地打印工资报。可以看到先是打印机不停地打印
4、工资报表,打完后,接着运行程序表,打完后,接着运行程序C,不停地计算,最后显示计算结果。,不停地计算,最后显示计算结果。在支持进程运行的环境下:在支持进程运行的环境下: 创建进程创建进程P和和C,由于两个进程分别是,由于两个进程分别是I/O量较大和计算量较大的量较大和计算量较大的进程,故在系统进程调度的控制下,两个进程并发执行。可以看进程,故在系统进程调度的控制下,两个进程并发执行。可以看到打印机不断地打印工资报表,而处理机不停地计算,最后屏幕到打印机不断地打印工资报表,而处理机不停地计算,最后屏幕显示计算的结果。显示计算的结果。2022-6-9太湖学院信机系112.1.4进程的特征和状态进程
5、的特征和状态(3)为了描述和控制进程的运行,系统为每一个进程定义为了描述和控制进程的运行,系统为每一个进程定义了一个数据结构,即进程控制块了一个数据结构,即进程控制块PCB(Process Control Block),系统根据系统根据PCB,感知该进程的存在,感知该进程的存在,故称故称PCB是进程存在的标志。是进程存在的标志。通常在一个实际系统中,通常在一个实际系统中,PCB的总数时固定的,该数的总数时固定的,该数目规定了系统所允许拥有的进程数目,同时将所有目规定了系统所允许拥有的进程数目,同时将所有的的PCB形成一个结构数组(或称形成一个结构数组(或称PCB表),存放在表),存放在系统的数
6、据区里。系统的数据区里。一个进程的一个进程的PCB机构全部或部分常驻内存。机构全部或部分常驻内存。进程的静态描述由三部分组成:进程的静态描述由三部分组成:PCB,有关程序段,有关程序段,数据集。数据集。2022-6-9太湖学院信机系122.1.4进程的特征和状态进程的特征和状态(3)2022-6-9太湖学院信机系13就绪就绪阻塞阻塞运行运行时间片完时间片完(剥剥夺处理机夺处理机)进程调度进程调度发生等待发生等待事件事件等待事件等待事件结束结束图图25 进程的三种基本状态及其转换进程的三种基本状态及其转换创建创建2022-6-9太湖学院信机系142143执行态执行态就绪态就绪态等待态等待态1、某
7、系统的进程状态转换图如上图所示,请回答:、某系统的进程状态转换图如上图所示,请回答:(1)引起各种状态转换的典型事件有哪些?)引起各种状态转换的典型事件有哪些?(2)当我们观察系统中某些进程时,能够看到某一)当我们观察系统中某些进程时,能够看到某一进程产生的一次状态转换能引起另一个进程作一次进程产生的一次状态转换能引起另一个进程作一次状态转换。在什么情况下,当一个进程发生转换状态转换。在什么情况下,当一个进程发生转换3时,时,能立即引起另一进程发生转换能立即引起另一进程发生转换1?试说明是否会发生?试说明是否会发生这些因果转换:这些因果转换:21;32;41。 2022-6-9太湖学院信机系1
8、52.1.4进程的特征和状态进程的特征和状态(4)2022-6-9太湖学院信机系16图26 具有挂起状态的进程状态图运行运行活动活动就绪就绪静止静止就绪就绪活动活动阻塞阻塞静止静止阻塞阻塞激活激活挂起挂起激活激活挂起挂起唤醒唤醒唤醒唤醒挂起挂起请求请求I/O2022-6-9太湖学院信机系172.1.5进程控制块进程控制块进程标识符进程标识符进程状态进程状态现场现场优先级优先级阻塞原因阻塞原因程序地址程序地址同步机制同步机制资源清单资源清单家族关系家族关系链接指针链接指针2022-6-9太湖学院信机系18描述信息(标识)描述信息(标识) 进程名或进程标识符进程名或进程标识符 用户名或用户标识符(
9、指示拥有该进程的用户)用户名或用户标识符(指示拥有该进程的用户) 家族关系(父进程和子进程的标识符)家族关系(父进程和子进程的标识符)调度信息调度信息 进程的当前状态进程的当前状态 优先级优先级 调度所需的其他信息调度所需的其他信息 事件(执行事件(执行-等待)等待)2022-6-9太湖学院信机系19控制信息控制信息 程序和数据的地址程序和数据的地址 进程同步和通信机制进程同步和通信机制 资源清单资源清单 链接指针(同一队列的下一个链接指针(同一队列的下一个PCB的首地址)的首地址)处理机状态(处理机状态(CPU现场保护)现场保护) 通用通用R PC指令计数器指令计数器 程序状态字程序状态字P
10、SW 用户栈指针用户栈指针2022-6-9太湖学院信机系20CPU现场保护信息(进程上下文)现场保护信息(进程上下文)当处理机被中断时,各种当处理机被中断时,各种Register的内容都必须保存在被中断进的内容都必须保存在被中断进程的程的PCB中,以便在改进程重新执行时,能从断点继续执行。中,以便在改进程重新执行时,能从断点继续执行。(1)通用通用R(用户可视寄存器)(用户可视寄存器)8-32个个(在在RISC结构中,可超过结构中,可超过100)(2)PC(next)(3)PSW:含状态信息(条件码的执行方式,中断屏蔽标志):含状态信息(条件码的执行方式,中断屏蔽标志)(4)用户栈指针:每个用
11、户进程有一个或若干个与之相关的系统用户栈指针:每个用户进程有一个或若干个与之相关的系统栈,用户存放过程和系统调用参数和调用地址。栈,用户存放过程和系统调用参数和调用地址。由于由于PCB中包含较多的信息(占几百中包含较多的信息(占几百-几千几千Byte),在有的系统),在有的系统中只含最常用部分(标识、进程状态信息、用于调度的信息)中只含最常用部分(标识、进程状态信息、用于调度的信息)常驻内存,其它部分则存在于外存之中,待该进程将要执行常驻内存,其它部分则存在于外存之中,待该进程将要执行时,与其它数据一起装入内存。时,与其它数据一起装入内存。2022-6-9太湖学院信机系21进程上下文进程上下文
12、进程上下文实际上是进程执行活动全过程的进程上下文实际上是进程执行活动全过程的静态描述静态描述。进。进程的上下文是其相应的程序地址空间的内容,硬件程的上下文是其相应的程序地址空间的内容,硬件R的的内容以及与该进程有关的核心数据结构组成的。内容以及与该进程有关的核心数据结构组成的。具体包括:计算机系统中与该进程有关的各种具体包括:计算机系统中与该进程有关的各种R值,程序值,程序段经过编译,连接后形成的机器指令代码段(段经过编译,连接后形成的机器指令代码段(text)数)数据段及各种堆栈的值和据段及各种堆栈的值和PCB块。块。2022-6-9太湖学院信机系22在一个系统中,通常可拥有数十个、数百个,
13、乃至数在一个系统中,通常可拥有数十个、数百个,乃至数千个千个PCBPCB:为能对它们进行有效的管理,应当用适:为能对它们进行有效的管理,应当用适当的方式将它们组织起来。当的方式将它们组织起来。 目前常用的组织方式有两种:目前常用的组织方式有两种:链接方式,索引方式链接方式,索引方式。 系统中进程队列分类:就绪队列、等待队列、运行系统中进程队列分类:就绪队列、等待队列、运行队列。队列。就绪队列:整个系统一个。就绪队列:整个系统一个。等待队列:每个等待事件一个。等待队列:每个等待事件一个。运行队列:单机系统中整个系统一个。运行队列:单机系统中整个系统一个。2022-6-9太湖学院信机系232.1.
14、5进程控制块(2)执行指针执行指针就绪队列指针就绪队列指针阻塞队列指针阻塞队列指针空闲队列指针空闲队列指针PCB14PCB23PCB30PCB48PCB5PCB67PCB79PCB80PCB911多个多个2022-6-9太湖学院信机系242.1.5进程控制块进程控制块(3)2022-6-9太湖学院信机系25PCB1PCB2PCB3PCB4PCB5PCB6PCB7执行指针执行指针就绪表指针就绪表指针阻塞表指针阻塞表指针就绪索引表就绪索引表阻塞索引表阻塞索引表2022-6-9太湖学院信机系262.2 进程控制进程控制为了防止操作系统及关键数据如为了防止操作系统及关键数据如PCB等,受到用户程序等,
15、受到用户程序有意或无意的破坏,通常将处理机的执行状态分成系有意或无意的破坏,通常将处理机的执行状态分成系统态和用户态两种:统态和用户态两种:(1)系统态,又称核心态。它具有较高的特权,能执行)系统态,又称核心态。它具有较高的特权,能执行一切指令,访问所有寄存器和存储区。一切指令,访问所有寄存器和存储区。(2)用户态,具有较低特权的执行状态,它只能执行规)用户态,具有较低特权的执行状态,它只能执行规定的指令,访问指定的寄存器和存储区。定的指令,访问指定的寄存器和存储区。OS内核通常是运行在系统态的,而进程控制是由内核通常是运行在系统态的,而进程控制是由OS内内核实现的。核实现的。OS内核:内核:
16、运行在系统态的,包括对进程操作和控运行在系统态的,包括对进程操作和控制的最基本的原语和数据结构。制的最基本的原语和数据结构。2022-6-9太湖学院信机系27概念概念进程控制:进程控制:就是系统使用一些具有特定功能的程序段来创建、撤销进就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成各进程状态间的转换,从而达到多进程高效程以及完成各进程状态间的转换,从而达到多进程高效率并发执行和协调,实现资源共享的目的。率并发执行和协调,实现资源共享的目的。原语原语(Atomic Operation):系统态下执行的某些具有特):系统态下执行的某些具有特定功能的程序段称为原语。定功能的程序段称为原
17、语。 机器指令级机器指令级:不可分割,不允许初始化不可分割,不允许初始化 功能级:不允许并发执行功能级:不允许并发执行(原语本身由若干条指令组成,要么全做,要么全不做)(原语本身由若干条指令组成,要么全做,要么全不做)在在OS中,大都把进程控制用程序段做成原语。中,大都把进程控制用程序段做成原语。比如:创建原语、撤消原语、阻塞原语、唤醒原语、挂起比如:创建原语、撤消原语、阻塞原语、唤醒原语、挂起原语、激活原语原语、激活原语2022-6-9太湖学院信机系28ABEKDFGHMLJIC2022-6-9太湖学院信机系292022-6-9太湖学院信机系302.2.1 进程的创建进程的创建(2)2022
18、-6-9太湖学院信机系31创建原语创建原语Procedure create (n,s0,P0,m0,R0,acc)begini:=get internal name(n); 获得内部名获得内部名i.id :=n; 填外部名填外部名i.priority := P0; 填优先级表填优先级表i.CPUstate:= s0; 填填CPU初始状态初始状态i.mainstore:= m0; 填写主存区域填写主存区域i.resources:= R0; 填写资源清单填写资源清单i.status:=readys; 填写进程状态填写进程状态j:=EP; 获取调用者内部标识获取调用者内部标识i.parent:=j;
19、 填入填入i进程的父进程进程的父进程jj.progeny :=; i的家族指针为空的家族指针为空i.progeny:=i; 把把i填入其父进程填入其父进程PCB的家族指针处的家族指针处i.state:=RQ; i所在状态队列首指针所在状态队列首指针insert(RQ,i); 把把i进程插入进程插入RQ队尾队尾end 2022-6-9太湖学院信机系322.2.2 进程的撤消(终止)进程的撤消(终止)33撤消原语撤消原语2022-6-9太湖学院信机系342022-6-9太湖学院信机系352.2.3 进程的阻塞与唤醒进程的阻塞与唤醒2022-6-9太湖学院信机系36Procedure blockbe
20、gini:=EP;从执行进程的指针从执行进程的指针EP获得调用者内部标获得调用者内部标识符识符i;stop(i);i.status:=“blocka”;i.state:=WQ (r);填写阻塞队列首指针填写阻塞队列首指针insert (WQ (r) ,i);把把i插入插入WQ队尾;队尾;scheduler;转调度程序转调度程序end2022-6-9太湖学院信机系372.2.3 进程的阻塞与唤醒进程的阻塞与唤醒(2)2022-6-9太湖学院信机系382022-6-9太湖学院信机系392.2.4 进程的挂起与激活进程的挂起与激活 2022-6-9太湖学院信机系40Procedure suspend
21、 (n ,a)begini:=get internal name(n);s:=i.status;if s=“Running” then stop(i);a:=copy PCB(i); i.status:= if s=“blocka” then “blocks” else “readys”;if s=“Running” then scheduler else continue;end2022-6-9太湖学院信机系412022-6-9太湖学院信机系42Procedure active name(n)begini:=get internal name(n);if i.status=“readys”
22、then “readya” else “blocka”;if i.status=“readya” then scheduler else continue;end2022-6-9太湖学院信机系432.3进程间的相互作用进程间的相互作用进程的互斥进程的互斥进程的同步进程的同步信号量及信号量及P P、V V操作。操作。(解决进程同步互斥问题)(解决进程同步互斥问题)2022-6-9太湖学院信机系442.3.1进程间的联系进程间的联系相交进程:指多个并发进程在逻辑上的某种联系相交进程:指多个并发进程在逻辑上的某种联系无关进程:在逻辑上无任何联系的进程无关进程:在逻辑上无任何联系的进程直接作用和间接作
23、用直接作用和间接作用直接作用:直接作用:进程间的相互联系是有意识的安排的,进程间密切联进程间的相互联系是有意识的安排的,进程间密切联系。直接作用只发生在相交进程间系。直接作用只发生在相交进程间间接作用:间接作用:进程间要通过某种中介发生联系,是无意识安排的,进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可以发生在无关进程之可发生在相交进程之间,也可以发生在无关进程之间。间。2022-6-9太湖学院信机系45进程间的关系表进程间的关系表相互感知的程度相互感知的程度交互关系交互关系一个进程对其他进一个进程对其他进程的影响程的影响相互不感知(完全相互不感知(完全不了解其他进程
24、的不了解其他进程的存在)存在)竞争(竞争(competition) 一个进程的操作对一个进程的操作对其他进程的结果无其他进程的结果无影响影响间接感知(双方都间接感知(双方都与第三方交互:如与第三方交互:如共享资源)共享资源)通过共享进行协作通过共享进行协作一个进程的结果依一个进程的结果依赖于从其他进程获赖于从其他进程获得的信息得的信息直接感知(双方直直接感知(双方直接交互:如通信)接交互:如通信)通过通信进行协作通过通信进行协作(大批量的数据传(大批量的数据传递)递)一个进程的结果依一个进程的结果依赖于从其他进程获赖于从其他进程获得的信息得的信息2022-6-9太湖学院信机系46进程同步(直接
25、作用)进程同步(直接作用)2022-6-9太湖学院信机系47司机司机 P1While(true)启动汽车;启动汽车;正常行驶;正常行驶;到站停车到站停车售票员售票员 P2While(true)关门;关门;售票;售票;开门;开门;2022-6-9太湖学院信机系48进程的互斥(间接作用)进程的互斥(间接作用)进程的互斥进程的互斥:mutual exclusion由于各进程要求共享资源,而有些资源需要互斥使用,由于各进程要求共享资源,而有些资源需要互斥使用,因此进程间竞争使用这些资源,进程的这种关系称因此进程间竞争使用这些资源,进程的这种关系称为进程的互斥。为进程的互斥。临界资源临界资源:criti
26、cal resource系统中某些资源一次只允许一个进程使用,称这样的系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量。资源为临界资源或互斥资源或共享变量。与时间有关的错误与时间有关的错误2022-6-9太湖学院信机系49临界区临界区(互斥区):(互斥区):critical section一个程序片段的集合,这些程序片段分散在不同的进一个程序片段的集合,这些程序片段分散在不同的进程中,对某个共享的数据结构(共享资源)进行操程中,对某个共享的数据结构(共享资源)进行操作。作。在进程中,涉及到临界资源的程序片段叫临界区在进程中,涉及到临界资源的程序片段叫临界区,多,
27、多个进程的临界区称为相关临界区。个进程的临界区称为相关临界区。2022-6-9太湖学院信机系50进程的互斥作用(间接作用)进程的互斥作用(间接作用)2022-6-9太湖学院信机系512022-6-9太湖学院信机系52使用临界区的原则:使用临界区的原则:有空让进有空让进无空等待无空等待多中选一多中选一有限等待有限等待让权等待让权等待2022-6-9太湖学院信机系53前提:任何进程无权停止其它进程的运行前提:任何进程无权停止其它进程的运行 进程之间相对运行速度无硬性规定进程之间相对运行速度无硬性规定进程互斥的解决有两种做法:进程互斥的解决有两种做法: 由竞争各方平等协商由竞争各方平等协商 引入进程
28、管理者由管理者来协调竞争各方对互斥引入进程管理者由管理者来协调竞争各方对互斥资源的使用资源的使用具体的实现方法:具体的实现方法:硬件(当一个进程进入临界区就屏蔽所有中断,成本硬件(当一个进程进入临界区就屏蔽所有中断,成本高,并行程度会降低)高,并行程度会降低)软件(用编程解决,但常常忙等待)软件(用编程解决,但常常忙等待)2022-6-9太湖学院信机系54软件方法软件方法 1free:表示临界区的标志:表示临界区的标志 true:有进程在临界区:有进程在临界区 false:无进程在临界区(初值):无进程在临界区(初值) while (free); free=true; 临界区临界区 free=
29、false;2022-6-9太湖学院信机系55软件方法软件方法 2turn: true P进程进入临界区进程进入临界区 false Q进程进入临界区进程进入临界区 P: while (not turn); turn=false; Q: while (turn); turn=true; 临界区临界区临界区临界区交替使用交替使用某进程失败某进程失败2022-6-9太湖学院信机系56例:例:进程进程 0 while(flag1);flag0:=true;flag0:=false;进程进程 1while(flag0);flag1:=true;flag1:=false;临界区临界区临界区临界区存在问题:
30、可能有两个进程同时进入临界区,存在问题:可能有两个进程同时进入临界区,达不到互斥的效果达不到互斥的效果2022-6-9太湖学院信机系57改进后:改进后:进进程 0 flag0:=true;while(flag1);flag0:=false;进进程 1flag1:=true;while(flag0);flag1:=false;临界区临界区临界区临界区存在问题:造成谦让,两个进程同时处于等待存在问题:造成谦让,两个进程同时处于等待状态状态2022-6-9太湖学院信机系58继续改进:继续改进:进程进程 0 flag0:=true;while(flag1)begin flag0:=false; 等会;
31、等会; flag0:=true;endflag0:=false;进程进程 1 flag1:=true;while(flag0)begin flag1:=false; 等会;等会; flag1:=true;endflag1:=false;临界区临界区临界区临界区2022-6-9太湖学院信机系59软件方法软件方法 3的形成:的形成:P进程进程pturn=true;while (qturn);pturn=false;Q进程进程qturn=true;while (pturn);qturn=false;pturn , qturn :初值为初值为falseP进入临界区的条件:进入临界区的条件:pturn
32、not qturnQ进入临界区的条件:进入临界区的条件:not pturn qturn临界区临界区临界区临界区存在问题:可能造成死锁存在问题:可能造成死锁2022-6-9太湖学院信机系60软件方法软件方法 4(Dekker 算法)算法)进程进程 P: pturn:= true; while (qturn) if (turn= =2) pturn:=false; while (turn= =2); pturn:=true; turn:=2; pturn:=false 进程进程 Q: qturn:= true; while (pturn) if (turn= =1) qturn:=false; w
33、hile (turn= =1); qturn:=true; turn:=1; qturn:=false 在方法在方法 3的基础上引入的基础上引入turn枚举类型,初值可以任意设枚举类型,初值可以任意设置。在这里:置。在这里:turn=1(P进),进),turn=2(Q进)进)临界区临界区临界区临界区2022-6-9太湖学院信机系61软件算法有其缺点:软件算法有其缺点:u忙等待(用循环在不停地等待)忙等待(用循环在不停地等待)u实现过于复杂,需要较高的编程技巧实现过于复杂,需要较高的编程技巧2022-6-9太湖学院信机系62改进的改进的 Dekker 算法(算法(Peterson 算法)算法)P
34、: pturn:=true; turn:=2; while (qturn & turn= =2); pturn:=false;Q: qturn:=true; turn:=1; while (pturn & turn= =1); qturn:=false;临界区临界区临界区临界区2022-6-9太湖学院信机系632.3.2进程的同步机制进程的同步机制2022-6-9太湖学院信机系64同步机制满足的基本要求:同步机制满足的基本要求:描述能力描述能力可以实现可以实现效率高效率高使用方便使用方便2022-6-9太湖学院信机系65信号量:信号量:semaphore 是一个数据结构是一个数据结构 定义如下
35、:定义如下:struct semaphore int value; pointer_PCB queue; 信号量说明:信号量说明:semaphore s;2022-6-9太湖学院信机系66信号量机制的提出者:信号量机制的提出者:伟大的计算机科学家伟大的计算机科学家 Dijkstra,主要贡献:,主要贡献: 提出提出“goto有害论有害论”; 提出信号量和提出信号量和PV原语原语; 解决了有趣的解决了有趣的“哲学家聚餐哲学家聚餐”问题问题; 最短路径算法最短路径算法(SPF)的创造者的创造者; 第一个第一个Algol 60编译器的设计者和实现者编译器的设计者和实现者; 与与D. E. Knuth
36、并称为我们这个时代最伟大的计并称为我们这个时代最伟大的计算机科学家的人算机科学家的人 2022-6-9太湖学院信机系672.3.3 信号量机制信号量机制P、V 操作操作 (两个原语)(两个原语)2022-6-9太湖学院信机系68关于信号量的问题关于信号量的问题信号量:信号量: 互斥:互斥:wait与与signal在同一个进程中在同一个进程中 同步:同步:wait与与signal在不同的进程中在不同的进程中信号量的物理意义:信号量的物理意义: S0:表示可用资源的个数:表示可用资源的个数 S=0:表示无资源,无等待进程:表示无资源,无等待进程 S0: S 表示等待队列中进程个数表示等待队列中进程
37、个数2022-6-9太湖学院信机系692. 记录型信号量记录型信号量wait(S) s.value = s.value-; if ( s.value 0 ) 该进程状态置为等待状态该进程状态置为等待状态 将该进程的将该进程的PCB插入相应的等插入相应的等 待队列末尾待队列末尾 s.value 2022-6-9太湖学院信机系70signal(S) s.value = s.value+; if (s.value0:表示可用资源的个数:表示可用资源的个数S=0:表示无资源,无等待进程:表示无资源,无等待进程S=1&s2=1& sn =1)/满足资源要求时的处理满足资源要求时的处理for (i=1;i
38、=n;i+)si=si-1;/注:与注:与wait的处理不同这里在确信可满足资源需求时才进行减的处理不同这里在确信可满足资源需求时才进行减1操作操作break;else/某些资源不够时的处理某些资源不够时的处理调用进程进入第一个小于调用进程进入第一个小于1信号量的等待队列信号量的等待队列sj.queue;阻塞调用进程;阻塞调用进程;2022-6-9太湖学院信机系93Ssignal(s1,s2,sn)For(i=1;i=ti;即当资即当资源数量低于源数量低于ti时,便不予分配)时,便不予分配) 占用值为占用值为di(表示资源的申请量,即(表示资源的申请量,即si=si-di)对应的对应的pv原语
39、格式为:原语格式为:Swait(s1,t1,d1;sn,tn,dn);Ssignal(s1,d1;sn,dn);2022-6-9太湖学院信机系95信号量集可以用于各种情况的资源分配和回收,信号量集可以用于各种情况的资源分配和回收,几种特殊情况:几种特殊情况:Swait(s,d,d):表示每次申请:表示每次申请d个资源,当少于个资源,当少于d个个时,便不分配时,便不分配Swait(s,1,1):s1表示记录型信号量,表示记录型信号量,s=1表示互表示互斥信号量斥信号量Swait(s,1,0):可作为一个可控开关(当:可作为一个可控开关(当s=1时,时,允许多个进程进入特殊区域;当允许多个进程进入
40、特殊区域;当s=0时,禁止任时,禁止任何进程进入临界区)不占用资源何进程进入临界区)不占用资源2022-6-9太湖学院信机系96第二类经典问题:第二类经典问题:读者写者问题读者写者问题有两组并发进程:读者和写者,共享一组数据区有两组并发进程:读者和写者,共享一组数据区要求:要求:允许允许多个读者同时多个读者同时执行执行读读操作操作不允许读者、写者同时操作(读写互斥)不允许读者、写者同时操作(读写互斥)不允许多个写者同时操作(只能一个写不允许多个写者同时操作(只能一个写)2022-6-9太湖学院信机系97分析:分析:第一类情况:读者优先第一类情况:读者优先如果读者来:如果读者来:1)1)无读者写
41、者,新读者可以读无读者写者,新读者可以读2)2)有写者等,但有其他读者正在读,则新读者也可以读有写者等,但有其他读者正在读,则新读者也可以读3)3)有写者写,新读者等有写者写,新读者等如果写者来:如果写者来:1 1)无读者,新写者可以写)无读者,新写者可以写2 2)有读者,新写者等待)有读者,新写者等待3 3)有其他写者,新写者等待)有其他写者,新写者等待2022-6-9太湖学院信机系98第一类读者写者问题的解法第一类读者写者问题的解法读者来:读者来:While(true)Wait(mutex); readcount+; if(readcount=1) Wait(wr);Signal(mute
42、x);读读Wait(mutex); readcount-; if(readcount=0) Signal(wr);signal(mutex);写者来:写者来:While(true)Wait(wr);写写Signal(wr);初值:初值:wr=1;(读(读-写互斥,写写互斥,写-写互斥)写互斥)mutex=1;(读者统计数量互斥)(读者统计数量互斥)readcount=0;2022-6-9太湖学院信机系99用信号量集解决第一类读者写者问题用信号量集解决第一类读者写者问题写者:写者:Swait(wr,1,1);Swait(count,n,0);写写Ssignal(wr,1);读者:读者:Swait
43、(count,1,1);Swait(wr,1,0);读读Ssignal(count,1);初值:初值:wr:=1count:=n最多只能最多只能n个读者同时读个读者同时读(空位空位)2022-6-9太湖学院信机系1002.利用信号量来描述前趋关系利用信号量来描述前趋关系(1)P1:S1;P2:S2;并发进程:并发进程:P1和和P2,各进程语句如下,要求:,各进程语句如下,要求:S1执行结束才能执行执行结束才能执行S2。如何设置。如何设置P1与与P2的关系?的关系?2022-6-9太湖学院信机系1012.利用信号量来描述前趋关系利用信号量来描述前趋关系(2)S1S2S3S4S5S6abcdegf
44、2022-6-9太湖学院信机系102利用信号量来描述前趋关系利用信号量来描述前趋关系(2)2022-6-9太湖学院信机系1032.4.2哲学家进餐问题哲学家进餐问题2022-6-9太湖学院信机系1042.4.2哲学家进餐问题哲学家进餐问题2022-6-9太湖学院信机系1052.5管程机制管程机制2022-6-9太湖学院信机系1062022-6-9太湖学院信机系1072.5.2利用管程解决生产者利用管程解决生产者消费者问题消费者问题 2022-6-9太湖学院信机系1082.5.2利用管程解决生产者利用管程解决生产者消费者问题消费者问题 2022-6-9太湖学院信机系1092.5.2利用管程解决生产者利用管程解决生产者消费者问题消费者问题 2022-6-9太湖学院信机系1102.7线程线程 2022-6-9太湖学院信机系1112022-6-9太湖学院信机系1122.7线程线程 2022-6-9太湖学院信机系1132.7线程线程 2022-6-9太湖学院信机系1142.7.2线程的同步和通信线程的同步和通信2022-6-9太湖学院信机系1152.7.2线程的同步和通信线程的同步和通信2022-6-9太湖学院信机系116