五个并发linux 进程互斥锁共享一台打印机,写出互斥控制代码

一个系统有5个并发执行的进程,共享N台磁带机,每个进程最多需要3台,问系统不会发生死锁的N的最小数_百度知道> 问题详情
设m为同类资源数,n为系统中并发进程数。当n个进程共享m个互斥资源时,每个进程的最大需求是w,则下
悬赏:0&答案豆
提问人:匿名网友
发布时间:
设m为同类资源数,n为系统中并发进程数。当n个进程共享m个互斥资源时,每个进程的最大需求是w,则下列情况会出现系统死锁的是( )。A.m=2,n=1,w=2B.m=2,n=2,w=1C.m=4,n=3,w=2D.m=4,n=2,w=3请帮忙给出正确答案和分析,谢谢!
网友回答(共1条)
匿名网友&&&&lv1&&&&提问收益:0.00&答案豆
您可能感兴趣的试题
1MS-DOS中的文件物理结构采用(&)。A.连续结构B.链接结构C.索引结构D.哈希表2通过硬件和软件的功能扩充,把原来独占的设备改造成若干用户共享的设备,这种设备称为(&&)。A.系统设备B.存储设备C.用户设备D.虚拟设备
我有更好的答案
论文写作技巧
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……登录后才能写笔记
登录后才能写评论
登录后才能提问
教学录像主讲人
本节其他资源
本章知识点|本章技能点
本节主讲教师
主办单位:高等教育出版社有限公司&&&&&&&&京ICP备号-2&&&&&&京公网安备-2
中国大学精品开放课程适用于《中华人民共和国著作权法》
高等教育出版社享有中国大学精品开放课程信息网络传播的专有使用权 未经书面允许,请勿转播进程互斥与同步
进程是操作系统的核心,进程引进的目的就是为了程序能并发执行,提高资源利用率和系统的吞吐量。这里并发不等于并行。并发指:在一定时间内物理机器上有两个或两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定的。在单处理机系统中同时存在多个并发程序,从宏观上看这些程序是同时在执行的。从微观上讲任何时刻只有一个程序在执行,这些程序在CPU上轮流执行。并行:指严格的同时执行,在多处理机系统中才可能。
并发进程间的关系可以是无关的,也可以是有交往的。并发进程间无关是指它们是各自独立的,即如果一个进程的执行不影响其他进程的执行,且与其他进程的进展情况无关,不需要特别的控制;并发进程间有交往是指一个进程的执行可能影响其他进程的执行结果,即一个进程的执行依赖其他进程的进展情况。有交往的并发进程一定共享某些资源。
进程之间互相竞争某一个资源,这种关系就称为进程的互斥,也就是说对于某个系统资源,如果一个进程正在使用,其他的进程就必须等待其用完,不能同时使用。例如,A,B两个进程共享一台打印机,如果系统已经将打印机分配给了A进程,当B进程需要打印时因得不到打印机而阻塞,只有A进程将打印机释放后,系统才将B进程唤醒,B进程才有可能获得打印机。
并发进程使用共享资源时,除了竞争之外有协作,要利用互通消息的办法来控制执行速度,使相互协作的进程正确工作。进程之间的相互合作来完成某一任务,把这种关系称为进程的同步。例如(生产者和消费者)A,B两个进程通过一个缓冲区合作完成一项任务,A进程将数据送入缓冲区后通知B进程缓冲区中有数据,B进程从缓冲区中取走数据再通知A进程缓冲区现为空。当缓冲区空时,B进程因得不到数据而阻塞,只有当A进程将数据送入缓冲区的时才将B进程唤醒。反之,当缓冲区满时,A进程不能继续送数据而阻塞,只有当B进程取走数据时才唤醒A进程。
临界资源是指系统中一次只允许一个进程使用的资源(可以是硬件资源像打印机,也包括软件资源,如程序中的数据结构、表格和变量、文件等。)访问临界资源的那段代码称为临界区。
对进程的互斥和同步,操作系统必须采取某种控制手段,以保证进程的安全可靠执行。对互斥,要保证在临界区内不能交替执行,而谁先进入临界区都是可以的。对同步,则要保证合作进程必须相互配合共同推进,并严格按照一定的先后顺序。用什么来保证进程的同步和互斥呢,这就是信号量机制。
对实现进程的同步和互斥而言,信号量是一种很有效的工具,现已被广泛的应用于单处理机系统、多处理机系统和计算机网络中。信号量取自交通管理中的信号灯的概念,信号灯是用于控制交通的,通过对信号灯的控制来控制交通流向,借其含义用信号量来作为一种控制进程互斥和同步的变量,也就是通过控制信号量来控制进程的同步与互斥。每个信号量至少须记录两个信息:信号量的值和等待该信号量的进程队列。
信号量(这里简称S)是一整数,S&=时代表可供并发进程使用的资源实体数,但S&时它的绝对值则表示正在等待使用临界区的进程数。除了对信号量S进行初始化外,只能对S进行两个原子操作:P(s)
和V(s),简称P、V操作。P操作和V操作是不可中断的程序段,称为原语。(和数据库操作中的事务是一样的,具有原子性,要么全做,要么不做)。
&P原语操作的动作是:(对资源的申请,如果有资源,则进程继续执行;否则进程被阻塞,然后转进程调度);V原语操作的动作是:(对临界资源的释放,如果有等待该资源的阻塞进程,那么就唤醒一个等待的进程,然后再返回原进程继续执行或转进程调度)。每次的P操作,意味着请求分配一个单位的资源,因此描述为s.value
= s.value - 1;当s.value &
0时,表示资源已分配完毕,因此进程阻塞,此时s.value的绝对值表示该信号量链表中阻塞进程的数目。每次V操作,表示释放一个单位资源,故进行s.value
= s.value + 1操作;若加1后仍有s.value &=
0,则表示该信号量链表中仍有阻塞进程,故而应将s.l链表中的第一个等待进程唤醒,|s.value|表示阻塞的进程数。在PV原语执行期间不允许有中断的发生。
1. 用PV原语实现进程的互斥
对于互斥的信号量S与所有的并发进程有关,所以称之为公有信号量。只要把临界区置于P(S)
和V(S)之间,即可实现进程间的互斥。(这样,每个想访问临界资源的进程,在进入临界区之前,要先对信号量S执行P操作,若该资源未被访问,则本次P操作成功,该进程便可以进入自己的临界区,这时若再有其他的进程想进入自己的临界区,在对信号量S执行P操作后必然会失败而阻塞,从而保证了临界资源被互斥的访问。当访问临界资源的进程退出临界区后,应该再对mutex执行V操作,释放该临界资源。)就象火车中的每节车厢只有一个卫生间,该车厢的所有旅客共享这个公有资源:卫生间,所以旅客间必须互斥进入卫生间,只要把卫生间放在P(S)
和V(S)之间,就可以到达互斥的效果。以例子说明进程的互斥实现。
判断进程间是否互斥,关键是看进程间是否共享某一公有资源,一个公有资源与一个信号量相对应。在实现互斥时应注意:
(1)P(mutex)和v(mutex)必须成对出现,缺少一个都不行。缺少P(mutex)将会引起系统混乱,不能保证对临界资源的互斥访问;缺少v(mutex)将会使该临界资源永久不被释放,从而因等待该资源而阻塞的进程不再被唤醒。
(2)P(S)和V(S)的调用一定紧挨着临界区的前、后。
2. 用PV原语实现进程的同步
与进程互斥不同,进程同步时的信号量只与制约进程及被制约进程有关而不是与整组并发进程有关,所以称该信号量为私有信号量。利用PV原语实现进程同步的方法是:首先判断进程间的关系为同步的,且为各并发进程设置私有信号量,然后为私有信号量赋初值,最后利用PV原语和私有信号量规定各进程的执行顺序。
这里,消费者和生产者进程之间的同步为例来说明。因为计算机系统中的许多问题都可以被归结为生产者和消费者关系。我们可以通过一个缓冲区把生产者和消费者联系起来。生产者把产品生产出来,送入仓库。给消费者发信号,消费者得到信号后,到仓库取产品,取走产品后给生产者发信号。用PV操作还可以实现进程同步与互斥的混合问题,典型的如:多个生产者和多个消费者共享容量为n的缓存区。
&同步和互斥这两种制约关系的区别:进程的互斥是进程间竞争共享资源的使用权,这种竞争没有固定的必然关系;而进程同步时,涉及到共享资源的并发进程之间有一种必然的依赖关系。用PV操作解决进程同步问题时首先应确定问题是属于进程互斥还是进程同步,或是互斥与同步的混合问题。然后根据共享资源的数量以及使用共享资源的规则正确的定义信号量及其初值。然后决定在不同信号量上应实施的P操作和V操作,用这些P操作和V操作保证并发进程正确地使用共享资源。
&用PV操作实现进程的互斥,只要用一个信号量与一组相关临界区联系起来,信号量的初值定义为“1”。每个进程要进入临界区之前调用P操作,测试自己是否可以立即进入临界区;执行完临界区的程序段后,调用V操作表示自己退出临界区。用PV操作实现进程的同步时应定义一组信号量,其中每个信号量与一个消息对应,根据各个消息量的物理含意确定初值。进程通过调用P操作来测定自己需要的消息是否到达,通过调用V操作把其它进程需要的消息发送出去。
2000/XP中提供了互斥对象、信号量对象和事件对象三种同步对象和相应的系统调用,用于进程和线程的同步。这些同步对象都有一个用户指定的对象名称,不同进程中用同样的对象名称来创建或打开对象,从而获得该对象在本进程的句柄。从本质上讲,这组同步对象的功能是相同的,它们的区别在于适用场合和效率会有所不同。
互斥对象(Mutex)就是互斥信号量,在一个时刻只能被一个线程使用。它的相关 APl包括:CreateMutexi
OpenMutex和ReleaseMutex。CreateMutex创建一个互斥对象,返回对象句柄;OpenMutex打开并返回一个已存在的互斥
对象句柄,用于后续访问;而ReleaseMutex释放对互斥对象的占用,使之成为可用。
&信号量对象(Semaphore)就是资源信号量,初始值的取值在0到指定最大值之
间,用于限制并发访问的线程数。它的相关APl包括:CreateSemaphore、OpenSemaphore和ReleaseSemaphore。CreateSemaphore创建一个信号量对象,在输人参数中指定最大值和初值,返回对象句柄;OpenSemaphore返回一个已存在的信号量对象句柄,用于后续访问;ReleaseSemaphore释放对信号量对象的占用。
&事件对象(Event)相当于“触发器”,可用于通知一个或多个线程某事件的出现。
它的相关APl包括:CreateEvent、OpenEvent、SetEvent、ResetEvent和PulseEvent。CreateEvent创建一个事件对象,返回对象句柄;OpenEvent返回一个已存在的事件对象句柄,用于后续访问;SetEvent和
PulseEvent设置指定事件对象为可用状态;ResetEvent设置指定事件对象为不可用状态。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。操作系统期末复习题 带答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
操作系统期末复习题 带答案
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩9页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 进程同步与互斥 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信