操作系统原理:进程管理(二)_第1页
操作系统原理:进程管理(二)_第2页
操作系统原理:进程管理(二)_第3页
操作系统原理:进程管理(二)_第4页
操作系统原理:进程管理(二)_第5页
已阅读5页,还剩241页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

进程的互斥

——你要,我也要

1、多道程序设计带来的问题

并发执行的多个进程可能产生互斥或同步的相互制约关系,不采取措施,可能导致结果的不可再现性。影响系统效率,而且还可以导致系统崩溃。3.4.1互斥的定义

1、进程互斥

指的是对某个系统资源,一个进程正在使用它,另外一个想用它的进程就必须等待,而不能同时使用。3.4.1互斥的定义

2、进程互斥是一种间接制约关系多道程序系统中进程间存在的一种源于资源共享的制约关系,主要是由被共享资源的独占使用性质所决定的。并发进程之间()彼此无关A必须同步B必须互斥C提交可能需要同步或互斥D单选题1分3、临界资源限定进程只能互斥地访问的资源(指一次仅允许一个进程使用的资源,不允许并发访问)。4、临界资源不能抢占,不可剥夺

在抢占式操作系统中,优先级别高的进程不能中途从低优先级进程手中把临界资源抢来使用。一、互斥的定义在下面的叙述中,正确的是()。临界资源是非共享资源A临界资源是任意共享资源B临界资源是互斥共享资源C临界资源是同时共享资源D提交单选题1分下列资源中,()是临界资源。打印机A非共享的资源B共享变量C共享缓冲区D提交多选题1分5、临界资源与非临界资源举例(1)临界资源

打印机、共享变量(2)可剥夺性使用的资源CPU、内存和磁盘等。一、互斥的定义下面列出的选项中,不属于可剥夺性资源的有()。CPUA内存B磁盘C磁带机D提交单选题1分一、互斥的定义6、临界区

进程中访问临界资源的那段程序代码称为临界区或临界段。7、同类临界区(相关临界区)使用同一临界资源的不同进程中的临界区。一、互斥的定义8、临界区互斥访问临界资源使用同一临界资源的进程应互斥地进入各自的临界区。9、临界区的使用原则

空则让进,忙则等待,等则有限,等则让权一、互斥的定义3.4.2、互斥机制1、操作系统实现进程的互斥、同步的机制形式(1)上锁与开锁原语(2)信号灯机制(重点)(3)管程机制2、上锁与开锁机制(1)特点

最简单的进程互斥机制(2)互斥实现机制使用锁变量W来表示某种临界资源的状态。

W=0表示资源空闲可用

W=1表示资源正被使用

3.4.2、互斥机制(3)上锁原语:LOCK(W)

算法思想L1:如果W=1那么转向L1;否则W=1返回1.考察锁位的值;2.如果原来的值为0,将锁位置1;3.如果为1,则返回第一步再次考察2、上锁与开锁机制3.4.2、互斥机制算法伪代码voidlock(锁变量w){test:if(w为1)gototestelsew=1;/*上锁*/}/*lock(w)*/(3)上锁原语:LOCK(W)

2、上锁与开锁机制3.4.2、互斥机制W=0;返回voidunlock(锁变量w){w=0;/*开锁*/}/*unlock(w)*/当进程使用完资源后,它必须将锁位置成“0”,称为开锁操作。(3)开锁原语:UNLOCK(W)

2、上锁与开锁机制3.4.2、互斥机制3、上锁与开锁原语实现进程互斥机制方法(1)欲进入临界区的进程,必须先执行上锁原语;(2)若上锁原语顺利通过,则进程可进入临界区;(3)当完成对临界区资源的访问后再执行开锁原语,以释放该临界资源。3.4.2、互斥机制例如,甲、乙两进程要访问同一类临界资源甲进程:其他代码;

LOCK(W);甲进程的临界区;

UNLOCK(W);其他代码;乙进程:其他代码;

LOCK(W);乙进程的临界区;

UNLOCK(W);其他代码;3.4.2、互斥机制4、上锁原语和开锁原语实现互斥优缺点优点:简单缺点:处理机效率不高

因为上锁原语中的条件测试操作可能引起CPU“忙等”。3.4.2、互斥机制3.5信号量机制

荷兰著名科学家,后来的计算机图灵奖获得者,E.W.Dijkstra于1965年提出了用作进程同步工具的信号量(semaphore)机制,这是一种卓有成效的进程互斥同步工具,已被广泛应用于现代计算机系统中。信号量机制的基本原理两个或多个进程可以利用彼此间收发的简单的信号来实现“正确的”并发执行,一个进程在收到一个指定信号前,会被迫在一个确定的或者需要的地方停下来,从而保持同步或互斥。3.5信号量机制

3.5.1信号量的概念1、信号量,也叫信号灯,一般是由两个成员组成的结构体,是一个确定的二元组(S,Q)

(1)S是个具有非负初值的整型变量,表示该信号量的值,且S的值只能由定义在信号量上的P操作原语和V操作原语来改变;(2)Q是个初始状态为空的队列。2、信号量类型是个复合类型,其一个分量是个整型分量S,另一个分量是个等待队列指针Q(一个是指向PCB的指针,当多个进程都等待同一信号量时,它们就排成一个队列,由信号量的指针项指出该队列的头。)3.5.1信号量的概念

3、信号量通常可以简单反映出相应资源的使用情况,它与P,V操作原语一起使用可实现进程的同步和互斥。3.5.1信号量的概念4、信号量的整型分量S的值的物理含义

(1)当S≥0时,表示某类可用资源的数目,或者说表示可以执行P操作而不会被阻塞的进程的数目;3.5.1信号量的概念(2)当S<0时,其绝对值表示因等待信号量S被阻塞在阻塞队列中的进程数,即系统中因请求该类资源而被阻塞的进程的数目(3)S的值只能由P、V操作来改变。

注意:S值负数值和非负数值代表含义不同。4、信号量的整型分量S的值的物理含义

3.5.1信号量的概念3.5.2

