操作系统2002--进程同步与互斥

操作系统2002--进程同步与互斥

ID:20172570

大小:202.00 KB

页数:68页

时间:2018-10-10

操作系统2002--进程同步与互斥_第1页
操作系统2002--进程同步与互斥_第2页
操作系统2002--进程同步与互斥_第3页
操作系统2002--进程同步与互斥_第4页
操作系统2002--进程同步与互斥_第5页
资源描述:

《操作系统2002--进程同步与互斥》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、进程同步与互斥一、进程的并发性二、进程的互斥三、进程的同步四、同步与互斥的混合问题一、进程的并发性程序并行性的表示:CobeginS1;S2;…;SnCoend在多道系统中,假如有两个进程A和B,它们要求顺序执行的操作如下:进程A:a1,a2,a3,a4,…,an进程B:b1,b2,b3,b4,…,bm这两个进程是在处理器上交替执行的,可能出现的执行序列有:a1,b1,a2,b2,…和a1,a2,b1,b2,…,等等,它们的执行在时间上是重叠的,这被称为“可同时执行的”。在多道程序环境下,进程之间存在以下

2、关系资源共享关系相互合作关系观察者beginL:observealorry;count:=count+1;gotoLend;报告者beginprintcount;count:=0;end;样例1:假定某一时刻,观察者已记录了N辆车,又在记录下一辆车,此时,报告者也开始工作。与时间有关的错误执行顺序1:(观察者)count:=count+1;(报告者)report;(报告者)count:=0;这是正确的结果。执行顺序2:(报告者)reportcount;(观察者)count:=count+1;(报告者)co

3、unt:=0;观察者刚刚记录的一辆车的信息丢失了造成不正确的因素是与进程占用处理器的时间、执行的速度以及外界的影响有关。这些因素都与时间有关,所以,称它们为“与时间有关的错误”样例2:飞机航班有N个售票处,每个售票处通过终端访问系统的公共数据区。售票处1begin从数据单元中取出现有余票;做减1操作;把结果送回到数据单元end;售票处2begin从数据单元中取出现有余票;做减1操作;把结果送回到数据单元end;假定现有余票为1执行顺序:(售票处1)从数据单元中取出现有余票;(售票处2)从数据单元中取出现有

4、余票;(售票处1)做减1操作;(售票处1)把结果送回到数据单元;(售票处2)做减1操作;(售票处2)把结果送回到数据单元;结果是把一张票卖给了两个顾客。与时间有关的错误产生的原因:多个进程不受限制的对同一数据对象进行存取操作。二、进程的互斥有共享资源的进程执行时出现与时间有关的错误,其根本原因是对共享资源的使用不受限制。进程交叉使用了共享资源从而造成了错误。几个基本概念1、临界资源一次仅允许一个进程访问的资源被称为临界资源2、临界区临界区的定义:把在进程中那段访问临界区的代码称为临界区。对临界区管理的要求

5、:一次最多让一个进程进入临界区任何一个进入临界区的进程必须在一个有限的时间内退出临界区。若有多个进程同时要求进入它们的临界区,则应在有限的时间内让其中之一进入。处理临界区的原则:1、当无进程处于临界区时,允许一进程立即进入临界区2、当某一进程已进入临界区时,其它试图进入临界区进程必须等待3、当某已进程离开临界区时,若有进程等待,则允许其中之一进入临界区4、当进程不能进入临界区时,应立即释放处理机,避免忙等。对临界资源同时提出访问请求的诸进程的执行要加以限制,以防止上述“与时间有关的错误”。这种对临界资源的

6、排它访问称为互斥。早期的研究结果表明,互斥问题的解决并不是一件很简单的事情。解决互斥问题的软件方法假设有两个进程Pi和Pj,共享一个临界资源R。方法一:设置一公用整型变量turn,用于指示被允许进入临界区的进程的编号。repeatwhiletern<>idonoop;进入临界区turn=j;untilfalse;repeatwhiletern<>jdonoop;进入临界区turn=i;untilfalse;该方法可以确保每次只允许一个进程进入临界区,但不符合处理临界区的原则1,易造成资源利用不充分。方法二

7、:基本思想:在每一个进程访问临界资源之前,先查看一下临界资源是否正被访问。若正被访问,则进程等待;否则进入自己的临界区。为此,设置一个数组flag,每个元素的初值为false,表示进程未进入临界区,进程进入临界区后,相应标志位置为true。repeatwhileflag[j]donoop;flag[i]=true;进入临界区flag[i]=false;untilfalse;repeatwhileflag[i]donoop;flag[j]=true;进入临界区flag[j]=false;untilfalse

8、;方法二可以满足原则1,但又出现了新的问题。比如,当Pi和Pj几乎在同时都要求进入临界区,因而都发现对方的访问标志为false,于是两进程都先后进入临界区,显然,这不符合临界区处理的原则2。为了解决这个问题,把标志位的含义改变为:true表示进程希望进入临界区,即当进程要进入临界区前,先将标志位flag置为true,表示进程已要求进入临界区,然后再去查看另一进程的标志,若另一进程的flag标志也为true,则本进程等待,否则,

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

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

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