Chapter2bPPT优秀课件

上传人:每**** 文档编号:48292654 上传时间:2022-01-03 格式:PPT 页数:49 大小:4.40MB
收藏 版权申诉 举报 下载
Chapter2bPPT优秀课件_第1页
第1页 / 共49页
Chapter2bPPT优秀课件_第2页
第2页 / 共49页
Chapter2bPPT优秀课件_第3页
第3页 / 共49页
资源描述:

《Chapter2bPPT优秀课件》由会员分享,可在线阅读,更多相关《Chapter2bPPT优秀课件(49页珍藏版)》请在装配图网上搜索。

1、1Operating Systems and Applications 主讲教师:徐红云2021/5/26操作系统及应用操作系统及应用Processes and Threads and Threads华南理工大学计算机科学与工程学院2009年 秋季2Operating Systems and Applications 主讲教师:徐红云2021/5/26ProcessesThreadsInterprocess communicationClassical IPC problemsScheduling3Operating Systems and Applications 主讲教师:徐红云2021/

2、5/26l需要解决三个问题需要解决三个问题v第一,一个进程如何把信息传递给另一个进第一,一个进程如何把信息传递给另一个进程。程。v第二,确认在关键活动中两个或更多的进程第二,确认在关键活动中两个或更多的进程不会把事情搞乱。不会把事情搞乱。t例如,两个进程都试图取得例如,两个进程都试图取得1MB的内存的内存v第三个问题与正确的顺序有关第三个问题与正确的顺序有关t例如,如果进程例如,如果进程A产生数据,而进程产生数据,而进程B打印数据,打印数据,那么那么B在打印之前必须等待,直到在打印之前必须等待,直到A已经产生了一已经产生了一些数据。些数据。4Operating Systems and Appl

3、ications 主讲教师:徐红云2021/5/26两个进程同时想访问共享内存两个进程同时想访问共享内存l定义:两个或多个进程读写某些共享数据,而最后的结果取决于定义:两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为进程运行的精确时序,称为竞争条件竞争条件(race conditionrace condition)。)。5Operating Systems and Applications 主讲教师:徐红云2021/5/26l临界资源临界资源:一段时间内只允许一个进程访问的资源:一段时间内只允许一个进程访问的资源l把对临界资源把对临界资源( (如:共享内存如:共享内存

4、) )进行访问的程序片段称作进行访问的程序片段称作临界区临界区( (critical region或或critical section) )。l以某种手段确保当一个进程在使用一个共享变量或文件以某种手段确保当一个进程在使用一个共享变量或文件时,其他进程不能做同样的操作,称作时,其他进程不能做同样的操作,称作互斥互斥( (mutual exclusion) )。l对于一个好的对于一个好的互斥的解决方案互斥的解决方案必须满足的四个条件必须满足的四个条件v任何两个进程不能同时处于其临界区任何两个进程不能同时处于其临界区v不应对不应对CPUCPU的速度和数量做任何假设的速度和数量做任何假设v临界区外运

5、行的进程不得阻塞其他进程临界区外运行的进程不得阻塞其他进程v不得使进程无限期等待进入临界区不得使进程无限期等待进入临界区6Operating Systems and Applications 主讲教师:徐红云2021/5/26使用临界区实现互斥使用临界区实现互斥7Operating Systems and Applications 主讲教师:徐红云2021/5/26l 禁止中断禁止中断v使每个进程在刚刚进入临界区后立即禁止所有中断,并在使每个进程在刚刚进入临界区后立即禁止所有中断,并在就要离开之前再打开中断。就要离开之前再打开中断。v对操作系统本身是一项很有用的技术,对用户进程则不是对操作系统

6、本身是一项很有用的技术,对用户进程则不是一种合适的通用互斥机制。一种合适的通用互斥机制。l 锁变量锁变量v设立一个共享设立一个共享(锁锁)变量,其初值为变量,其初值为0。当一个进程想进入。当一个进程想进入临界区时,它首先测试该锁,如果该锁的值是临界区时,它首先测试该锁,如果该锁的值是0,则该进,则该进程将其设置为程将其设置为1并进入临界区。若该锁的值已经为并进入临界区。若该锁的值已经为1,则该,则该进程将等待直到其值变为进程将等待直到其值变为0。v是否能实现互斥?是否能实现互斥?8Operating Systems and Applications 主讲教师:徐红云2021/5/26临界区问题