P、V操作原语1、P、V原语意思(1)P代表荷兰语的proberen,意为“测试”;(2)V代表荷兰语的verhogen,意为“增加”。现在很多国外的文献都使用wait和signal操作(或者down和up操作)代替P、V操作。C++中的P、V操作就用wait和signal操作。2、P(S)原语操作的算法描述(1)S减1;(2)若S≥0,则调用P(S)的进程返回,继续执行;(3)若S<0,调用者进程调用阻塞原语Block(Q),把自己插入到信号量S的阻塞队列Q中(把相应的PCB连入等待该信号量队列的末尾,并放弃处理机,进入等待)。

3.5.2

P、V操作原语设两个进程共用一个临界资源的互斥信号量mutex,当mutex=-1时表示()。一个进程进入了临界区,另一个进程等待A没有一个进程进入临界区B两个进程都进入了临界区C两个进程都在等待D提交单选题1分()操作不是P操作可完成的。为进程分配处理机A使信号量的值变小B可用于进程的同步C使进程进入阻塞状态D提交单选题1分P(s)入口S-1=>SS≥0Block(Q)

返回YN2P(S)操作的算法流程图描述3.5.2

P、V操作原语当一进程因在记录型信号量S上执行P原语操作而被阻塞后,S的值为()。>0A<0B≥0C≤0D提交单选题1分3.V(S)原语操作的算法描述(1)S加1;(2)若S>0,则调用V(S)的进程继续执行,返回;(说明没有等待该信号量的进程)(3)若S<=0,调用者进程调用唤醒原语Wakeup(Q),把等待信号量S的阻塞队列Q中的队首进程移出并唤醒进入就绪队列,返回。

3.5.2

P、V操作原语V(s)入口S+1=>SS>0Wakeup(Q)

返回YN3.V(S)原语操作的算法描述3.5.2

P、V操作原语4P(S)操作和V(S)操作的物理含义

(1)P(S)操作表示“等信号”,即测试一个要等的信号是否到达;(2)V(S)操作表示“发信号”。这个信号在实现同步时就是“合作者的伙伴进程已完成前趋任务”,在实现互斥时就是“临界资源可用”。3.5.2

P、V操作原语当一进程因在记录型信号量S上执行V()操作而导致唤醒另一进程后,S的值为()。>0A<0B≥0C≤0D提交单选题1分5、P(S)操作和V(S)操作的物理含义

在互斥问题中,每执行一次P(S)操作的含义,也可理解为进程请求一个单位的S类资源;每执行一次V(S)操作的含义,也可理解为进程释放一个单位的S类资源。3.5.2

P、V操作原语如果信号量的当前值为-4,则表示系统中在该信号量上有()个进程等待。4A3B5C0D提交单选题1分3.5.3用P、V操作原语实现进程的互斥1、在相关进程的临界区的前后分别施以P操作和V操作即可。这里所用信号量的初值一般为1,表示临界资源未被占用,且其可用数目为1。如果有三个进程共享同一互斥段,而且每次最多允许两个进程进入该互斥段,则信号量的初值应设置为()。3A1B2C0D提交单选题1分2、优势

用P、V操作原语实现进程互斥的效率更高,因为P操作中引入了阻塞机制,互斥进程之间有互相通信机制,所以消除了上锁原语中的CPU忙等现象。3.5.3用P、V操作原语实现进程的互斥P(S)V(S)P(S)V(S)P(S)V(S)P1P2P3互斥区3.5.3用P、V操作原语实现进程的互斥课堂练习1、多个进程对信号量S进行了5次P操作,2次V操作后,现在信号量的值是

-3,与信号量S相关的处于阻塞状态的进程有几个?信号量的初值是多少?2、有m个进程共享同一临界资源,若使用信号量机制实现对一临界资源的互斥访问,则信号量的变化范围是(

)。

例题

一个简化的异地售票程序,假设几乎同时两地有两个乘客要购买同一班次的车票各一张。

以上案例如果不加控制,会导致什么问题?

3.5.3用P、V操作原语实现进程的互斥例3.1试用P、V操作实现火车联网订票系统中北京、天津两地的两个终端售票进程发售同一班次车票的过程。

3.5.3用P、V操作原语实现进程的互斥用P、V原语控制进程互斥与同步的主要步骤:(1)分析清楚题目涉及的进程间的制约关系。(2)设置信号量(包括信号量的个数和初值,对于同步问题还要写出信号量的物理含义)。(3)给出进程相应程序的算法描述或流程控制,并把P、V操作加到程序的适当处。3.5.3用P、V操作原语实现进程的互斥北京售票终端进程:

①根据顾客订票要求找到公共数据单元PK;②P(S);③把PK的值读到工作寄存器R1中;④根据顾客订票数修改R1;⑤将R1的值回写到PK中;⑥V(S);⑦售出顾客所订的票,返回;

天津售票终端进程

①根据顾客订票要求找到公共数据单元PK;②P(S);③把PK的值读到工作寄存器R2中;④根据顾客订票数修改R2;⑤将R1的值回写到PK中;⑥V(S);⑦售出顾客所订的票,返回;3.6进程的同步(synchronism)

——你等我,我也等你

多道程序系统中,许多进程之间可能存在以下两种制约关系:源于资源共享的间接制约关系(互斥)

源于合作相互的直接制约关系(同步)

——你等我,我也等你

1、进程互斥与同步的关系

进程同步是指多个合作进程在独自并发执行过程中的某些确定的时序点上“你等我,我也等你”的同步约束,进程互斥可视为进程同步的特例。3.6进程的同步(synchronism)3.6.1同步的定义

1、定义

指的是两个或多个进程为了合作完成同一个任务,在执行速度或某些个确定的时序点上必须相互协调。

当一个进程到达了某一确定点而没有得到合作伙伴发来的“已完成某些操作”的消息时必须等待,直到该消息到达被唤醒后,才能继续向前推进。(1)单向同步关系

进程之间同步关系有时也被形象地称为“生产者与消费者”之间的关系,“产品”(即生产者进程的输出,亦即消费者进程的输入)是它们的纽带,它们在执行过程中的某个或某些确定的时序点上有着固定的前趋后继的同步约束,即先“生产”后“消费”,这是一种“你等我”的关系。2进程同步关系分析3.6.1同步的定义(2)双向同步关系(互为生产者与消费者)在稍微复杂一点的进程同步问题里,合作进程间的“生产者与消费者”的关系或身份是可以经常转换的,因此,这些合作进程在执行过程中就会出现时而你等我,时而我等你的现象。

