操作系统 ch6-进程同步学习专业课件.pptx

操作系统 ch6-进程同步学习专业课件.pptx

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

主讲教师:范国祥

电话:0451811(O)

Mobile)

E-mail:fgx@hit.edu.cn

软件学院教研室

2016.04;第6章进程同步;第6章进程同步;6.1背景;生产者?消费者;生产者?消费者–简化代码;生产者?消费者引出的一个问题;术语1:竞争条件(RaceCondition)多个进程并发访问和操

作同一数据且执行结果与访问发生的特定顺序有关;避免竞争条件的一个尝试;counter--;;如何进入临界区?有多种方法!;解决临界区问题=即如何进入和退出临界区,以达到进程互斥及同步的目的!

有多种方法:

(1)一般软件方法

(2)关中断方法

(3)硬件原子指令方法

(4)信号量方法;;想别的办法…;;;结合了标记和轮转两种思想;Peterson算法的正确性;当进程P1(L)处于临界区运行,若此时P1(L)尚未离开它的临界区而被切换到P0(H)运行。若运行到它的“进入区”处于“忙等待”状态时恰巧被切换,则其处于“就绪态”。但由于P0(H)优先级高,则会优先被调度,因此它将永远会“忙等待”。;多个进程怎么办??面包店算法;面包店算法的正确性;6.3临界区问题解决方法;让用户考虑这样复杂的事显然不合适;;如果右边的三条机器指令原子执行就解决问题了!;booleanTestAndSet(booleantarget)

{

booleanrv=target;

target=true;

returnrv;

};6.3临界区问题解决方法;信号量?由伟大人物提出的伟大概念!!;6.3临界区问题解决方法;6.3临界区问题解决方法;6.3临界区问题解决方法;信号量vs.锁;6.3临界区问题解决方法;6.3临界区问题解决方法;6.3临界区问题解决方法;例3:若干进程协作完成一个共同任务而并发执行。

下图描述进程执行先后次序的前趋图。

使用P、V操作写出使这6个进程同步的过程。

;分析:(1)图中说明任务启动后P1先执行;

(2)当P1结束后,P2和P3可以开始;

(3)当P2完成后,P4,P5可以开始执行;

(4)仅当P3,P4,P5都执行完后,P6才能开始执行;

(5)后面的进程需要等待“上游”进程完成的“通知”。

解答:需要设置5个同步信号量f1、f2、f3、f4、f5,分别表示

进程P1、P2、P3、P4、P5是否执行完成,其初值均

为0(未完成,或未发“完成通知”)。

intf1=0/*表示进程P1是否执行完成*/

intf2=0/*表示进程P2是否执行完成*/

intf3=0/*表示进程P3是否执行完成*/

intf4=0/*表示进程P4是否执行完成*/

intf5=0/*表示进程P5是否执行完成*/;main()

{cobegin

P1();P2();P3();P4();P5();P6();

coend

}

P1()

{…/*P1相关任务代码*/

v(f1);

v(f1);/*P1完成后会发出2个通知,与P1作为前驱处理的2个进程

可以工作了。尽管此处不能看出来到底是通知哪个进程的,

但从后面P2()与P3()代码中可以看出*/

}

P2()

{p(f1);/*①检查P1是否完成;②若未完成,则P

文档评论(0)

155****4925 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档