7、的一种解法临界区问题的一种解法 (a) (a) 进程进程 0 (b) 0 (b) 进程进程 1 1l严格轮换法严格轮换法v设立一个整型变量,用于记录轮到哪个进程进入临界区,并检查或更新设立一个整型变量,用于记录轮到哪个进程进入临界区,并检查或更新共享内存。如为共享内存。如为0 0时,进程时,进程0 0进入临界区;为进入临界区;为1 1时,进程时,进程1 1进入临界区进入临界区v连续测试一个变量直到某个值出现为止,称为连续测试一个变量直到某个值出现为止,称为忙等待忙等待(busy waiting)(busy waiting)v问题?问题?( (考虑一个进程比另一个进程慢很多的情况考虑一个进程比另

8、一个进程慢很多的情况) )9Operating Systems and Applications 主讲教师:徐红云2021/5/26l Peterson解法解法v 是一个不需严格轮换的软件互斥算法是一个不需严格轮换的软件互斥算法v 设立一个整型变量设立一个整型变量turn作为进入临界区的标志,同时作为进入临界区的标志,同时设立一个数组设立一个数组interested来表示轮到的进程是否希望进来表示轮到的进程是否希望进入临界区。入临界区。t只有当轮到了某进程,而其他进程不希望进入临界区时,该只有当轮到了某进程,而其他进程不希望进入临界区时,该进程才能进入,否则,将等待。进程才能进入,否则,将等待

9、。v在使用共享变量之前在使用共享变量之前,各个进程使用其进程号各个进程使用其进程号0或或1作为作为参数来调用参数来调用enter_region, 该调用在需要时将使进程等该调用在需要时将使进程等待待,直到能安全地进入临界区直到能安全地进入临界区v在完成对共享变量的访问之后在完成对共享变量的访问之后,进程将调用进程将调用leave_region,表示操作已完成表示操作已完成, 若其他进程希望进入临若其他进程希望进入临界区界区,则现在就可以进入则现在就可以进入.10Operating Systems and Applications 主讲教师:徐红云2021/5/26lPeterson解法解法11

10、Operating Systems and Applications 主讲教师:徐红云2021/5/26l TSL指令指令v 是一种需要硬件支持的方案是一种需要硬件支持的方案. 使用了测试并加锁指令使用了测试并加锁指令TSL RX, LOCK, 它将它将一个内存字一个内存字LOCK读到寄存器读到寄存器RX中中, 然后在该内存地址上存一个非然后在该内存地址上存一个非0值值.v 使用共享变量使用共享变量lock来协调对共享内存的访问。当来协调对共享内存的访问。当lock为为0时,任何进程都可时,任何进程都可以使用以使用TSL指令将其设置为指令将其设置为1,并读写共享内存。当操作结束时,进程用,并读

11、写共享内存。当操作结束时,进程用一条普通的一条普通的move指令将指令将lock的值重新设置为的值重新设置为0。12Operating Systems and Applications 主讲教师:徐红云2021/5/26l Peterson解法和解法和TSL指令都是正确的指令都是正确的,但是它们但是它们都有忙等待的缺点都有忙等待的缺点, 浪费浪费CPU时间时间.l 在无法进入临界区时在无法进入临界区时, 采用阻塞而不是忙等待采用阻塞而不是忙等待的方法的方法:v使用通信原语使用通信原语sleep和和wakeuptSleep 是一个将引起调用进程阻塞的系统调用是一个将引起调用进程阻塞的系统调用,即

12、被挂起即被挂起,直直到另外一个进程将其唤醒到另外一个进程将其唤醒.tWakeup调用有一个参数调用有一个参数,即要唤醒的进程即要唤醒的进程.13Operating Systems and Applications 主讲教师:徐红云2021/5/26l 生产者生产者-消费者问题消费者问题(也称为有界缓存区问题也称为有界缓存区问题)v问题描述问题描述:两组进程共享一个公共的固定大小的缓存两组进程共享一个公共的固定大小的缓存区区, 其中一组是生产者其中一组是生产者, 将信息放入缓存区将信息放入缓存区;另一组是另一组是消费者消费者, 从缓存区中取出信息从缓存区中取出信息.v当缓存区已满当缓存区已满,

