- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 进 程 的 同 步 * 第二章 进 程 管 理 第二章 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 上节回顾 PCB的组织方式:P33 进程的创建:PCB,资源,初始化,就绪。 P35 进程的终止:P36 进程的阻塞与唤醒:P37 进程的挂起与激活:P38 2.3 进 程 同 步 2.3.1 进程同步的基本概念 1. 两种形式的制约关系 间接相互制约关系: 申请I/O、CPU (2) 直接相互制约关系: 输入与运算 2. 临界资源(Critical Resouce) 生产者-消费者(producer-consumer)问题是一个著名的进程同步问题。 1.有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。 2.具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区中; 消费者进程可从一个缓冲区中取走产品去消费。 3.不允许消费者进程到一个空缓冲区去取产品;也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。 数组表示具有n个(0,1,…,n-1)缓冲区的缓冲池。 输入指针in指示下一个可投放产品的缓冲区,每当生产者进程生产并投放一个产品后,输入指针加1 输出指针out指示下一个可从中获取产品的缓冲区,每当消费者进程取走一个产品后,输出指针加1。 循环缓冲,in∶=(in+1)mod n;out∶=(out+1) mod n。 (in+1) mod n=out 表示缓冲池满; in=out 表示缓冲池空。 整型变量counter, 初始值为0,记录当前产品数量 Var n, integer; type item=…; var buffer:array[0, 1, …, n-1] of item; in, out: 0, 1, …, n-1; counter: 0, 1, …, n; 指针in和out初始化为1。在生产者和消费者进程的描述中,no-op是一条空操作指令,while condition do no-op语句表示重复的测试条件(condication),重复测试应进行到该条件变为false(假),即到该条件不成立时为止。在生产者进程中使用一局部变量nextp,用于暂时存放每次刚生产出来的产品;而在消费者进程中,则使用一个局部变量nextc,用于存放每次要消费的产品。 producer: repeat … produce an item in nextp; … while counter=n do no-op; buffer[in]∶ =nextp; in∶ =in+1 mod n; counter∶ =counter+1; until false; consumer: repeat while counter=0 do no-op; nextc∶ =buffer[out]; out∶ =(out+1) mod n; counter∶ =counter-1; consumer the item in nextc; until false; 虽然上面的生产者程序和消费者程序,在分别看时都是正确的,而且两者在顺序执行时其结果也会是正确的,但若并发执行时,就会出现差错,问题就在于这两个进程共享变量counter。生产者对它做加1操作,消费者对它做减1操作,这两个操作在用机器语言实现时, 常可用下面的形式描述: register 1∶ =counter; register 2∶ =counter; register1∶ =register 1+1; register 2∶ =register 2-1; counter∶ =register 1; counter∶ =register 2; 假设:counter的当前值是5。如果生产者进程先执行左列的三条机器语言语句,然后消费者进程再执行右列的三条语句, 则最后共享变量counter的值仍为5;反之,如果让消费者进程先执行右列的三条语句,然后再让生产者进程执行左列的三条语句,counter值也还是5,但是,如果按下述顺序执行: register 1 ∶ =counter; (register 1=5) register
您可能关注的文档
最近下载
- 电池及锂电池基础知识培训.pdf VIP
- 拆分合同协议.docx VIP
- 日剧剧本___ハケンの品格.doc VIP
- 劳动教育整理与收纳.pptx VIP
- 部编版2025 初中历史七上 第6课 战国时期的社会变革 课件(共28张PPT)(含音频+视频).pptx VIP
- (刘氏字辈派语寻宗资料第廿七辑.doc VIP
- 先锋sc-lx89-79-fxj-zhtw功放中文说明书.pdf VIP
- XX医生正高职称主任医师评审答辩材料PPT课件(完整框架).pptx VIP
- 教室整理与收纳过程中的创造性劳动实践.docx VIP
- 2024《小学劳动教育课程实施现状调查研究—以X小学为例》12000字.docx VIP
文档评论(0)