不管是单向或双向同步关系,产品都是信号量。

2进程同步关系分析3.6.1同步的定义(3)相似处

进程的互斥实际上是进程同步的一种特殊情况;进程的互斥和同步可以都统称为进程同步。2进程同步关系分析3.6.1同步的定义(4)进程同步与互斥区别进程互斥是进程间竞争互斥资源的使用权,这种竞争没有固定的必然联系,哪个进程竞争到使用权就归那个进程使用,直到不需要使用时再归还;进程同步是指多个进程为了合作完成同一个任务,在执行速度或某些个确定的时序点上必须相互协调,后面进程的执行需要前面运行进程的输出。2进程同步关系分析3.6.1同步的定义在操作系统中,有一组进程,进程之间具有直接相互制约性。这组并发进程之间()。必定无关A必定相关B可能相关C相关程度相同D提交单选题1分1、P、V操作配对出现对同一个信号量的P、V操作不能同时出现在同一个进程的程序里,而是分别出现在一个生产者进程和它的合作伙伴—消费者进程的代码中。

生产者生产产品之后执行V操作,而消费者在消费产品之前用P操作。

3.6.2用P、V操作原语实现进程的同步2、P、V操作的出现位置在各个合作进程中确定的时序点上。

生产者进程在完成了前趋的生产任务后,应立即给消费者进程发送一条“已完成前趋生产任务”的消息,执行V操作;

后继的消费者进程在消费前,应该执行对同一个信号量的P操作,以测试其合作伙伴——生产者进程“已完成前趋生产任务”的消息是否到来,如果到来就开始消费,否则就阻塞自己。3.6.2用P、V操作原语实现进程的同步3、解决进程同步问题的主要步骤

(1)分析题目涉及的进程间的制约关系;(2)设置信号量(包括信号量的个数和初值及其物理含义),合作进程间需要收发几条消息相应就设置几个信号量;(3)给出进程相应程序的算法描述或流程控制,并把P、V操作加到程序的适当处。3.6.2用P、V操作原语实现进程的同步=》例3.2生产者——消费者问题

公用缓冲池,有n个缓冲区一组生产者生产产品一组消费者取走产品3.6.2用P、V操作原语实现进程的同步4、生产者-消费者问题是相互合作进程关系的一种抽象

输入——计算——打印生产者消费者生产者消费者系统中使用资源的进程——消费者系统中释放同类资源的进程——生产者3.6.2用P、V操作原语实现进程的同步5、生产者与消费者进程关系分析(1)生产者—消费者之间的同步关系表现为:一旦缓冲池中所有缓冲区均装满产品时,生产者必须等待消费者提供空缓冲区;一旦缓冲池中所有缓冲区全为空时,消费者必须等待生产者提供满缓冲区。

3.6.2用P、V操作原语实现进程的同步(2)生产者—消费者之间还有互斥关系:由于缓冲池是临界资源,所以任何进程在对缓冲区进行存取操作时都必须和其他进程互斥进行。5、生产者与消费者进程关系分析3.6.2用P、V操作原语实现进程的同步6、生产者与消费者进程同步与互斥实现(1)信号量设置

Ⅰ)同步信号量empty,初值为n,表示消费者已把缓冲池中全部产品取走,有n个空缓冲区可用。

Ⅱ)同步信号量full,初值为0,表示生产者尚未把产品放入缓冲池,有0个满缓冲区可用。

Ⅲ)互斥信号量mutex,初值为1,以保证同时只有一个进程能够进入临界区,访问缓冲池。3.6.2用P、V操作原语实现进程的同步生产者i

消费者j生产出一产品;P(full);P(empty);P(mutex);P(mutex);从缓冲区取出一产品;将该产品放入缓冲区;V(mutex);V(mutex);V(empty);V(full);消费该产品;

6、生产者与消费者进程同步与互斥实现3.6.2用P、V操作原语实现进程的同步如果将生产者的两个P操作对调?生产者i消费者j生产出一产品;P(full);P(mutex);P(mutex);P(empty);从缓冲区取出一产品;将该产品放入缓冲区;V(mutex);V(mutex);V(empty);V(full);消费该产品;多个P操作的顺序问题?如果将消费者的两个P操作对调?生产者i

消费者j生产出一产品;P(mutex);P(empty);P(full);P(mutex);从缓冲区取出一产品;将该产品放入缓冲区;V(mutex);V(mutex);V(empty);V(full);消费该产品;分析P操作的顺序(1)P操作的顺序很重要,顺序不当会产生死锁。Consumer:Producer:P(empty);P(mutex);oneunit-->buf;V(mutex);V(full);P(full);P(mutex);//进入区oneunit<--buf;V(mutex);V(empty);//退出区分析P操作的顺序(1)P操作的顺序很重要,顺序不当会产生死锁。当full=0,mutex=1时,执行顺序:

Consumer.P(mutex);Consumer.P(full);//C阻塞,等待Producer发出的full信号

Producer.P(empty);Producer.P(mutex);//P阻塞,等待Consumer发出的mutex信号死锁,还有其他的执行序列可以产生死锁吗?如果一个进程中有同步与互斥的P操作,通常将P(同步信号量)放在前面,而P(互斥信号量)放在后面。分析P操作的顺序如果将两个V操作对调?生产者i

消费者j生产出一产品;P(full);P(mutex);P(mutex);P(empty);从缓冲区取出一产品;将该产品放入缓冲区;V(mutex);V(full);V(empty);V(mutex);消费该产品;V操作如果有同步和互斥信号量时,顺序可以随意。

例3.3读者——写者问题1、问题描述:(1)一组读者与一组写者循环访问共享的同一个数据对象。(2)读者:指能对共享数据对象读的进程,写者:指对共享数据对象只要求写的进程。(3)规定:多个读者可以同时读这个数据对象,但决不允许多个写者同时对这个数据对象进行写操作,也不允许读者、写者同时访问这个数据对象。2问题分析

读者—写者问题是共享数据对象的非合作进程关系的一种抽象。(1)如文件管理模块中读文件、写文件等许多操作进程之间(2)读者—写者问题是指保证一个写者进程必须与其他写者或读者进程互斥地访问一个共享数据对象的同步问题。

