版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.进程管理进程管理.进程的描述进程的描述 进程是资源分配和独立运行的基进程是资源分配和独立运行的基本单位。操作系统所具有的四大特征本单位。操作系统所具有的四大特征也是基于进程形成的,即所谓进程观也是基于进程形成的,即所谓进程观点。点。 显然,进程在操作系统中是个极显然,进程在操作系统中是个极其重要的概念。其重要的概念。.内容提要内容提要 进程的概念进程的概念 进程的状态及其转换进程的状态及其转换 进程控制进程控制 进程的同步和互斥进程的同步和互斥 临界资源和临界区临界资源和临界区 进程同步机制进程同步机制 管程机制管程机制 线程线程.程序的顺序执行程序的顺序执行 在任何时刻,机器只执行一个操在
2、任何时刻,机器只执行一个操作,只有在前一个操作执行完后,才作,只有在前一个操作执行完后,才能执行后继操作。如下图:能执行后继操作。如下图:.程序顺序执行的特点程序顺序执行的特点 顺序性顺序性 封闭性封闭性 可再现性可再现性.程序的并发执行程序的并发执行 若干个程序(或程序段)同时在若干个程序(或程序段)同时在系统中运行,这些程序(或程序段)系统中运行,这些程序(或程序段)的执行在时间上是重叠的,一个程序的执行在时间上是重叠的,一个程序(或程序段)的执行尚未结束,另一(或程序段)的执行尚未结束,另一个程序(或程序段)的执行已经开始。个程序(或程序段)的执行已经开始。.多道技术下作业执行过程多道技
3、术下作业执行过程作业作业A作业作业B开开始始开开始始空转空转输入输入空转空转输入输入空转空转输入输入空转空转输入输入停停止止停停止止.程序并发执行的特点程序并发执行的特点 间断性间断性 失去封闭性失去封闭性 不可再现性不可再现性.不可再现性举例之一不可再现性举例之一S1S2S3S4可能的执行序列为:可能的执行序列为:S1 S2 S3 S4S2 S1 S3 S4.不可再现性举例之二不可再现性举例之二 例如,有两个循环程序例如,有两个循环程序A A和和B B,它们共享一,它们共享一个变量个变量NN。程序。程序A A每执行一次都做每执行一次都做N=N+1N=N+1的操作,程序的操作,程序B B每执行
4、一次都打印每执行一次都打印NN的值,的值,并将并将NN置为置为0 0。A A和和B B的执行速度不同。的执行速度不同。.不可再现性举例之二不可再现性举例之二 打印的结果为打印的结果为N+1N+1,N=0N=0NN+1Print(N)N0程序程序A程序程序B.不可再现性举例之二不可再现性举例之二 打印的结果为打印的结果为NN,N=1N=1NN+1Print(N)N0程序程序A程序程序B.不可再现性举例之二不可再现性举例之二 打印的结果为打印的结果为NN,N=0N=0NN+1Print(N)N0程序程序A程序程序B.进程概念的引入进程概念的引入 多道程序设计技术引入后,程序在多道程序设计技术引入后
5、,程序在系统中的执行是并发执行。并发程序在系统中的执行是并发执行。并发程序在系统中执行时,和顺序程序相比,失去系统中执行时,和顺序程序相比,失去了封闭性,程序与了封闭性,程序与CPUCPU执行的活动之间执行的活动之间不再一一对应,这样就使系统中的活动不再一一对应,这样就使系统中的活动以及各种活动之间的相互关系非常复杂,以及各种活动之间的相互关系非常复杂,从而程序这个静态的概念已不能如实地从而程序这个静态的概念已不能如实地反映系统中的活动情况,为此,现代操反映系统中的活动情况,为此,现代操作系统引入进程概念。作系统引入进程概念。.进程的特征进程的特征.进程的定义进程的定义 进程是程序的一次执行进
6、程是程序的一次执行 进程是一个程序及其数据在处理机上顺进程是一个程序及其数据在处理机上顺序执行时所发生的活动序执行时所发生的活动 进程是程序在一个数据集合上运行的过进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一程,它是系统进行资源分配和调度的一个独立单位个独立单位 进程是进程实体的运行过程,是系统进进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位行资源分配和调度的一个独立单位.从操作的角度理解进程从操作的角度理解进程 图形窗口界面:一个窗口就是一个进程。图形窗口界面:一个窗口就是一个进程。打开窗口:建立一个进程;关闭窗口:打开窗口:建立一个进程;关闭窗口:
7、一个进程结束。一个进程结束。 字符命令界面:一条命令一般就是一个字符命令界面:一条命令一般就是一个进程。命令行尾回车:一个进程开始;进程。命令行尾回车:一个进程开始;命令执行结束命令执行结束( (下一命令提示符出现下一命令提示符出现) ):一个进程结束。一个进程结束。.从编程的角度理解进程从编程的角度理解进程 进程建立:进程建立:“建立进程建立进程”函数或系统调函数或系统调用用 进程结束:进程结束:“撤消进程撤消进程”函数或系统调函数或系统调用,或者程序的正常或非正常结束。用,或者程序的正常或非正常结束。.进程与程序进程与程序 在并发环境下,一个正在执行中的程序在并发环境下,一个正在执行中的程
8、序称为进程。称为进程。 内存中的进程(动态)比外存上的程序内存中的进程(动态)比外存上的程序(静态)要多很多内容(栈,动态数据,(静态)要多很多内容(栈,动态数据,状态信息等)。状态信息等)。 一个进程可对应多个程序(代码覆盖)一个进程可对应多个程序(代码覆盖) 一个程序可对应多个进程(例如开两个一个程序可对应多个进程(例如开两个WORDWORD窗口)窗口).进程与程序的比较进程与程序的比较 进程是动态的;程序是静态的进程是动态的;程序是静态的 进程具有并发性;程序本身具有顺序进程具有并发性;程序本身具有顺序性,程序的并发执行是通过进程实现性,程序的并发执行是通过进程实现的的 进程具有独立性,
9、是能独立运行的单进程具有独立性,是能独立运行的单位位 程序可作为一种软件资源而长期保存;程序可作为一种软件资源而长期保存;进程是程序的一次执行,是动态的,进程是程序的一次执行,是动态的,具有临时有限的生命期具有临时有限的生命期 进程具有结构性,从结构上看,进程进程具有结构性,从结构上看,进程是由程序、数据和进程控制块三部分是由程序、数据和进程控制块三部分组成的组成的.进程组成模型进程组成模型PCB程序部分程序部分数据集合数据集合进程的组成进程的组成.PCBPCB 进程控制块是进程实体的一部分,是进程控制块是进程实体的一部分,是操作系统中最重要的记录型数据结构操作系统中最重要的记录型数据结构 P
10、CBPCB中记录了操作系统所需的、用于中记录了操作系统所需的、用于描述进程情况及控制进程运行所需的描述进程情况及控制进程运行所需的全部信息全部信息 OSOS根据根据PCBPCB来对并发执行的进程进行来对并发执行的进程进行控制和管理控制和管理.PCBPCB的结构的结构1进程标识符进程标识符2处理机状态信息处理机状态信息3进程状态信息进程状态信息4进程优先权进程优先权5进程调度所需的其它信息进程调度所需的其它信息6进程阻塞原因进程阻塞原因7进程控制信息进程控制信息8族系关系族系关系9其它信息其它信息.进程与进程与PCBPCB的关系的关系 每个进程有惟一的每个进程有惟一的PCBPCB 操作系统依靠操
11、作系统依靠PCBPCB管理进程管理进程 利用利用PCBPCB实现进程的动态并发实现进程的动态并发 PCBPCB是进程存在的惟一标志是进程存在的惟一标志.进程的三种基本状态进程的三种基本状态.新状态和终止状态新状态和终止状态 新状态是一个进程刚刚建立,但还未新状态是一个进程刚刚建立,但还未进入就绪队列的状态;进入就绪队列的状态; 终止状态是当一个进程已经正常或异终止状态是当一个进程已经正常或异常结束,常结束,OSOS已经将它从就绪队列中已经将它从就绪队列中移出,但尚未被撤销时的状态;移出,但尚未被撤销时的状态; 在进程管理中,新状态和终止状态是在进程管理中,新状态和终止状态是非常有用的。非常有用
12、的。.进程状态转换的意义进程状态转换的意义 进程在运行期间,不断地从一个进程在运行期间,不断地从一个状态转换到另一个状态,体现出了进状态转换到另一个状态,体现出了进程的动态性。从进程的创建,到执行,程的动态性。从进程的创建,到执行,再到进程的撤销,组成了进程的整个再到进程的撤销,组成了进程的整个生命周期。生命周期。.进程状态图进程状态图新进程新进程执行执行结束结束阻塞阻塞就绪就绪接纳接纳中断中断完成完成进程调度进程调度I/O请求或请求或等待某事件等待某事件I/O完成或完成或事件发生事件发生.几点说明几点说明 进程间的状态转换并非都是可逆的进程间的状态转换并非都是可逆的 对于一个进程来说,它处于
13、新状态和对于一个进程来说,它处于新状态和终止状态都只有一次终止状态都只有一次 进程间的状态转换并非都是主动的进程间的状态转换并非都是主动的 进程在执行态才是真正运行进程在执行态才是真正运行.进程控制进程控制 进程控制是指系统使用一些具有进程控制是指系统使用一些具有特定功能的程序段来创建、撤销进程特定功能的程序段来创建、撤销进程以及完成进程运行中的状态转换。这以及完成进程运行中的状态转换。这些功能的实现由些功能的实现由原语原语完成。完成。.原语原语 由若干条指令组成。这些指令,由若干条指令组成。这些指令,要么全做,要么全不做,不允许中断。要么全做,要么全不做,不允许中断。是是不可分割不可分割的操
14、作,具有原子操作的的操作,具有原子操作的性质。性质。.进程的创建进程的创建 一旦操作系统发现了要求创建新进程的事件一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语后,便调用进程创建原语Creat( )Creat( ),步骤如下:,步骤如下:申请空申请空白白PCBPCB为新进为新进程分配程分配资源资源初始化初始化PCBPCB插入就插入就绪队列绪队列.进程树体现进程间的关系进程树体现进程间的关系ABCDEFGHKIJLM.引起创建进程的事件引起创建进程的事件 用户登录用户登录 作业调度作业调度 提供服务提供服务 应用请求应用请求.引起进程终止的事件引起进程终止的事件 正常结束正常结束
15、异常结束异常结束 外界干预,包括:操作员或外界干预,包括:操作员或OSOS干预、干预、父进程请求、父进程终止父进程请求、父进程终止.进程终止的过程进程终止的过程根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态;若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度;若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程;将被终止进程所拥有的全部资源,或者归还给其父进程, 或者归还给系统;将被终止进程(它的PCB)从所在队列(或链表)中移出。.引起进程阻塞和唤醒的事件引起进程阻塞和唤醒的事件
16、 请求系统服务请求系统服务 启动某种操作启动某种操作 新数据尚未到达新数据尚未到达 无新工作可做无新工作可做.进程阻塞的过程进程阻塞的过程 中断中断CPUCPU 将其运行现场保存在其将其运行现场保存在其PCBPCB中中 置进程状态为阻塞态置进程状态为阻塞态 插入阻塞队列插入阻塞队列 转进程调度转进程调度.进程唤醒的过程进程唤醒的过程 把被阻塞进程从阻塞队列中移出把被阻塞进程从阻塞队列中移出 将其将其PCBPCB的现行状态改为就绪状态的现行状态改为就绪状态 插入就绪队列中插入就绪队列中.进程挂起的过程进程挂起的过程 系统利用挂起原语系统利用挂起原语suspend( )suspend( )将指定进
17、将指定进程或处于阻塞状态的进程挂起;程或处于阻塞状态的进程挂起; 运行态运行态 静止就绪静止就绪 活动就绪活动就绪静止就绪静止就绪 活动阻塞活动阻塞静止阻塞静止阻塞.进程激活的过程进程激活的过程 系统利用激活原语系统利用激活原语active( )active( )将指定进程将指定进程激活;激活; 静止就绪静止就绪活动就绪活动就绪 静止阻塞静止阻塞活动阻塞活动阻塞.进程同步进程同步 进程同步的主要任务,是使并发执行的多个进程同步的主要任务,是使并发执行的多个进程之间能有效地共享资源和互相合作,从而使进程之间能有效地共享资源和互相合作,从而使程序的执行具有程序的执行具有可再现性可再现性。.进程间存
18、在的两种关系进程间存在的两种关系 资源共享关系资源共享关系 互相合作关系互相合作关系.临界资源与临界区临界资源与临界区 临界资源:一次仅允许一个进程使用临界资源:一次仅允许一个进程使用的共享资源,如打印机、磁带机、共的共享资源,如打印机、磁带机、共享变量等享变量等 临界区:在每个进程中访问临界资源临界区:在每个进程中访问临界资源的那段程序,简称的那段程序,简称CSCS区区.生产者生产者消费者举例消费者举例inin指针指针outout指针指针1n设置整型变量设置整型变量counter,记录可以消,记录可以消费的消息数。设它的初值为费的消息数。设它的初值为5。.执行举例执行举例P1: regist
19、er1=counter;P2: register1=register1+1;P3: counter=register1;C1: register2=counter;C2: register2=register2-1;C3: counter=register2;执行序列一:执行序列一:P1,P2,P3,C1,C2,C3,则最后结果为,则最后结果为counter=5执行序列二:执行序列二:C1,C2,C3,P1,P2,P3 ,则最后结果为,则最后结果为counter=5执行序列三:执行序列三:P1,P2,C1,C2,P3,C3,则最后结果为,则最后结果为counter=4.具有临界区的进程结构具有
20、临界区的进程结构一个访问临界资源的循环进程可描述如下:一个访问临界资源的循环进程可描述如下:repeat entry section critical section exit section remainder sectionuntil false;.结果分析结果分析 执行序列三最后结果执行序列三最后结果counter的值为的值为4,是,是错误的,这表明程序的执行不能具有可再现性错误的,这表明程序的执行不能具有可再现性。为了预防发生这种错误,解决此问题的关键。为了预防发生这种错误,解决此问题的关键,是应把变量,是应把变量counter设为临界资源,令生产设为临界资源,令生产者和消费者进程互斥
21、访问变量者和消费者进程互斥访问变量counter。.同步机制应遵循的机制同步机制应遵循的机制 空闲让进空闲让进 忙则等待忙则等待 有限等待有限等待 让权等待让权等待.用软件方法解决进程互斥问题用软件方法解决进程互斥问题 利用软件方法来解决进程互斥问题,可以利用软件方法来解决进程互斥问题,可以在很大程度上体现进程互斥问题的复杂度,现在很大程度上体现进程互斥问题的复杂度,现在已经很少使用软件方法来解决进程互斥了。在已经很少使用软件方法来解决进程互斥了。.算法一算法一设置一个公用整型变量设置一个公用整型变量turn,用于指示被允许进入,用于指示被允许进入临界区的进程编号。临界区的进程编号。repea
22、t while turni do no_op; critical section turn=j; remainder sectionuntil false;算法算法1不能保证实现不能保证实现“空闲让进空闲让进”的准则。的准则。.算法二算法二repeat while flagj do no_op; critical section flagi=false; remainder sectionuntil false;算法算法2违背了违背了“忙则等待忙则等待”的准则。的准则。Boolean flagn; flagi=true;.算法三算法三repeat while flagj do no_op; c
23、ritical section flagi=false; remainder sectionuntil false;算法算法3违背了违背了“有空让进有空让进”的准则。的准则。Boolean flagn; flagi=true;.算法四算法四repeat while(flagj and turn=j) do no_op; critical section flagi=false; remainder sectionuntil false;算法算法4结合了算法结合了算法2和算法和算法3各自的优点,各自的优点,是一种成功的算法。是一种成功的算法。Boolean flagn; flagi=true;
24、turn=j;.用硬件方法解决进程互斥问题用硬件方法解决进程互斥问题 利用利用Test-and-SetTest-and-Set指令实现互斥指令实现互斥 利用利用SwapSwap指令实现互斥指令实现互斥.Test-and-SetTest-and-Set指令指令boolean TS(boolean lock) lock=true;其中,其中,lock有两种状态:有两种状态:lock=false,表示该资源空闲;,表示该资源空闲;lock=true,表示该资源正被使用。,表示该资源正被使用。Test-and-Set指令可定义为:指令可定义为: TS=lock;.利用利用TSTS实现进程互斥实现进程互
25、斥利用利用TS实现进程互斥的循环进程可描述如下:实现进程互斥的循环进程可描述如下:repeat while TS(lock) do-skip; critical section lock=false; remainder sectionuntil false;.SwapSwap指令指令Swap(boolean a, boolean b) a=b;Test-and-Set指令可定义为:指令可定义为: temp=a; b=temp;.利用利用SwapSwap实现进程互斥实现进程互斥利用利用Swap实现进程互斥的循环进程可描述如下:实现进程互斥的循环进程可描述如下:repeat key=true;
26、critical section lock=false; remainder sectionuntil false; repeat Swap(lock, key); until key=false;.信号量机制信号量机制 19651965年,荷兰计算机学家年,荷兰计算机学家DijkstraDijkstra提出了一种卓有成效的进程同步工具提出了一种卓有成效的进程同步工具信号量机制信号量机制。在应用中,信号量机制。在应用中,信号量机制又发展为信号量集机制,现在已被广泛又发展为信号量集机制,现在已被广泛应用于单处理机和多处理机以及计算机应用于单处理机和多处理机以及计算机网络中。网络中。.整型信号量整
27、型信号量 Dijkstra Dijkstra最初将信号量定义为依个整最初将信号量定义为依个整型量,除初始化外,只能通过两个标准型量,除初始化外,只能通过两个标准原子操作原子操作wait(s)wait(s)和和signal(s)signal(s)来访问。这来访问。这两个操作被称为两个操作被称为P P、V V操作。可描述为:操作。可描述为: wait(s): while s0 do no_op;wait(s): while s0 do no_op; s=s-1; s=s-1; signal(s): s=s+1; signal(s): s=s+1;.利用信号量实现互斥利用信号量实现互斥 为使多个进程
28、互斥访问某临界资源,为使多个进程互斥访问某临界资源,只需为该资源定义一个互斥信号量只需为该资源定义一个互斥信号量mutexmutex,并设其初始值为,并设其初始值为1 1。然后将各进。然后将各进程的临界区程的临界区CSCS置于置于wait(mutex)wait(mutex)和和signal(mutex)signal(mutex)操作之间即可实现互斥。操作之间即可实现互斥。.利用信号量实现进程互斥利用信号量实现进程互斥利用信号量实现进程互斥的循环进程可描述如下:利用信号量实现进程互斥的循环进程可描述如下:P1:P1:repeatrepeat wait(mutex); wait(mutex); c
29、ritical section critical section signal(mutex); signal(mutex); remainder section remainder sectionuntil false;until false;P2:P2:repeatrepeat wait(mutex); wait(mutex); critical section critical section signal(mutex); signal(mutex); remainder section remainder sectionuntil false;until false;.利用信号量描述前驱
30、关系利用信号量描述前驱关系 设有两个并发执行的进程设有两个并发执行的进程P P1 1和和P P2 2。P P1 1中有语句中有语句S S1 1,P P2 2中有语句中有语句S S2 2。若希望。若希望先执行先执行S S1 1,再执行,再执行S S2 2,只需使进程,只需使进程P P1 1和和P P2 2共享一个公用信号量共享一个公用信号量S S,并赋予初值,并赋予初值为为0 0。描述如下:。描述如下: P P1 1: S S1 1; signal(S);signal(S); P P2 2: wait(S); S: wait(S); S2 2; ;.利用信号量描述前驱关系举例利用信号量描述前驱关
31、系举例已知有前驱关系,如下图:已知有前驱关系,如下图:S1S2S3S5S4S6.利用信号量描述前驱关系举例利用信号量描述前驱关系举例a=b=c=d=e=f=g=0;beginbegin begin S1; signal(a); signal(b); end; begin S1; signal(a); signal(b); end; begin wait(a); S2; signal(c); signal(d); end; begin wait(a); S2; signal(c); signal(d); end; begin wait(b); S3; signal(e); end; begin
32、wait(b); S3; signal(e); end; begin wait(c); S4; signal(f); end; begin wait(c); S4; signal(f); end; begin wait(d); S5; signal(g); end; begin wait(d); S5; signal(g); end; begin wait(e); wait(f); wait(g); S6; end; begin wait(e); wait(f); wait(g); S6; end;end;end;.记录型信号量机制记录型信号量机制 整型信号量机制不能遵循整型信号量机制不能遵循
33、“让权等让权等待待”的原则。因此除了需要代表资源数的原则。因此除了需要代表资源数目的整型变量目的整型变量valuevalue之外,还应增加一之外,还应增加一个进程链表个进程链表L L,用于链接所有等待的进,用于链接所有等待的进程。可描述为:程。可描述为: type recordtype record value: integer; value: integer; L: list of process; L: list of process; end end.记录型信号量机制记录型信号量机制相应地,相应地,wait(S)wait(S)和和signal(S)signal(S)操作可描述为:操作可描
34、述为:wait(S) signal(S)wait(S) signal(S)Begin beginBegin begin S.value=S.value-1; S.value=S.value+1; S.value=S.value-1; S.value=S.value+1; if S.value0 if S.value0 if S.value0 if S.value0 block(S, L); wakeup(S, L); block(S, L); wakeup(S, L);End endEnd end.经典进程同步问题经典进程同步问题 在多道程序设计环境下,进程同步在多道程序设计环境下,进程同步问
35、题是十分重要的。由此产生了许多经问题是十分重要的。由此产生了许多经典的进程同步问题,比较有代表性的有典的进程同步问题,比较有代表性的有“生产者生产者消费者问题消费者问题”、“读者读者写写者问题者问题” 、“哲学家进餐问题哲学家进餐问题”等。等。通过研究这些问题,可以更好地帮助我通过研究这些问题,可以更好地帮助我们理解进程同步的概念和实现方法。们理解进程同步的概念和实现方法。.生产者生产者消费者问题消费者问题 在生产者和消费者进程之间存在一在生产者和消费者进程之间存在一个具有个具有n n个缓冲区的公用缓冲池。可利个缓冲区的公用缓冲池。可利用信号量用信号量mutexmutex实现对缓冲池的互斥使实
36、现对缓冲池的互斥使用;利用信号量用;利用信号量emptyempty和和fullfull分别表示缓分别表示缓冲池中空缓冲区和满缓冲区的数量。变冲池中空缓冲区和满缓冲区的数量。变量定义如下:量定义如下: mutex=1, empty=n, full=0;mutex=1, empty=n, full=0; item buffern; item buffern; in=0, out=0; in=0, out=0;.生产者进程生产者进程Producer:beginbegin repeat repeat produce an item in nextp produce an item in nextp w
37、ait(empty); wait(mutex); wait(empty); wait(mutex); bufferin=nextp; bufferin=nextp; in=(in+1) mod n; in=(in+1) mod n; signal(mutex); signal(full); signal(mutex); signal(full); until false; until false;end;end;.消费者进程消费者进程Consumer:beginbegin repeat repeat wait(full); wait(mutex); wait(full); wait(mutex
38、); nextc=bufferout; nextc=bufferout; out=(out+1) mod n; out=(out+1) mod n; signal(mutex); signal(empty); signal(mutex); signal(empty); consume the item in nextc consume the item in nextc until false; until false;end;end;.读者读者写者问题写者问题 文件或记录可被多个进程共享。将文件或记录可被多个进程共享。将只要求读的进程称为只要求读的进程称为“readerreader进程进程”
39、,其它称为其它称为“writerwriter进程进程” 。允许多个。允许多个readerreader进程同时读一个共享对象,却不进程同时读一个共享对象,却不允许允许writerwriter进程和其它进程和其它readerreader进程或进程或writerwriter进程同时访问。进程同时访问。.读者读者写者问题写者问题 为实现读写互斥,可设置互斥信号为实现读写互斥,可设置互斥信号量量wmutexwmutex。再设置一个整型信号量。再设置一个整型信号量readcountreadcount,记录正在读的进程数目。,记录正在读的进程数目。由于由于readcountreadcount可被多个可被多个
40、readerreader进程访问,进程访问,所以是个临界资源,可为它设置一个互所以是个临界资源,可为它设置一个互斥信号量斥信号量rmutexrmutex。.读者进程读者进程Reader:beginbegin repeat repeat wait(mutex); wait(mutex); if readcount=0 wait(wmutex); if readcount=0 wait(wmutex); readcount=readcount+1; readcount=readcount+1; signal(rmutex); signal(rmutex); Perform read operati
41、on Perform read operation wait(rmutex); readcount=readcount+1; wait(rmutex); readcount=readcount+1; if readcount=0 signal(wmutex); if readcount=0 signal(wmutex); signal(rmutex); signal(rmutex); until false; until false;end;end;.写进程写进程Writer:beginbegin repeat repeat wait(wmutex); wait(wmutex); perfor
42、m write operation perform write operation signal(wmutex); signal(wmutex); until false; until false;end;end;.哲学家进餐问题哲学家进餐问题 哲学家进餐问题由哲学家进餐问题由DijkstraDijkstra提出并解提出并解决的。该问题描述了决的。该问题描述了5 5个哲学家共用一个哲学家共用一张圆桌,桌子上放着张圆桌,桌子上放着5 5只碗和只碗和5 5只筷子。只筷子。一个哲学家饥饿时,试图取左右最靠近一个哲学家饥饿时,试图取左右最靠近他的两只筷子。只有在他取得两只筷子他的两只筷子。只有在他取得两只筷子后才能进餐。进餐完毕,他可以放下筷后才能进餐。进餐完毕,他可以放下筷子继续思考。子继续思考。.哲学家进餐问题哲学家进餐问题beginbegin repeat repeat wait(chopsticki); wait(chopsticki); wait(chopstick(i+1) mod 5); wait(chopstick(i+1) mod 5); eat: eat:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年米香型白酒展会参展合同
- 基于2024年度标准的网络安全防护合同
- 2024年度互联网金融与众筹合同
- 2024版文化艺术活动承办合同2篇
- 2024年度船舶租赁及海上渔业服务合同
- 2024版设备租赁合同设备类型与租赁期限2篇
- 2024年度餐饮服务经营合同
- 二零二四年度电动皮卡购销合同2篇
- 认证协议书范本完整版
- 2024年度高校校园绿化维护与管理合同
- 小红书种草营销师模拟题及答案(单选+多选+判断)
- 明清古家具鉴赏智慧树知到期末考试答案章节答案2024年东北林业大学
- MOOC 颈肩腰腿痛中医防治-暨南大学 中国大学慕课答案
- MOOC 国家安全概论-西安交通大学 中国大学慕课答案
- 2024郑州文化旅游和体育集团有限公司社会化招聘笔试参考题库附带答案详解
- 卫生部手术分级目录(2023年1月份修订)
- 染色体核型分析PPT课件(实用课件)
- 上海苏宁天御际广场项目介绍(33页)
- 完整版海洋科学导论复习提纲汇总
- 医院外包业务管理质量安全评估报告、内部审计报告及工作改进实例
- 睡美人纯英文剧本
评论
0/150
提交评论