进程之间的并发控制和死锁.ppt

进程之间的并发控制和死锁.ppt

ID:48150623

大小:443.50 KB

页数:102页

时间:2020-01-16

进程之间的并发控制和死锁.ppt_第1页
进程之间的并发控制和死锁.ppt_第2页
进程之间的并发控制和死锁.ppt_第3页
进程之间的并发控制和死锁.ppt_第4页
进程之间的并发控制和死锁.ppt_第5页
资源描述:

《进程之间的并发控制和死锁.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、进程之间的并发控制和死锁进程的低级通信:互斥、同步、P/V操作、管程进程的高级通信:消息传递死锁:多进程竞争有限资源1共102页互斥关系:通过共享资源而使进程之间产生的关系叫做间接制约关系,又叫做互斥关系。可用“进程-资源-进程”来描述。[例]进程P1和P2在运行中都要使用打印机,打印机的使用必须独占。(1)各并发进程对资源的共享2共102页(2)系统中存在若干协作进程同步关系:通常,一个用户作业涉及一组并发进程(输入、计算和输出进程),这些进程须相互协作。在运行过程中,这些进程可能要在某些同步点上等待协作者发来信息后才能继续运行

2、。这种制约关系叫做直接制约关系。Typea.c

3、sort进程的同步与互斥关系,叫做进程通信,也叫低级通信。(Inter-ProcessCommunication,IPC)3共102页共享资源:①慢速的硬设备,如打印机等资源,②软件资源,如共享变量、共享文件等。临界资源:一次仅允许一个进程使用的资源。临界区(criticalsection):就是并发执行的进程访问临界资源的那段必须互斥执行的程序。进程的互斥是由于共享资源而引起的2.6.1进程之间的互斥4共102页任何两个进程不能同时处于其临界区。不应对CPU的速度和数量做任何假设。

4、临界区外运行的进程不得阻塞其他进程进入。不得使进程无限期等待在临界区之外。(饿死)为了正确而有效地使用临界资源,系统中的并发进程需要遵循如下四个准则:互斥使用;公平竞争;有空让进;有限等待5共102页进程A进程BT1T2T3T4timeB试图进入临界区B阻塞A离开临界区A进入临界区B进入临界区B离开临界区使用临界区的互斥6共102页解决进程之间互斥的方法软件实现方法硬件实现方法7共102页临界区互斥软件实现方法算法:设有两个进程Pi和Pj,通过两个共享两个变量,控制进入临界区:booleanflag[2];intturn;初值,f

5、lag[i]=flag[j]=false;turn=0;8共102页do{flag[i]=true;turn=j;while(flag[j]&&turn==j);临界区;flag[i]=false;remaindersection;}while(1);为了进入临界区,进程Pi首先设置flag[i]为true,设置turn为j,从而表示如果另一个想进入临界区,那么它能进入。如果两个进程同时试图进入,那么turn会几乎同时设置成i和j,但只有一个赋值语句的结果会保持,最终turn值决定了谁能进入临界区。进程Pi要求进入临界区的代码9共

6、102页关中断在进程刚进入临界区之前,禁止所有中断;离开之后再打开中断。因为CPU只有在发生时钟中断或其它中断时才会进行进程切换。关中断(disableInterrupt)〈criticalsection〉开中断(enableInterrupt)用硬件实现互斥的方法10共102页优点:简单。缺点:系统无法响应任何中断,限制了系统并发执行的能力。多处理机系统,禁止中断仅仅对执行本指令的那个CPU有效。其他CPU仍将继续运行,并可以访问共享资源,而进入临界区。并不能保证互斥。11共102页锁位变量W:为每个临界资源设置一个,以指示其当

7、前状态。W=0,表示资源空闲可用;W=1,表示资源已被占用。testandset指令可定义如下:Testandset(){K:if(w==1)gotok;elsew=1;}//一条机器指令,其执行不可被中断。(2)使用测试和设置指令12共102页voidp(inti){while(1){testandset();w=0;}}显然,采用这种加锁语句,由于进程循环测试,白白浪费了CPU的时间。这种现象又叫做“忙等”。voidmain(){intw=0;/*资源空闲*

8、/n=/*并发进程数*/p(1);p(2);…;p(n);}13共102页同步的原因:一组进程要合作完成一项任务。[例]两个用户进程共享缓冲区。计算进程将计算结果送入共享缓冲区,打印进程从缓冲区取数据打印。缓冲区空时不能取数据,满时不能送数据。由于计算进程与打印进程访问缓冲区的速度不匹配,需要进行同步。为了使进程同步,需要引入信号量机制。3.2.2进程之间的同步14共102页1965年,荷兰学者Dijkstra提出的一种同步机制---信号量机制。基本原理:两个或多个进程可以通过简单的信号实现合作。一个进程可以被迫在某一位置等待,直

9、到它接收到一个特定的信号。2.6.3信号量和P,V操作15共102页typedefstruct{//信号量的类型描述intvalue;//表示该类资源的可用数量structprocess*pointer;//等待使用该类资源的进程排成队列的头指针。

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

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

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