例3.3读者——写者问题3进程互斥模型分析(1)读者—写者之间的互斥关系

写者与写者的互斥、写者与读者的互斥,设一个公用的初值为1的互斥信号量RW_mutex。

但是为了实现了读者与读者的共享资源,需引入一个读者计数器变量RC,用于记录读者是否进入资源,如没有进去,则需要互斥进入资源,否则,可以随意进入,只需增加RC的值即可。

例3.3读者——写者问题(2)读者—读者之间的互斥关系

再设一个读者公用的初值为1的互斥信号量R_mutex实现各个读者间互斥的访问RC。3进程互斥模型分析

例3.3读者——写者问题4读者写者互斥模型的原语实现(1)所用信号量和其他变量设置如下:互斥信号量RW_mutex,初值为1,用于实现写者与其他写者或读者互斥地访问共享的数据对象。互斥信号量R_mutex,初值为1,用于实现诸读者互斥地访问读者计数器变量。整型变量RC,初值为0,用于对读者进行记数。3.6.2用P、V操作原语实现进程的同步(2)用信号量机制解决读者—写者问题的算法描述如下:

读者

写者P(R_mutex);

P(RW_mutex);若RC=0则P(RW_mutex);对数据对象进行写操作;RC加1;

V(RW_mutex);V(R_mutex);读数据对象;P(R_mutex);RC减1;若RC=0则V(RW_mutex);

V(R_mutex);4读者写者互斥模型的原语实现例3.4试用用信号量机制描述两人下象棋的过程1、问题描述

两人下象棋的过程可以概括为:一开始只能是“红先黑后”,以后两人要循环轮流走子,直至某一方获胜或双方和棋为止。这是个只有一个生产者和一个消费者的生产者——消费者问题,是个典型的“你等我,我也等你”的问题。红方是总的前趋任务——生产者进程,黑方是总的后继任务——消费者进程,但由于下棋过程必须轮流走子,所以红黑双方的生产者消费者身份会轮流改变。棋盘则是生产者与消费者共享的缓冲。

2、二人对弈过程是的同步过程的原语实现(1)信号量设置如下同步信号量hong

,初值为1,表示黑方已走子,开始时可使红方先行不受阻。

同步信号量hei

,初值为0,表示红方尚未走子,开始时可使黑方先行受阻。3.6.2用P、V操作原语实现进程的同步进程之间存在哪几种相互制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?(1)若干同学去图书馆借书。(2)两队举行篮球比赛。(3)流水线生产的各道工序。(4)商品生产和消费。作答正常使用主观题需2.0以上版本雨课堂可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。正常使用需3.0以上版本进程间存在着两种相互制约的关系:直接制约关系(即同步问题)和间接制约关系(即互斥问题)。同步问题是存在逻辑关系的进程之间相互等待产生的制约关系,互斥问题是相互无逻辑关系的进程间竞争使用相同的资源所发生的制约关系。

(1)属于互斥关系,因为书的个数是有限的,一本书只能借给一个同学。

(2)属于互斥关系,篮球只有一个,两队都要争夺。

(3)属于同步关系,各道工序的开始都依赖前道工序的完成。

(4)属于同步关系,商品没生产出来,消费无法进行,商品未消费完,生产也无需进行。答案解析答案解析主观题10分(2)用信号量机制描述的二人下象棋过程如下黑方:P(hei);

若被红方将死,则投子认负,结束;若同意与红方作和,则结束;否则,根据棋局思考后走一子;V(hong);红方:P(hong);

若被黑方将死,则投子认负,结束;若同意与黑方作和,则结束;否则,根据棋局思考后走一子;V(hei);2、二人对弈过程是的同步过程的原语实现例3.5某小型超级市场,可容纳50人同时购物。入口处有篮子,每个购物者可拿一只篮子入内购物。出口处结帐,并归还篮子(出、入口禁止多人同时通过)。试用信号量和P、V操作写出购物者的同步算法。这是个典型的进程互斥问题互斥经典模型—超市模型P、V原语实现步骤1、所用信号量设置如下:(1)互斥信号量S,初值为50,用以保证最多可以有50个购物者同时进入超市。(2)互斥信号量mutex,初值为1,用以保证同时只能有一个购物者进程进入出入口拿起篮子或者结帐后放下篮子。3.6.2用P、V操作原语实现进程的同步购物者i进程(解法一)P(S);

P(mutex);

从入口处进超市,并取一只篮子;V(mutex);进超市内选购商品;P(mutex)到出口结帐,并归还篮子;V(mutex)从出口离开超市;V(S);

↓结束.2、用购物过程的算法描述如下购物者i进程(解法二)P(S);

P(mutex1);

从入口处进超市,并取一只篮子;V(mutex1);进超市内选购商品;P(mutex2)到出口结帐,并归还篮子;V(mutex2)从出口离开超市;V(S);

↓结束.2、用购物过程的算法描述如下经典模型—生产者与消费者变形模型例3.6问题描述:

桌上有个只能盛得下一个水果的空盘子。爸爸可向盘中放苹果或桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定:当盘子空时,一次只能放入一个水果供吃者取用。试用信号量和P、V操作实现爸爸、儿子和女儿这三个循环进程之间的同步。本题属于生产者——消费者问题模型的变形,相当于一个能生产两种产品的生产者(爸爸)向两个消费者(儿子和女儿)提供产品的同步问题。因此,可参考生产者与消费者问题的解法。

2、问题分析经典模型—生产者与消费者变形模型3用P、V原语实现同步(1)所用信号量设置如下

同步信号量empty,初值为1,表示盘子是空的,即儿子或女儿已把盘中的水果取走。

同步信号量orange,初值为0,表示爸爸尚未把桔子放入盘中同步信号量apple,初值为0,表示爸爸尚未把苹果放入盘中

经典模型—生产者与消费者变形模型(2)使用信号量机制的三个进程的同步描述如下

爸爸进程(P):儿子进程(C1):

女儿进程(C2):P(empty);

P(orange);

P(apple);将水果放入盘中;

从盘中取出桔子;

从盘中取出苹果;若放入的是桔子,

V(empty);

V(empty);则V(orange);吃桔子;

