第4章进程管理-2

第4章进程管理-2

ID:44958407

大小:1.47 MB

页数:62页

时间:2019-11-06

第4章进程管理-2_第1页
第4章进程管理-2_第2页
第4章进程管理-2_第3页
第4章进程管理-2_第4页
第4章进程管理-2_第5页
资源描述:

《第4章进程管理-2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、(四)进程互斥一、进程互斥的概念1.临界资源例1:两个进程A、B共享一台打印机若不加以控制,两个进程的输出结果可能交织在一起,很难区分。例2:两个进程共享一个变量x设:x代表某航班已卖出的机座数,初值为0。p1和p2为两个售票进程,功能是对共享变量x的值加1。这两个进程在一个处理机C上并发执行,分别具有内部寄存器r1和r2。两进程并发执行的两种可能次序:序列A序列Bp1:r1:=x;p1:r1:=x;r1:=r1+1;p2:r2:=x;x:=r1;r2:=r2+1;P2:r2:=x;x:=r2;r2:=r2+1;p1:r1:=r1+1;x:=r2;x:=r1;执行结果:x=2执行结果:x=1特

2、点:当两个进程公用一个变量时,它们必须顺序的访问,一个进程对公用变量操作完毕后,另一个进程才能去访问和修改这一变量。(1)什么是临界资源我们把一次(一段时间内)仅允许一个进程使用的资源称为临界资源。许多物理设备,如输入机、打印机、磁带机等都具有这种性质。软件资源,如公用变量、数据、表格、队列等也都具有这一特点。(2)什么是临界区每个进程中访问临界资源的那段程序段称为临界区(临界段)。(3)什么是互斥在操作系统中,当某一进程正在访问某一存储区域时,就不允许其他进程来读出或者修改存储区的内容,否则,就会发生后果无法估计的错误。进程间的这种相互制约的关系称为互斥。例如:进程A正在执行CSa段时,进程

3、B就不能进入CSb段执行。进程A进程B……x=0CSbx=x+1CSa……x=x+1…操作系统如何保证进程的互斥呢?(1)保证进入当有若干个进程欲进入临界区时,应在有限的时间内使其进入;(2)排它性每次至多有一个进程处于临界区;(3)有限性进程在临界区内仅逗留有限的时间。?这些原则如何实现呢?二.锁和上锁、开锁操作1.什么是锁用变量w代表某种资源的状态,w称为“锁”2.进程使用临界资源的操作每个临界资源设置一个锁位:0:资源可用1:资源占用。锁操作:1.考察锁位的值;2.若原来的值是为“0”,将锁位置为“1”(占用该资源);3.若原来值是为“1”,(该资源已被别人占用),则转到1。开锁操作:进

4、程使用完资源后,将锁位置为“0”,称为开锁操作。3.上锁原语和开锁原语(1)上锁原语算法lock输入:锁变量w输出:无{test:if(w为1)gototest;/*测试锁位的值*/elsew=1;/*上锁*/}(2)开锁原语算法unlock输入:锁变量w输出:无{w=0;/*开锁*/}问题:(1)效率低。当锁已上时,当前上锁的进程忙等;(2)无法实现。当锁已上时,当前上锁(原语)的进程占有CPU不放,谁来开锁呢?死锁!改进的算法算法:lock(w)输入:W(锁变量)输出:无{if(w==1)sleep(pri,w);W=1;/*上锁*/}算法:unlock(w)输入:W(锁变量)输出:无{i

5、f(等待W队列不空)wakeup(w);W=0;/*开锁*/}4.用上锁原语和开锁原语实现进程互斥上锁原语开锁原语进入临界区CSa进程A上锁原语开锁原语进入临界区CSb进程B三.信号灯和P、V操作什么是信号灯信号灯是整型变量。a≥0时,表示绿灯,进程可继续执行。a<0时,表示红灯,进程停止执行。信号灯是一个确定的二元组(s,q),s是一个具有非负初值的整型变量,q是一个初始状态为空的队列。操作系统利用信号灯的值对并发进程和共享资源进行控制和管理。注意:创建信号灯时,应准确说明信号灯s的意义和初值(这个初值绝不能为负值)。2.P、V操作信号灯的值只能由P、V操作来改变。(1)P操作P操作定义对信

6、号灯s的P操作记为P(s)。P(s)是一个不可分割的原语操作,即取信号灯值减1,若相减结果为负,则调用P(s)的进程被阻,并插入到该信号灯的等待队列中,否则可以继续执行。入口s=s-1s>=0入信号灯等待队列置“等待状态”转进程调度返回YNP操作原语的实现(2)V操作V操作定义对信号灯s的V操作记为V(s)。V(s)是一个不可分割的原语操作,即取信号灯值加1,若相加结果大于零,进程继续执行,否则,要帮助唤醒在信号灯等待队列上的一个进程。入口s=s+1S<=0从该信号灯的等待队列中取出首元素置“就绪状态”转进程调度YN入就绪队列返回V操作原语的实现3.用信号灯的P、V操作实现进程互斥设:mute

7、x为互斥信号灯,初值为1,表示临界资源未被占用。(1)框图描述P(mutex)V(mutex)进入临界区CSa进程PaP(mutex)V(mutex)进入临界区CSb进程Pb(2)程序描述Main(){intmutex=1;/*互斥信号灯*/cobeginPa();Pb();coend}Pa(){…P(mutex);CSa;V(mutex);…}Pb(){…P(mutex);CSb;V(mutex

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

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

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