操作系统课件3.ppt

操作系统课件3.ppt

ID:51496733

大小:110.50 KB

页数:35页

时间:2020-03-25

操作系统课件3.ppt_第1页
操作系统课件3.ppt_第2页
操作系统课件3.ppt_第3页
操作系统课件3.ppt_第4页
操作系统课件3.ppt_第5页
资源描述:

《操作系统课件3.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第七章进程同步与通信7.1进程的顺序性与并发性7.2与时间有关的错误7.3临界区与PV操作7.4进程的互斥7.5进程的同步7.6进程通信7.7UNIX中的进程同步与进程通信7.8线程概念7.1进程的顺序性与并发性7.1.1进程的顺序性一个程序由若干个程序段组成,而这些程序段的执行必须是顺序的,这种进程执行的方式就称为进程的顺序性。例如:顺序进程的特征(1)封闭性:程序在封闭的环境下运行,并独占全机,因此机内的资源的状态只有运行的程序操作才能改变它,其执行结果不受外界因素的影响。(2)可再现性:只要程序执行时的环境和初始条

2、件相同,程序经多次运行后所得的结果必然相同。7.1.2进程的并发性若干个进程同时在系统中运行,这些进程的执行在时间上是重叠的,一个进程的执行尚未结束,另一个进程的执行已经开始,即使这种重叠是很小的一部分,也称这几个进程是并发的。例:三个并发执行的进程。PQR并发进程之间的关系(1)无关的:一个进程的执行不影响其他进程的执行结果,也不依赖其他进程的进展情况,即它们是各自独立的,则说这些进程相互之间是无关的。(2)有交互的:一个进程的这些要依赖其他进程的进展情况,或者可能会影响其他进程的执行结果,则说这些进程相互之间是有交互

3、的。有交互的进程并发执行时,会破坏“封闭性”和“可再现性”7.2与时间有关的错误1.什么是与时间有关的错误执行结果与并发进程执行的相对速度相关。2.为什么会发生与时间有关的错误当两个或多个进程共享资源时,由于程序执行的速度不同,则会发生与时间有关的错误。★进程占用处理器的时间★进程执行的速度★外界的影响processObserverbeginL1:observealorry;count:=count+1;gotoL1;end;processReporterbeginprintcount;count:=0;end;例1:当

4、执行次序为:printcount;count:=count+1;count:=0;则会丢失一次计数值例2:机票预订系统AB旅行社A查到某机座空;::旅行社B查到某机座空;与其顾客商量;::旅行社A预订该机座;:B预订该机座;7.3临界区与PV操作7.3.1临界区有交互的并发进程执行时出现与时间有关的错误,其根本原因是对共享资源(变量)的使用不受限制,当进程交叉使用了共享变量就造成了错误。临界区:并发交叉中与共享变量有关的程序段相关临界区:并发交叉中涉及相同变量的那些临界区进入临界区的准则:(1)每次至多有一个进程处于临界

5、区;(2)当有若干个进程欲进入临界区时,应在有限的时间内使其进入;(3)进程在临界区内仅逗留有限的时间。7.3.2PV操作PV操作时由两个不被中断的过程——P操作原语和V操作原语组成。PV操作是对信号量实施操作信号量S是整型变量,其物理含义为:S>0时,S表示可使用的资源,或表示可使用资源的进程数。S=0时,表示无资源可供使用,或表示不允许进程再进入临界区。S<0时,

6、S

7、表示等待使用资源的进程个数,或表示等待进入临界区的进程个数。注意:创建信号灯时,应准确说明信号灯s的意义和初值(这个初值绝不能为负值)。信号量的值只能

8、由P、V操作来改变。(1)P操作对信号量S的P操作记为P(S)。P(S)是一个不可分割的原语操作,即取信号灯值减1,若相减结果为负,则调用p(S)的进程被阻,并插入到该信号灯的等待队列中,否则可以继续执行。(2)V操作对信号量S的V操作记为V(S)。V(S)是一个不可分割的原语操作,即取信号灯值加1,若相加结果大于零,进程继续执行,否则,要帮助唤醒在信号灯等待队列上的一个进程。7.3.3用PV操作管理临界区设:信号量S的初值为1。p(S)进入临界区csa进程pav(S)进入临界区csbp(S)v(S)进程pb信号量S的取

9、值范围:-2、-1、0、1beginS:semaphore;S:=1;cobeginprocessp1begin:P(S);……V(S);:end;processp2begin:P(S);……V(S);:end;processp3begin:P(S);……V(S);:end;coend;end;7.4进程的互斥进程的互斥:当有若干进程都要使用某已共享资源时,任何时刻最多只允许一个进程去使用资源,其他要使用它的进程必须等待,直到该资源的占有者释放了该资源。7.4.1用PV操作实现进程的互斥begincount:intege

10、r;count:=0;S:semaphore;S:=1;cobeginprocessObserverbeginL1:observealorry;P(S);count:=count+1;V(S);gotoL1;end;processReporterbeginP(S);printcount;count:=0;V(S);e

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

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

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