13、生产者还想放入新的数据项时生产者还想放入新的数据项时,生产生产者休眠者休眠, 待消费者取走数据项后再唤醒它待消费者取走数据项后再唤醒它; 当缓存区当缓存区已空已空,消费者还想从中取数据时消费者还想从中取数据时, 消费者休眠消费者休眠,待生产待生产者放入数据项后再唤醒它者放入数据项后再唤醒它.N-114Operating Systems and Applications 主讲教师:徐红云2021/5/26含有严重竞争条件的生产者含有严重竞争条件的生产者- -消费者问题消费者问题v设立一个变量设立一个变量count跟踪缓跟踪缓存区中的数据项数存区中的数据项数. 如果缓存区的大小为如果缓存区的大小为

14、N, 则生产者代码检查则生产者代码检查count是否达到是否达到N, 若是若是, 则生产则生产者休眠者休眠; 否则生产者向缓存区中否则生产者向缓存区中放入一个数据项并增加放入一个数据项并增加 count的值的值; 消费者首先测试消费者首先测试 count是是否为否为0, 若是若是,则休眠则休眠;否则从中取走一个数据否则从中取走一个数据项项, 并递减并递减count的值的值; 每个进程同时也检查另每个进程同时也检查另一个进程是否应该被唤一个进程是否应该被唤醒醒, 若是若是, 则唤醒之则唤醒之.15Operating Systems and Applications 主讲教师:徐红云2021/5/

15、26l 由由E.W.Dijkstra在在1965年提出年提出.是一种新的变量是一种新的变量类型类型l 取值可以为取值可以为0(表示没有保存下来的唤醒操作表示没有保存下来的唤醒操作)或或者正整数者正整数(表示有一个或多个唤醒操作表示有一个或多个唤醒操作)l 对信号量设立两种操作:对信号量设立两种操作:down(或或P) 和和up(或或V)v对一信号量执行对一信号量执行 down操作操作, 则是检查其值是否大于则是检查其值是否大于0. 若大于若大于0, 则其值减则其值减1并继续并继续; 若其值为若其值为0, 则进程将则进程将休眠休眠. 检查数值检查数值, 修改变量值以及可能发生的休眠操修改变量值以

16、及可能发生的休眠操作均作为单一的作均作为单一的, 不可分割的原子操作完成不可分割的原子操作完成.vUp操作对信号量的值增操作对信号量的值增1,唤醒一个在该信号量上唤醒一个在该信号量上休眠的进程。不会有进程因执行休眠的进程。不会有进程因执行up而阻塞而阻塞.信号量的信号量的值增值增1和唤醒一个进程同样也是不可分割的和唤醒一个进程同样也是不可分割的。16Operating Systems and Applications 主讲教师:徐红云2021/5/26l 实现进程互斥实现进程互斥down(mutex); up(mutex); 17Operating Systems and Applicatio

17、ns 主讲教师:徐红云2021/5/26提问:提问: 1. mutex的取值范围?的取值范围? down(mutex); up(mutex); up(mutex); up(mutex); down(mutex); down(mutex); Semaphore mutex=1;18Operating Systems and Applications 主讲教师:徐红云2021/5/26l 实现进程同步实现进程同步down(s); up(s); 19Operating Systems and Applications 主讲教师:徐红云2021/5/26down(s); up(s); 执行时两种可能性

18、:执行时两种可能性:l在进程在进程B还没有送数据之前,还没有送数据之前,进程进程A先执行了先执行了down(s),结果结果会怎样?会怎样?1.进程进程B的的up(s)操作已经完成操作已经完成,进程进程A才执行了才执行了down(s),结果结果会怎样?会怎样?答:答:l进程进程A执行执行down(s), 会使自己进会使自己进入阻塞状态,直至进程入阻塞状态,直至进程B送数送数据后执行据后执行up(s),才能将它唤醒才能将它唤醒l若进程若进程B的的up(s)操作已经完成操作已经完成, 进程进程A才执行了才执行了down(s), 则进程则进程A不会阻塞。它可以顺利地取不会阻塞。它可以顺利地取到数据,完

19、成下面的操作。到数据,完成下面的操作。Semaphore s=0;20Operating Systems and Applications 主讲教师:徐红云2021/5/26l 用信号量解决生产者和消费者问题用信号量解决生产者和消费者问题21Operating Systems and Applications 主讲教师:徐红云2021/5/2622Operating Systems and Applications 主讲教师:徐红云2021/5/26l 用信号量解决生产者和消费者问题用信号量解决生产者和消费者问题23Operating Systems and Applications 主讲教师