吃苹果;否则,V(apple);3用P、V原语实现同步经典模型—生产者与消费者变形模型经典模型-独木桥模型(单向双工)例3.7设A、B两点之间是一段东西向的单行车道,现在要设计一个AB路段自动管理系统,管理规则如下:当AB间有车辆在行驶时同方向的车可以同时驶入AB段,但另一方向的车必须在AB段外等待;当AB段之间无车辆行驶时,到达AB段的任一方向的车都可进入AB段,但不能从两个方向同时驶入,即只能有一个方向的车驶入;当某方向在AB段行驶的车辆驶出了AB段且暂无车辆进入AB段时,应让另一方向等待的车辆进入AB段行驶。试用信号量和P、V操作管理AB路段车辆的行驶。

1、原语互斥实现步骤(1)所用信号量和其他变量设置如下Ⅰ)整型变量Car_A,初值为0,用于对从A点(东)驶入AB段的车辆进行记数。Ⅱ)整型变量Car_B,初值为0,用于对从B点(西)驶入AB段的车辆进行记数。Ⅲ)互斥信号量mutex,初值为1,

用于实现不同方向的第一辆车互斥驶入AB路段。经典模型-独木桥模型(单向双工)(1)所用信号量和其他变量设置如下Ⅳ)互斥信号量ma,初值为1,用于实现东西向的车互斥地访问计数器变量Car_A。Ⅴ)互斥信号量mb,初值为1,用于实现西东向的车互斥地访问计数器变量Car_B。2、原语互斥实现步骤经典模型-独木桥模型(单向双工)通过AB路段向西行驶的车辆iP(ma);

若Car_A=0则

P(mutex);

Car_A加1;

V(ma);

车辆从A点通过AB路段到达B点;P(ma);

Car_A减1;

Car_A=0则

V(mutex);V(ma);(2)算法描述通过AB路段向东行驶的车辆jP(mb);若Car_B=0则

P(mutex);Car_B加1;V(mb);车辆从B点通过AB路段到达A点P(mb);Car_B减1;

Car_B=0则V(mutex);V(mb);3.8哲学家进餐问题(信号量联合问题)(1)问题描述五个哲学家一生都在思考和进餐中度过,他们围坐在一个圆桌周围,每人面前放了一份美味的餐点,两份相邻的餐盘中间都放了一根筷子,哲学家需要把自己左右两侧的两个筷子分别拿起才能进餐。哲学家的行为模式就是平时思考,饿了就分别拿起两侧的筷子,若两次都能成功,即获得了两根筷子时,该哲学家就可以进餐了。当他吃饱后,为了不让其他人挨饿,需要马上将两根筷子分别放下,注意,这里并没有对拿起和放下筷子的次序做强制规定。例3.8哲学家进餐问题2、问题分析(1)一种最直接的解法是强制每个哲学家都先拿起左边的筷子,成功后再去拿起右边的筷子。(2)缺点是可能会产生严重的“饥饿”现象。若五个哲学家同时拿起左筷子,此时桌子上没有一根未用的筷子,每个哲学家都在等待其右边的邻居进餐完毕后释放筷子给自己。那么所有的哲学家将僵持并永久等待下去,导致长期饥饿。例3.9理发师问题1、问题描述:在理发店中有一位理发师、一把理发椅和n把供顾客等待的等待位。若没有顾客,理发师便在理发椅上睡觉。当第一个顾客到来时,他必须先叫醒理发师为其服务。当理发师正在为顾客服务时,新到来的顾客将查看是否有空闲的等待位,若有就坐下等待,若无就离开理发店。理发师在为当前顾客服务完时要查看是否有等待的顾客,若有就继续服务,若无就马上睡去。2、问题分析与解决(1)设置三个信号量customers,用来记录等待理发的顾客数(不包括正在理发的顾客);barbers,记录正在等候顾客的理发师数,其值应为0或1,如果有多个理发师,则值可设为n;3.9理发师问题2、问题分析与解决(1)设置三个信号量此外还应设置一个变量waiting,它也是记录等待的顾客数,是customers的一个副本。设置waiting的原因是customers是一个信号量,无法修改其自己的当前值。当一个顾客进入理发店后,首先做的就是检查等候的顾客数量waiting,若该数量少于等待位数,顾客坐下等待,否则离开;mutex,用于理发师和顾客互斥访问waiting值。3.9理发师问题3.9理发师问题P、V原语实现进程同步与互斥的实质实现进程的同步互斥实际就是给进程的并发执行增加一定的限制,以保证被访问的共享数据的完整性和进程执行结果的可再现性。1、用信号量机制解进程同步与互斥的三个步骤(1)分析进程间的制约关系(2)设置信号量(3)实施P、V操作。

第一步是基础、关键,第三步是核心。P、V原语实现进程同步与互斥的实现总结三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区。P1每次用produce()生成一个正整数并用put()送入缓冲区某一空单元中;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述。

作答正常使用主观题需2.0以上版本雨课堂可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。正常使用需3.0以上版本定义资源信号量empty、even、odd,用于控制生产者与消费者之间的同步,其中,empty表示空缓冲区的数目,even表示缓冲区中偶数的个数,odd表示缓冲区中奇数的个数;

定义互斥信号量mutex,用于实现进程对缓冲区的互斥访问。semahporeempty=N,even=0,odd=0,mutex=1;答案解析答案解析主观题10分(1)相同点:P、V操作总是配对出现的。(2)不同点P、V在互斥问题中总是出现在同一个进程的代码中,且紧紧夹着临界区;在同步问题中,却是分别出现在两个合作进程的代码中,需要等消息的一方用P操作,相应的对同一信号量的V操作则在发出此消息的另一方中。2、进程同步与互斥在P、V形式上的异同P、V原语实现进程同步与互斥的实现总结互斥与同步习题和解决1、有两个用户进程A和B,在运行过程中都要使用系统中的一台打印机输出计算结果。试说明A、B两进程之间存在什么样的制约关系?为保证这两个进程能正确地打印出各自的结果,请用信号量和P、V操作写出各自的有关申请、使用打印机的代码。要求给出信号量的含义和初值。解:

(1)A、B两进程之间存在互斥的制约关系。因为打印机属于临界资源,必须一个进程使用完之后另一个进程才能使用。互斥与同步习题和解决(2)mutex:用于互斥的信号量,初值为1。进程A

进程B...

…P(mutex)

P(mutex)

