第2章 进程管理(part3)ppt课件.ppt

第2章 进程管理(part3)ppt课件.ppt

ID:58707458

大小:431.50 KB

页数:41页

时间:2020-10-04

第2章 进程管理(part3)ppt课件.ppt_第1页
第2章 进程管理(part3)ppt课件.ppt_第2页
第2章 进程管理(part3)ppt课件.ppt_第3页
第2章 进程管理(part3)ppt课件.ppt_第4页
第2章 进程管理(part3)ppt课件.ppt_第5页
资源描述:

《第2章 进程管理(part3)ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二章进程管理2.1进程的基本概念2.2进程控制2.3进程同步2.4经典进程的同步问题2.5管程机制2.6进程通信2.7线程12.3进程同步2.3.1进程同步的基本概念1.两种形式的制约关系间接相互制约关系。(2)直接相互制约关系。22.临界资源(CriticalResouce)生产者-消费者(producer-consumer)问题是一个著名的进程同步问题。它描述的是:有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区中;消费者进程可从一个

2、缓冲区中取走产品去消费。尽管所有的生产者进程和消费者进程都是以异步方式运行的,但它们之间必须保持同步,即不允许消费者进程到一个空缓冲区去取产品;也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。3Varn,integer;typeitem=…;varbuffer:array[0,1,…,n-1]ofitem;in,out:0,1,…,n-1;counter:0,1,…,n;指针in和out初始化为1。我们可利用一个数组来表示上述的具有n个(0,1,…,n-1)缓冲区的缓冲池。用输入指针in来指示下一个可投放产品的缓冲区,每当生产者进程生产并投放一个产

3、品后,输入指针加1;用一个输出指针out来指示下一个可从中获取产品的缓冲区,每当消费者进程取走一个产品后,输出指针加1。由于这里的缓冲池是组织成循环缓冲的,故应把输入指针加1表示成in∶=(in+1)modn;输出指针加1表示成out∶=(out+1)modn。当(in+1)modn=out时表示缓冲池满;而in=out则表示缓冲池空。此外,还引入了一个整型变量counter,其初始值为0。每当生产者进程向缓冲池中投放一个产品后,使counter加1;反之,每当消费者进程从中取走一个产品时,使counter减1。生产者和消费者两进程共享下面的变量:4producer:repe

4、at…produceaniteminnextp;…whilecounter=ndono-op;buffer[in]∶=nextp;in∶=in+1modn;counter∶=counter+1;untilfalse;consumer:repeatwhilecounter=0dono-op;nextc∶=buffer[out];out∶=(out+1)modn;counter∶=counter-1;consumertheiteminnextc;untilfalse;指针in和out初始化为1。在生产者和消费者进程的描述中,no-

5、op是一条空操作指令,whileconditiondono-op语句表示重复的测试条件(condication),重复测试应进行到该条件变为false(假),即到该条件不成立时为止在生产者进程中使用一局部变量nextp,用于暂时存放每次刚生产出来的产品;而在消费者进程中,则使用一个局部变量nextc,用于存放每次要消费的产品5虽然上面的生产者程序和消费者程序,在分别看时都是正确的,而且两者在顺序执行时其结果也会是正确的,但若并发执行时,就会出现差错,问题就在于这两个进程共享变量counter。生产者对它做加1操作,消费者对它做减1操作,这两个操作在用机器语言实现时,常可用下面

6、的形式描述:register1∶=counter;register1∶=register1+1;counter∶=register1;register2∶=counter;register2∶=register2-1;counter∶=register2;Memory5counter→register1register25665656假设:counter的当前值是5。如果生产者进程先执行左列的三条机器语言语句,然后消费者进程再执行右列的三条语句,则最后共享变量counter的值仍为5;反之,如果让消费者进程先执行右列的三条语句,然后再让生产者进程执行左列的三

7、条语句,counter值也还是5。但是,如果按下述顺序执行:register1∶=counter;(register1=5)register1∶=register1+1;(register1=6)register2∶=counter;(register2=5)register2∶=register2-1;(register2=4)counter∶=register1;(counter=6)counter∶=register2;(counter=4)Memory5counter

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。