20、:徐红云2021/5/26l 桌上有一个盘子,可以存放一个水果。父亲总是放桌上有一个盘子,可以存放一个水果。父亲总是放苹果到盘子中,而母亲总是放香蕉到盘子中;一个苹果到盘子中,而母亲总是放香蕉到盘子中;一个儿子专等吃盘子里的香蕉,而一个女儿专等吃盘子儿子专等吃盘子里的香蕉,而一个女儿专等吃盘子里的苹果。请用信号量解决此问题。里的苹果。请用信号量解决此问题。l 分析:分析:v父亲、母亲、儿子和女儿共用一个盘子,盘子一次只能放父亲、母亲、儿子和女儿共用一个盘子,盘子一次只能放一个水果。一个水果。v当盘子为空时,父亲和母亲均可以试着将一个水果放入盘当盘子为空时,父亲和母亲均可以试着将一个水果放入盘中

21、,但一次只能有一个人成功放入水果。中,但一次只能有一个人成功放入水果。v若放入盘子中的是香蕉,则允许儿子吃,女儿必须等待若放入盘子中的是香蕉,则允许儿子吃,女儿必须等待v若放入盘子中的是苹果,则允许女儿吃,儿子必须等待若放入盘子中的是苹果,则允许女儿吃,儿子必须等待24Operating Systems and Applications 主讲教师:徐红云2021/5/26v设置信号量设置信号量dish, 表示盘子是否为空,初值为表示盘子是否为空,初值为1v设置信号量设置信号量 apple,表示盘中是否有苹果,初值为表示盘中是否有苹果,初值为0v信号量信号量banana,表示盘中是否有香蕉,初值

22、为表示盘中是否有香蕉,初值为0Father() while (true) down(dish); put apple into dish; up(apple) daughter() while (true) down(apple); take apple from dish; up(dish); eating apple mother()?Son()?25Operating Systems and Applications 主讲教师:徐红云2021/5/26l 如果不需要信号量的计数能力,可以使用信号量的一种简化版本,称为互斥如果不需要信号量的计数能力,可以使用信号量的一种简化版本,称为互斥信

23、号量信号量l MutexMutex是一个可以处于两态之一的变量:加锁和解锁是一个可以处于两态之一的变量:加锁和解锁l Mutex Mutex 使用两个过程:当一个线程(或进程)需要访问临界区时,它调用使用两个过程:当一个线程(或进程)需要访问临界区时,它调用mutex_lockmutex_lock,如果该信号量当前是解锁的,此调用成功,调用线程可自由进,如果该信号量当前是解锁的,此调用成功,调用线程可自由进入临界区;如果该互斥信号量已经加锁,调用线程被阻塞,直到在临界区中入临界区;如果该互斥信号量已经加锁,调用线程被阻塞,直到在临界区中的线程完成并调用的线程完成并调用mutex_unlock.

24、mutex_unlock.26Operating Systems and Applications 主讲教师:徐红云2021/5/26l 使用信号量要非常小心,否则很使用信号量要非常小心,否则很容易导致死锁容易导致死锁l HoareHoare等人提出了一种高级同步原等人提出了一种高级同步原语,称为语,称为管程管程l 一个管程是一个由过程、变量及一个管程是一个由过程、变量及数据结构等组成的集合,它们组数据结构等组成的集合,它们组成一个特殊的模块或软件包成一个特殊的模块或软件包l 进程可在需要的时候调用管程中进程可在需要的时候调用管程中的过程,但它们不能在管程之外的过程,但它们不能在管程之外声明的

25、过程中直接访问管程内的声明的过程中直接访问管程内的数据结构数据结构l 任意时刻管程中只能有一个活跃任意时刻管程中只能有一个活跃进程,使管程能有效地进程,使管程能有效地完成互斥完成互斥27Operating Systems and Applications 主讲教师:徐红云2021/5/26v当一个管程过程无法继续运行时,它会当一个管程过程无法继续运行时,它会在条件变量上执行在条件变量上执行waitwait操作,该操作导致调用进程自身阻塞操作,该操作导致调用进程自身阻塞. .v进程可以通过进程可以通过对其伙伴正在等待的一个条件变量执行对其伙伴正在等待的一个条件变量执行signalsignal操作