申请打印机

申请打印机使用打印机

使用打印机

V(mutex)

V(mutex)

互斥与同步习题和解决2、有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问:

(1)为描述读者的动作,应编写几个程序,设置几个进程?

(2)试用PV操作描述读者进程之间的同步关系。互斥与同步例题读者的动作都是一样的:登记进入阅览室,阅读,撤消登记离开阅览室,因此可写一个程序,设n(n≥100)个进程。分析读者共享的资源有阅览室的座位和登记表,因此诸个读者进程之间有两种互斥制约关系,需设2个信号量来实现:seat:用于实现诸读者对阅览室的空闲座位的互斥竞争,初值为100;mutex:用于实现诸读者对登记表的互斥访问,初值为1。

分析解:(1)可写一个程序,设n(n≥100)个进程

(2)读者进程readeri(i=1,2,3,……)描述如下:P(seat);

/*申请空座位*/

P(mutex);

/*申请登记*/

登记;

V(mutex)

/*允许其他读者登记*/

阅读;

P(mutex);

/*申请撤消登记*/

撤消登记;

V(mutex);

/*允许其他读者撤消登记*/V(seat);

/*释放座位,允许他人进入*/互斥与同步例题有一个仓库可以存放A、B两种物品,每次只能存入一件物品(A或B)。存储空间足够大,只是要求–n<(A的件数–B的件数)<m,其中n和m是正整数。试用存入A、存入B和P、V操作,描述物品A和物品B的入库过程。作答正常使用主观题需2.0以上版本雨课堂主观题10分今有三个并发进程R,M,P,它们共享了一个可循环使用的缓冲区B,缓冲区B共有N个单元。进程R负责从输入设备读信息,每读一个字符后,把它存放在缓冲区B的一个单元中;进程M负责处理读入的字符,若发现读入的字符中有空格符,则把它改成“,”;进程P负责把处理后的字符取出并打印输出。当缓冲区单元中的字符被进程P取出后,则又可用来存放下一次读入的字符。请用PV操作为同步机制写出它们能正确并发执行的程序。作答正常使用主观题需2.0以上版本雨课堂主观题10分[课堂作业]1、用P.V操作解决司机与售票员的问题2、用P.V操作解决下图之同步问题:getcopyputfstg思考与作业3、写出下列进程趋势图中各进程之间同步关系S1S4S2S3S5S6

3.7进程通信(communication)3.7.1进程通信方式3.7.2消息缓冲机制3.7.3邮箱通信3.7.4进程通信实例-管道1、简介(1)进程之间的信息交换称为进程通信。(2)合作进程间所交换的信息量,少则是一个状态或数据,多则成千上万字节的。(3)按通信所交换的数据量多少进程通信分为低级和高级两种方式。

3.7.1进程通信方式低级通信高级通信2、通信方式划分(1)按照通信量大小划分

3.7.1进程通信方式低级通信:在进程间交换数据量少的进程通信方式。一般只传送一个和几个字节的信息,达到控制进程执行速度的作用(例如进程的同步与互斥)。信号量机制就是一种低级通信方式,它作为同步工具是卓有成效的,但作为通信工具则不够理想。2、通信方式划分(1)按照通信量大小划分

3.7.1进程通信方式低级通信:在进程间交换数据量少的进程通信方式。缺点:传输效率低;通信对用户不透明2、通信方式划分(1)按照通信量大小划分

3.7.1进程通信方式高级通信

用户可以直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。优点:传输效率高。通信过程对用户是透明的2、通信方式划分(1)按照通信量大小划分

3.7.1进程通信方式=>共享存储器系统包括共享内存变量(如信号量机制)和共享内存区两种通信方式。=>消息传递系统包括消息缓冲和信箱两种通信方式。=>管道通信方式2、通信方式划分(2)根据通信实施的方式和数据存取的方式

