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