26、,以唤醒该伙伴进程操作,以唤醒该伙伴进程v条件变量不是计数器,也不能象信号量那样累积信号供以条件变量不是计数器,也不能象信号量那样累积信号供以后使用。所以后使用。所以waitwait操作必须在操作必须在signalsignal操作之前。操作之前。l互斥与同步互斥与同步28Operating Systems and Applications 主讲教师:徐红云2021/5/26说明:说明: 条件变量条件变量x:表示等待原因表示等待原因29Operating Systems and Applications 主讲教师:徐红云2021/5/26 用管程实现的生产者用管程实现的生产者- -消费者问题的解

27、法框架消费者问题的解法框架 管程定义管程定义 进程调用进程调用30Operating Systems and Applications 主讲教师:徐红云2021/5/2631Operating Systems and Applications 主讲教师:徐红云2021/5/26l消息传递使用两条原语:消息传递使用两条原语:sendsend和和receivereceivevSend(destination,&message),Send(destination,&message),向一个给定的向一个给定的目标发送一条消息目标发送一条消息. .vReceive(source,&message),Re

28、ceive(source,&message),从一个给定的源从一个给定的源接收一条消息。接收一条消息。如果没有消息可用,则接收者如果没有消息可用,则接收者可能被阻塞,直到一条消息到达,或者,带着可能被阻塞,直到一条消息到达,或者,带着一个错误码立即返回一个错误码立即返回. .32Operating Systems and Applications 主讲教师:徐红云2021/5/26l 用消息传递解决生产者用消息传递解决生产者- -消费者问题消费者问题v 消费者首先将消费者首先将N N条空消息发条空消息发送给生产者。当生产者向消送给生产者。当生产者向消费者传递一个数据项时,它费者传递一个数据项时

29、,它取走一条空消息,并送回一取走一条空消息,并送回一条填充了内容的消息条填充了内容的消息v 如果生产者的速度比消费者如果生产者的速度比消费者快,则所有消息最终都将被快,则所有消息最终都将被填满,等待消费者,生产者填满,等待消费者,生产者将被阻塞,等待返回一条空将被阻塞,等待返回一条空消息消息v 如果消费者速度快,则情况如果消费者速度快,则情况正好相反,所有的消息均为正好相反,所有的消息均为空,等待生产者来填充它们空,等待生产者来填充它们,消费者被阻塞,以等待一,消费者被阻塞,以等待一条填充过的消息条填充过的消息33Operating Systems and Applications 主讲教师:

30、徐红云2021/5/26l 用于进程组的同步机制。当一个进程到达屏障时,它用于进程组的同步机制。当一个进程到达屏障时,它就被屏障阻拦,直到所有进程都到达该屏障为止。就被屏障阻拦,直到所有进程都到达该屏障为止。屏障的使用:屏障的使用: (a)进程接近屏障进程接近屏障 (b) 除了一个之外所有的进程都被屏障阻塞除了一个之外所有的进程都被屏障阻塞 (c) 当最后一个进程到达屏障时,所有的进程一起通过当最后一个进程到达屏障时,所有的进程一起通过 34Operating Systems and Applications 主讲教师:徐红云2021/5/26ProcessesThreadsInterproc

31、ess communicationClassical IPC problemsScheduling35Operating Systems and Applications 主讲教师:徐红云2021/5/26把叉子叉子把叉子36Operating Systems and Applications 主讲教师:徐红云2021/5/26叉子把叉子fork37Operating Systems and Applications 主讲教师:徐红云2021/5/26down(forki);down(forki+1%N);up(forki);up(forki+1%N);38Operating Systems

32、and Applications 主讲教师:徐红云2021/5/26l 解决办法解决办法v 至多只允许四位哲学家同时去拿左边的筷子至多只允许四位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐而使更多的哲学家能够进餐v 仅当哲学家的左右两只筷子都可用时,才允仅当哲学家的左右两只筷子都可用时,才允许他拿起筷子进餐许他拿起筷子进餐1. 39Operating Systems and Applications 主讲教师:徐红云2021/5/26l 办法