3.7.1进程通信方式3.7.2高级通信方式主从式会话式消息或邮箱机制共享存储区方式1、主从式通信方式(1)特点:主进程可以自由使用从进程资源或数据从进程的动作受到主进程的控制主进程和从进程的关系固定(2)典型例子:终端控制进程和终端进程3.7.2高级通信方式2、会话式通信方式定义:通信进程双方成为使用进程和服务进程,使用进程调用服务进程提供的服务两进程在通信时有固定连接关系典型案例用户进程和磁盘管理进程通信3.7.2高级通信方式3、消息或邮箱机制(1)消息:表示通信进程之间大信息量的交换(2)消息组成:发送进程名、接受进程名、数据和有关数据操作图3.16消息的组成3.7.2高级通信方式(3)通信特点只要存在空缓冲区或邮箱,发送进程就可以通信发送进程与接收进程没有直接连接关系,接收进程可以接受多个发送进程消息3、消息或邮箱机制3.7.2高级通信方式(3)通信特点发送和接收进程之间存在缓冲区或邮箱用来存放被传送消息图3.17缓冲区或邮箱通信结构3、消息或邮箱机制3.7.2高级通信方式4、共享存储区通信(1)特点通信进程之间交互信息时通过对同一共享数据区的操作达到通信目的,共享区属于每一进程在通信中不需要移动数据。3.7.2高级通信方式3.7.3消息缓冲机制1、发送进程:在自己内存空间设置发送缓冲区,把欲发送消息填入其中,最后使用发送进程将消息发送出去2、接收进程:在自己的内存中设置相应的接收区,再调用接受进程接受消息3、特点:(1)发送进程和接收进程使用不同的缓冲区用来存放和发送消息(2)发送进程建立消息存储区,接收进程建立消息接收区3.7.3消息缓冲机制3、特点:(3)发送进程与接收进程不用共享数据缓冲区,因此不存在互斥问题,只要各自缓冲区有资源即可(4)发送进程必须告诉接受进程消息已经发出,所以两者之间存在同步关系3.7.3消息缓冲机制4、消息缓冲机制正常通信条件在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时,应禁止其他进程对该缓冲区消息队列的访问;同理,接收进程正从消息队列中取消息时,也应禁止其他进程对该队列的访问;接收缓冲区消息队列无消息时,接收进程不能接受任何消息3.7.3消息缓冲机制PCB......Send(R,M)......SIZE:消息长度TEXT:消息正文......消息链指针............Receive(pid,N)......SIZE:消息长度TEXT:消息正文......M:N:接受进程R发送进程S消息消息消息......5消息缓冲通信模型3.7.4邮箱通信1定义:发送进程申请建立一与接收进程链接的邮箱2特点发送进程将消息发送给邮箱,接收进程取出邮箱中消息邮箱作为发送进程和接收进程共有的私有数据结构,在互斥的条件下可以实现通信问题:如何实现发送进程与接受进程的制约关系?3.7.4邮箱通信3进程之间正常通信应满足条件:发送进程发送消息时,邮箱中至少有一个空格能存放消息接收进程接收消息时,邮箱中至少有一个消息存在3.7.4邮箱通信4邮箱通信结构图图3.18邮箱通信结构3.7.4邮箱通信3.7.4邮箱通信3.7.5管道(pipe)1、管道是一条在进程间以字节流方式传送的通信通道。2、它由OS核心的缓冲区(通常几十KB)来实现,是单向的;常用于命令行所指定的输入输出重定向和管道命令。(先进先出的,一个进程写,一个进程读)3、在使用管道前要建立相应的管道,然后才可使用。4、管道机制中的同步与互斥管道机制必须提供三方面的协调努力:互斥:当一个进程正在对PIPE进行读写时,另一个必须等待(一次只有一个进程可以访问)同步:当写进程把一定量的数据(如4KB)写入PIPE后(创建后,大小是固定字节的),便睡眠等待,直到读进程取走数据后再唤醒它;当读进程读一个空PIPE时,也应睡眠等待,直到写进程将消息写入管道为止,才将它唤醒。3.7.5管道(pipe)4、管道机制中的同步与互斥管道机制必须提供三方面的协调努力:对方是否存在。只有已确定对方存在时,方能进行通信。3.7.5管道(pipe)5.UNIX管道(1)通过pipe系统调用创建无名管道,得到两个文件描述符,分别用于写和读。intpipe(intfildes[2]);文件描述符fildes[0]为读端,fildes[1]为写端;通过系统调用write和read进行管道的写和读;3.7.5管道(pipe)5.UNIX管道通过pipe系统调用创建无名管道,得到两个文件描述符,分别用于写和读。进程间双向通信,通常需要两个管道;只适用于父子进程之间或父进程安排的各个子进程之间(只有相关进程可以共享无名管道);3.7.5管道(pipe)命名管道服务器支持多客户:为每个管道实例建立单独线程或进程。(1)CreateNamedPipe在服务器端创建并返回一个命名管道句柄;(2)ConnectNamedPipe在服务器端等待客户进程的请求;6.Windows管道3.7.5管道(pipe)(3)CallNamedPipe从管道客户进程建立与服务器的管道连接;(4)ReadFile、WriteFile(用于阻塞方式)、ReadFileEx、WriteFileEx(用于非阻塞方式)用于命名管道的读写;6.Windows管道3.7.5管道(pipe)图3.21管道通信7.UNIX管道编程3.7.5管道(pipe)例1:用c语言编写一个程序,建立一个管道pipe,同时父进程生成一个子进程,子进程向pipe中写入一个字符串,父进程从pipe中读取该字符串7.UNIX管道编程7.UNIX管道编程例2:编写一程序,建立一个管道。同时,父进程生成子进程P1,P2,这两个子进程分别向管道写入各自的字符串,父进程读出他们。图3.22父进程和子进程P1,P2通信例子7.UNIX管道编程3.8死锁问题——你不让,我也不让

在多道程序系统中,多个进程并发运行,共享资源,从而提高了资源的利用率。但是若对资源的管理和使用不当,在一定条件下会导致系统发生一种随机性故障――死锁。在一些系统中,比如实时控制系统,系统一旦发生死锁将导致灾难性的后果。死锁问题是E.W.Dijkstra在1965年研究银行家算法时首次提出的,以后又由Havender、Lyach等人研究并发展。3.8.1.死锁的定义1、相关概念

(1)死锁(Deadlock):是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。称此时系统处于死锁状态或系统产生了死锁。3.8.1.死锁的定义1、概念(2)死锁进程

这些永远在互相等待的进程为死锁进程。(3)死锁后果

所占用的资源或者需要它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。

2、死锁原因计算机系统中,如果系统的资源分配策略不当,或者更常见的是程序员写的程序有错误等,则会导致进程因竞争资源不当(往往与进程的推进速度有关)而产生死锁的现象。

3.8.1死锁的定义3、死锁案例(1)文件打印

将一个大文件由磁带拷贝至打印机,进程需要同时访问磁带驱动器和打印机,并且不允许其他进程这时访问它们。在只有一个进程的系统中,该进程可以要求任何它所需要的资源,然后进行工作。但是,在一个多道程序系统中,就有可能出现严重的问题。3.8.1死锁的定义A、B两个进程准备打印一个大的磁带文件ABR1R2打印机磁带机3、死锁案例(1)文件打印3.8.1死锁的定义(2)哲学家就餐问题有5个哲学家,围坐在圆桌旁,他们的生活方式是交替地进行思考和进餐;圆桌上间隔地摆放着5把叉子和5个装有通心粉的盘子,规定第i号哲学家固定坐在第i把椅子上(i=0,1,2,3,4),且每个哲学家必须两手分别拿起他左右两旁的那两把叉子,才能吃通心粉;假定通心粉的数量足够5个哲学家用的。3、死锁案例

假设这5把叉子与椅子相应也按逆时针方向从0开始连续编号,即第i号哲学家左边摆着第i号叉子,右边摆着第((i+1)mod5)号叉子,这里的mod代表模运算,即整除取余。显然,在这个问题中叉子是哲学家进餐竞争的临界资源,5把叉子应分别用一个初值为1的信号量表示,这5个信号量构成一个信号量数组S。(2)哲学家就餐问题3、死锁案例则第i号哲学家的进餐过程描述如下哲学家(i=0,1,2,3,4)思考;P(S[i]);拿起左边的叉子;P(S[(i+1)mod5]);拿起右边的叉子;吃通心粉;放下左边的叉子;V(S[i]);放下右边的叉子;V(S[(i+1)mod5]);(该算法可能会死锁)

死锁经典案例—哲学家就餐问题

