- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机与操作系统
第十一讲 并发程序设计;本主题教学目标;第十一讲 并发程序设计;11.1 并发进程;11.1.1 顺序程序设计;顺序程序设计特点;11.1.2 进程的并发性;并发程序设计;16:03;进程的并发性(2);进程的并发性(3);并发进程的分类;Bernstein条件;Bernstein条件举例;与时间有关的错误;机票问题;机票问题;主存管理问题;* 由于borrow和return共享代表主存物理资源的临界变量X,对并发执行不加限制会导致错误,例如,一个进程调用 borrow申请主存,在执行比较B和X大小的指令后,发现 BX,但在执行{进程进入等待主存资源队列}前,另一个
进程调用return抢先执行,归还所借全部主存资源;这时,由于前一个进程还未成为等待者,return中的{释放等主存资源进程}相当于空操作,以后当调用borrow的应用进程 被置成{等主存资源}时,可能己经没有其他进程再来归还 主存,从而,申请资源的进程处于永远等待状态;11.1.3 进程的交互: 竞争与协作;竞争关系带来的问题;竞争关系:死锁;竞争关系:进程的互斥;协作关系:进程的同步;进程的交互: 竞争与协作;11.2 临界区管理;11.2 临界区管理;11.2.1 互斥与临界区(1);互斥与临界区(2);16:03;16:03;16:03;16:03;临界区管理的尝试(4);11.2.3 实现临界区管理的硬件设施;(1) 关中断;(2)测试并建立指令(1);(2)测试并建立指令(2);对换指令(1);16:03;11.3 信号量与PV操作;前面方法解决临界区调度问题的缺点:
对不能进入临界区的进程,采用忙式等待测试法,浪费CPU时间
将测试能否进入临界区的责任推给各个竞争的进程会削弱系统的可靠性,加重用户编程负担;1965年E.W.Dijkstra提出了新的同步工具--信号量和P、V操作原语(荷兰语中“检测(Proberen)”和“增量(Verhogen)”的头字母)
一个进程在某一特殊点上被迫停止执行直到接收到一个对应
的特殊变量值,这种特殊变量就是信号量(semaphore),复杂的进程协作需求都可以通过适当的信号结构得到满足
Edsger W. Dijkstra: Solution of a problem in concurrent programming control. Commun. ACM, 8(9): 569 (1965);信号量与PV操作;16:03;PV操作与进程状态转换模型;PV操作与进程状态队列模型;信号量;11.3.2 信号量实现互斥;进程访问受信号量保护的共享数据;11.3.3 经典问题求解 (信号量与PV操作);Var A : ARRAY[1..m] of integer; mutex : semaphore;
mutex:= 1;
cobegin;Var A : ARRAY[1..m] of integer; s : ARRAY[1..m] of semaphore; s[j] : = 1;;16:03;16:03;16:03;57;16:03;16:03;16:03;生产者/消费者问题;Process producer Begin
L1:
produce a product; P(sput); B:=product;
V(sget);;16:03;多个生产者/多个消费者/多个缓冲单;多个生产者/多个消费者/多个缓冲单;16:03;:03;习题
(信号量与PV操作);读者/写者问题;睡眠的理发师问题;农夫猎人问题;银行业务问题;缓冲区管理;售票问题;吸烟者问题;11.4 管程;11.4 管程;11.4.1管程和条件变量;管程定义和属性;16:03;16:03;管程的条件变量;管程问题讨论;11.4.2 管程的实现 (Hoare方法);Hoare管程数据结构(1);Hoare管程数据结构(2);Hoare管程数据结构(3);Hoare管程数据结构(4);Hoare管程的enter( )和leave( )操作;Hoare管程的wait( )操作;Hoare管程的signal( )操作;16:03;11.4.3 管程求解进程同步与互斥问题;霍尔管程求解读者写者问题;霍尔管程求解读者写者问题(2);霍尔管程求解哲学家就餐问题;霍尔管程求解生产者消费者问题;16:03;99;11.5 进程通信;11.5 进程通信 (消息传递);直接通信;直接通信;消息格式;消息不是直接从发送者发送到接收者,而是发送到由临时保存这些消息的队列组成的一个共享数据结构,这些队列通常成为信箱(mailbox)
一个进程给合适的信箱发送消息,另一进程从信箱中获得消息
间接通信的send()和receive()定义如下:
send(A,mess
文档评论(0)