33、办法2的一种实现方法的一种实现方法v使用一个数组使用一个数组state跟踪每一个哲学家是在进餐、思跟踪每一个哲学家是在进餐、思考还是饥饿考还是饥饿v一个哲学家只有在两个邻居都没有进餐时,才允许一个哲学家只有在两个邻居都没有进餐时,才允许进入到进餐状态进入到进餐状态v使用一个信号量数组,每个信号量对应一位哲学家使用一个信号量数组,每个信号量对应一位哲学家,在所需的叉子被占用时,想进餐的哲学家就被阻,在所需的叉子被占用时,想进餐的哲学家就被阻塞塞v当被占用的叉子被释放时,可能唤醒被阻塞的哲学当被占用的叉子被释放时,可能唤醒被阻塞的哲学家家v每个哲学家想进餐时,运行每个哲学家想进餐时,运行philo

34、sopher进程进程40Operating Systems and Applications 主讲教师:徐红云2021/5/26哲学家就餐问题的一种解法哲学家就餐问题的一种解法 (part 1)41Operating Systems and Applications 主讲教师:徐红云2021/5/26哲学家就餐问题的一种解法哲学家就餐问题的一种解法 (part 2)42Operating Systems and Applications 主讲教师:徐红云2021/5/26l问题描述:问题描述: 一个数据对象可被多个进程共享。其中有的进程一个数据对象可被多个进程共享。其中有的进程要求读,另一些进

35、程要求写或修改。把要求读的进要求读,另一些进程要求写或修改。把要求读的进程称为程称为“读者读者”进程,其它进程称为进程,其它进程称为“写者写者”进程进程。允许多个读者进程同时读共享的数据对象,但不。允许多个读者进程同时读共享的数据对象,但不允许写者进程与其它写者进程或读者进程同时访问允许写者进程与其它写者进程或读者进程同时访问共享的数据对象。共享的数据对象。43Operating Systems and Applications 主讲教师:徐红云2021/5/26db44Operating Systems and Applications 主讲教师:徐红云2021/5/26rcrcrc.mut

36、ex45Operating Systems and Applications 主讲教师:徐红云2021/5/26读者读者/ /写者问题的一种解法写者问题的一种解法46Operating Systems and Applications 主讲教师:徐红云2021/5/26问题描述问题描述:v 理发店有一位理发师理发店有一位理发师,一把理一把理发椅和发椅和n把供等候理发的顾客把供等候理发的顾客坐的椅子坐的椅子. v 如果没有顾客如果没有顾客,理发师便在理发理发师便在理发椅子上睡觉椅子上睡觉,当一个顾客到来时当一个顾客到来时,他必须先叫醒理发师他必须先叫醒理发师. v 如果理发师正在理发时又有顾如果

37、理发师正在理发时又有顾客到来客到来,如果有空椅子如果有空椅子,顾客就顾客就坐下来等候坐下来等候;如果没有空椅子如果没有空椅子,顾客就离开顾客就离开.v 要求为理发师和顾客各自编一要求为理发师和顾客各自编一段程序来描述他们的行为段程序来描述他们的行为,要求要求不能进入竞争条件不能进入竞争条件.47Operating Systems and Applications 主讲教师:徐红云2021/5/26l 分析分析v进程分为两类进程分为两类: 理发师进程和顾客进程理发师进程和顾客进程v资源资源t顾客进程的资源顾客进程的资源: 理发师理发师, 供顾客等候时坐的椅子供顾客等候时坐的椅子t理发师进程的资源

38、理发师进程的资源: 顾客顾客v互斥互斥t设立计数器设立计数器waiting 跟踪当前正在等待理发的顾客数跟踪当前正在等待理发的顾客数t设立信号量设立信号量mutex实现对实现对waiting 的互斥访问的互斥访问v同步同步: t只有顾客到来只有顾客到来, 理发师才能理发理发师才能理发, 设立信号量设立信号量customers,实现理实现理发师进程与顾客进程的同步发师进程与顾客进程的同步t只有理发师空闲只有理发师空闲, 顾客才能被理发顾客才能被理发, 设立信号量设立信号量barbers, 实现顾实现顾客进程与理发师进程的同步客进程与理发师进程的同步48Operating Systems and Applications 主讲教师:徐红云2021/5/26睡眠理发师问题的一种解法49Operating Systems and Applications 主讲教师:徐红云部分资料从网络收集整理而来,供大家参考,感谢您的关注!

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!