解决死锁方法1:使用互斥信号量哲学家(i=0,1,2,3,4)思考;P(mutex);P(S[i]);拿起左边的叉子;P(S[i+1]mod5);拿起右边的叉子;吃通心粉;放下左边的叉子;V(S[i]);放下右边的叉子;V(S[i+1]mod5);V(mutex)死锁经典案例—哲学家就餐问题有何缺点解决死锁方法2:AND型信号量机制AND同步机制的基本思想是:将进程在整个运行过程中需要的所有资源,一次性全部地分配给进程,等到进程使用完毕后再一起释放。也就是说,对若干个临界资源的分配,采取原子操作的方式:要么全部分配给进程,要么一个也不分配。由死锁理论可知,这样就可避免上述死锁情况的发生。联合型信号量机制就是采用临界资源的静态分配用于解决死锁问题。哲学家(i=0,1,2,3,4)思考;P(S[i]andS[i+1]mod5);拿起左边的叉子;拿起右边的叉子;吃通心粉;放下左边的叉子;V(S[i]);放下右边的叉子;V(S[i+1]mod5);//临界资源的全部分配解决死锁方法2:AND型信号量机制(1)竞争临界资源当系统中供多个进程共享的临界资源(如打印机、公用队列等)的数目不能满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁。这个问题在多道程序系统中是无法避免的。3.8.2产生死锁的原因(2)进程推进顺序不当

进程在运行过程中,请求和释放临界资源的顺序不当,也同样会导致死锁的产生。这个问题在多道程序系统中是可以解决的。(解决死锁主要围绕该问题展开)3.8.2产生死锁的原因造成死锁的原因是()。内存容量太小A系统进程数量太多,系统资源分配不当BCPU速度太慢C进程推进顺序不合适D外存容量太小E提交多选题1分两个进程争夺同一个资源()。一定死锁A不一定死锁B不死锁C以上说法都不对D提交单选题1分一、竞争资源引起死锁

1.资源的分类:可剥夺和非剥夺性资源

可剥夺性资源:CPU和主存

不可剥夺性资源:磁带机、打印机等当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自动释放。2.竞争非剥夺性资源

两个进程分别准备打印一个非常大的磁带文件(双方都拥有部分资源,同时在请求对方已占有的资源。)打印机R1磁带机R2P1P2一、竞争资源引起死锁

二、进程推进顺序不当引起死锁

资源少也未必一定产生死锁。如两个人过独木桥,如果两个人都要先过,在独木桥上僵持不肯后退,必然会因竞争资源产生死锁;但是,如果两个人上桥前先看一看有无对方的人在桥上,当无对方的人在桥上时自己才上桥,那么问题就解决了。所以,如果程序设计得不合理,造成进程推进的顺序不当,也会出现死锁。思考题1、一个OS有20个进程,竞争使用65个同类资源,申请方式是逐个进行的,一旦某个进程获得它所需要的全部资源,则立即归还所有资源。每个进程最多使用三个资源。若仅考虑这类资源,该系统有无可能产生死锁,为什么?思考题:答:不可能。因为死锁产生的原因有两点:系统资源不足或推进顺序不当,在本题中,进程所需的最大资源数为60,而系统共有该类资源65个,其资源数已足够系统内各进程使用。1.互斥条件多个并发进程只能互斥访问临界资源。为了保证并发执行的封闭性和正确性,互斥条件必须保持。

2.占有并请求条件(部分分配)已分配到了一些临界资源的进程可以申请新的资源。

3.8.3产生死锁的必要条件3.不可剥夺条件进程所获得的资源在未使用完毕之前,资源申请者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放。

4.循环等待条件链中的每一个进程都在等待相邻进程所占用的资源。3.8.3产生死锁的必要条件如果发现系统有()的进程队列就说明系统有可能发生死锁了。互斥A可剥夺B循环等待C同步D提交单选题1分3.8.4死锁的解决办法1、死锁的预防(静态)2、死锁的避免(动态)

3、

死锁的检测和恢复

4、

鸵鸟算法

这种办法是在系统运行之前就采取措施,即在系统设计时确定资源分配算法,消除发生死锁的任何可能性。该方法虽然比较保守、资源利用率低,但因简单明了并且安全可靠,仍被广泛采用。一、死锁的预防(防止)(静态法)3.8.4死锁的解决办法

产生死锁的四个必要条件中,互斥条件由临界资源的互斥特性所决定的,不仅不能改变,相反还应加以保证,因此实际上只有三种方法。一、死锁的预防(防止)(静态法)1.静态资源分配法(摒弃“占有并请求条件”)系统规定每一个进程在开始运行前,都必须一次性地申请其在整个运行过程所需的全部资源。此时,若系统有足够的资源,便把进程想要的全部资源一次性地分配给它;若不能全部满足进程的资源请求,则一个资源也不分给它。这样,进程在运行过程中就不会再提出资源请求,从而破坏了占有与请求条件。一、死锁的预防(防止)(静态法)静态资源分配法的优缺点:

优点:简单、安全、易实现。缺点:(1)资源被严重浪费(2)进程延迟运行。一、死锁的预防(防止)(静态法)2.摒弃“不可剥夺条件”进程在需要资源时必须得到满足,否则就放弃已经占有的资源。即:一个已经保持了某些资源的进程,当它再提出新的资源要求而不能立即得到满足时,必须释放它已经保持的所有资源,待以后再需要时再重新申请。一、死锁的预防(防止)(静态法)2.摒弃“不可剥夺条件”实现起来比较复杂,且要付出很大的代价。进程的周转时间较长,系统开销大。一、死锁的预防(防止)(静态法)3.有序资源使用法(摒弃“循环等待条件”)

系统中的所有资源按类都被赋予一个唯一的编号,每个进程只能按编号的升序申请资源。即对同一个进程而言,它一旦申请了一个编号为i的资源,就不允许再申请编号比i小的资源了,因此,破坏了循环等待条件。一、死锁的预防(防止)(静态法)3.有序资源使用法(摒弃“循环等待条件”)

(1)优点:安全且资源利用率比静态资源分配法有所提高,因为它实际是一种半动态的资源分配法。(2)缺点:实现较困难,因为难给出合适的资源编号,不便于系统增添新设备,不便于用户编程,且仍有一定的资源浪费现象。一、死锁的预

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论