(2012-10-27修订)计算机操作系统03-2

上传人:宝路 文档编号:47983313 上传时间:2018-07-07 格式:PPT 页数:46 大小:614.35KB
返回 下载 相关 举报
(2012-10-27修订)计算机操作系统03-2_第1页
第1页 / 共46页
(2012-10-27修订)计算机操作系统03-2_第2页
第2页 / 共46页
(2012-10-27修订)计算机操作系统03-2_第3页
第3页 / 共46页
(2012-10-27修订)计算机操作系统03-2_第4页
第4页 / 共46页
(2012-10-27修订)计算机操作系统03-2_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《(2012-10-27修订)计算机操作系统03-2》由会员分享,可在线阅读,更多相关《(2012-10-27修订)计算机操作系统03-2(46页珍藏版)》请在金锄头文库上搜索。

1、 前一页 休息计算机操作系统第三章 进程管理前一页 休息本章主要内容(续)l3.7进程通信l3.8死锁问题l3.9线程前一页 休息3.7进程通信l进程通信(communication): 定义:简单地说,就是进程间的信息交换。 分类:低级通信:进程间控制信息的交换。 u信号量及锁变量只能传递信号,没有数据转送能 力。 高级通信:进程间大批量信息(数据)的交 换。u高级通信的目的不是为了控制进程的执行速度 ,而是为了交换信息。进程通信前一页 休息进程的通信方式l 主从式 主进程可自由使用从进程的资源或数据; 从进程动作受主进程的控制; 主进程和从进程关系固定。 l 会话式 使用进程在使用服务进程

2、所提供的服务之 前,必须得到服务进程的许可; 服务进程根据使用进程的请求提供服务, 但对所提供服务的控制由服务进程自身完成 ; 通信时连接关系固定。进程通信前一页 休息进程的通信方式l消息或邮箱机制消息:区别于命令或指令,一方面表示有大量信 息,另一方面表示互相通信进程的平等。只要存在空缓冲区或邮箱,发送进程可发送消息;发送进程和接收进程之间没有直接联系,与会话式 不同;存在缓冲区或邮箱存放消息。进程通信前一页 休息进程的通信方式l共享存储方式不要求数据移动,两个需要互相交换信 息的进程通过对同一共享数据区的操作来达 到互相通信的目的。这个共享数据区是每个互相通信的进程的 组成部分。进程通信前

3、一页 休息消息缓冲机制l消息缓冲机制的基本思想: 根据生产者与消费者关系原理,利用内存的共用消 息缓冲池实现进程之间的信息交换。 消息缓冲区是指含有如下信息的缓冲区:指向发送进程的指针指向下一个消息缓冲区的指针消息长度消息正文 消息缓冲区作为进程通信的一个基本单位,即每当 发送进程欲发送消息时,便申请并形成一个消息缓冲 区,并发送给指定的接收进程。进程通信前一页 休息消息缓冲机制l消息缓冲机制的实现过程: 发送进程在发送消息前,先在自己的内存空间 设置一个始地址为a的消息发送区,把欲发送的 消息填入其中,然后再用发送过程send (B, a)将其发送到缓冲区。 接收进程则在接收消息之前,在自己

4、的内存空 间内设置一个始地址为b的消息接收区,然后用 接收过程receive (b)接收缓冲区内的消息。 注:由于接收进程可能接收到多个进程发来的 多个消息缓冲区,故它将所有的消息缓冲区连接 成一个消息队列,其队列头由接收进程PCB中的 消息队列头指针给出。进程通信前一页 休息消息缓冲机制l消息缓冲机制的实现过程:进程通信消息缓冲通信过程前一页 休息消息缓冲机制l通信进程必须满足如下条件: 在发送进程把消息写入缓冲区和把缓冲区挂入消息 队列时,应禁止其他进程对该消息缓冲区队列的访 问。否则,将引起消息队列的混乱。同理,当接收 进程正从消息队列中取消息缓冲区消息时,也应禁 止其他进程对该队列的访

5、问。 间接制约设置公用信号量: mutex ,其初值为1 。 当消息缓冲区队列中无消息存在时,接收进程不能 接收到任何消息。 直接制约设置私用信号量:SM为接收进程的私用信号量,表示等待接 收的消息个数,其初值为0 。进程通信前一页 休息消息缓冲机制l进程之间通信的实现:进程通信向系统申请一个消息缓 冲区将发送区消息m送入新 申请的消息缓冲区把消息缓冲区挂入接收 进程的消息队列摘下消息队列中的消息n 将消息n从缓冲区复制到 接收区释放缓冲区开始结束开始结束临界区P(mutex)V(mutex)临界区P(mutex)V(mutex)P(SM)V(SM)Send(m):Receive(n):前一页

6、 休息邮箱通信进程通信l邮箱通信的基本思想: 邮箱通信是由发送进程申请建立一个与接收进程连 接的邮箱,发送进程把消息送往邮箱,接收进程从邮 箱取走消息,从而完成进程间信息交换。 邮箱由邮箱头和邮箱体组成。其中邮箱头描述邮箱 名称、邮箱大小、邮箱方向以及拥有该邮箱的进程 名等。邮箱体主要用来存放消息(如图) 。 设置邮箱的最大好处就是发送进程和接收进程之间 没有处理时间上的限制(消息缓冲需要互斥使用消息 队列)。前一页 休息邮箱通信进程通信l注: 一个邮箱可以考虑成发送进程与接收进程之间的大 小固定的私有数据结构。 它不像缓冲区那样被系统内所有进程共享。前一页 休息进程通信l两通信进程之间的关系

7、: 发送进程发送消息时,邮箱中至少要有一个空格 能存放该消息。 接收进程接收消息时,邮箱中至少要有一个消息 存在。 即发送进程与接收进程间存在着直接制约。发送进程的私用信号量: nullnum表示邮箱中空 格个数,初值为信箱的空格数 n 。接收进程的私用信号量: fullnum表示邮箱中消 息个数,初值为0 。前一页 休息邮箱通信l实现(两个进程通信):设发送进程调用过程 deposit(m)将消息发送到邮箱,接收进程调用过程remove(m)将消息m 从邮箱中取出。进程通信deposit(m): begin local x (nullnum) 选择空格x 将消息m放入空格x中 置格x的标志为

8、满 (fullnum) endremove(m): begin local x (fullnum) 选择满格x 把满格x中的消息取出 置格x标志为空 (nullnum) end前一页 休息3.8死锁定义l定义:各并发进程彼此互相等待对方所拥有 的资源,且这些进程在得到对方的资源之前不 会释放自己所拥有的资源,从而造成并发进程 不能继续向前推进的状态。若死锁只存在于部分进程中,称系统发生 了局部死锁;若系统中所有进程都出现了死锁 ,则称系统发生了全局死锁。死锁前一页 休息死锁的起因死锁的起因是并发进程的资源竞争,而根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数。死锁P1P3P2请求

9、S3产生S1请求S2产生S3请求S1产生S2l系统资源不足l进程推进顺序非法前一页 休息死锁发生的必要条件l互斥条件: 一个资源在某一时刻只能分配给一个进程。 若一个进程申请某资源时,该资源被另一进程 占用,则申请者等待,直到占有者释放该资源 时才可能获得。l部分分配: 进程在占用部分资源后,运行时还可以申请 其余的资源,而且在申请其余资源时并不释放 已占用的资源。死锁前一页 休息死锁发生的必要条件l不剥夺条件: 已分配给进程的资源不可被剥夺,只能被 占有者自行释放。l环路条件: 系统中存在着一条由两个 或两个以上的进程组成的循 环链,链中的每个进程都在 等待相邻进程已占用的资源。死锁S3P3

10、S1P2P1S2P1P3 P2请求S3产生S1请求S2产生S3请求S1产生S2前一页 休息解决死锁的方法l 预防采用某种策略使得死锁的必要条件在系统执行的 任何时间都得不到满足。 l 避免可称为动态预防,是指在系统分配资源时,根据 资源的使用情况提前作出预测,从而避免死锁发生 。 l 检查与恢复是指系统设有专门的机构,死锁发生时,该机构 能够检测到死锁发生的位置和原因,并能通过外力 破环死锁发生的必要条件,从而使得并发进程从死 锁状态中恢复过来。死锁前一页 休息解决死锁的方法l预防死锁死锁产生的必要条件为解决死锁问题提 供了思路。 限制“互斥条件” 然而对于临界资源必须互斥访问,这是某些 资源

11、使用时所必须要求的(如打印机),不 能加以改变,所以不易有解决方案。死锁前一页 休息解决死锁的方法l预防死锁 限制“部分分配”一种实现方法是规定所有进程在开始执行 前申请所需的全部资源,当所需资源全部可 以使用时方可进行分配。这样,进程对资源 的要求得到满足,它一定能够运行结束而释 放已经占用的全部资源。只要有一种资源不 能满足,则不进行分配,而将该进程阻塞。死锁前一页 休息解决死锁的方法l预防死锁 限制“部分分配”缺点:p许多情况下,一个进程执行前不可能提出它需 要的所有资源p无论所需资源何时使用,一个进程只有在所有 需要的资源得到满足后才开始执行p对于不经常使用的资源,进程的生存过程期间

12、一直占有它是一种浪费p降低了进程的并发性死锁前一页 休息解决死锁的方法l预防死锁 限制“不剥夺条件” 采用剥夺算法,可以预防死锁的发生 。但是系统中的资源有些是可剥夺的 ,有些是不可剥夺的,如采用剥夺算 法对于CPU与存储器是可行的,而对于 打印机等资源则是不合适的,所以只 能对系统中的一部分资源采用这种方 法。死锁前一页 休息解决死锁的方法l预防死锁 限制“环路条件” 把所有资源分类按顺序排列,使进程在申请和保 持资源时不形成环路。 一个进程在拥有了某资源的前提下,它只能申请 级别比所拥有资源更高的资源;同时在一个进程释 放资源时,必须先释放级别高的资源(同时也只有 释放了所拥有的高级别资源

13、,才有可能获得低级别 资源);这样就避免了环路的出现。 这种方法限制了进程对资源的请求,对资源的分 类编序也消耗一定的系统开销。死锁前一页 休息解决死锁的方法l避免死锁避免死锁的做法是在进程每次提出资源请求时加以检测,若分配后系统可能会引起死锁,称系统处于不安全状态,这时对该进程的资源请求不予分配,将它放到等待队列中去。若分配后系统不会产生死锁,即系统是安全的,这时再根据该进程的资源请求予以分配。死锁银行家算法进程申请系统的某种资源时,一次可以申请多个,为了避免死锁,可以采用银行家算法。执行前,各进程给出最大的资源需求,执行中,进程已分配资源与尚需资源之和就是最大的资源需求。例:假设系统有某种

14、设备12台,在T0时刻,进程需求与分配情况如下:进程名已分配设备尚需设备当前可用设备P1 P2 P35 2 25 2 73前一页 休息解决死锁的方法l死锁的检测和恢复(实现不作任何限 制) 检测时机:进程等待时;定时检测;资源 利用率下降时。 死锁的恢复办法较多。最简单的办法是终 止各锁住进程,或按一定的顺序中止进程序 列,直至已释放到有足够的资源来完成剩下 的进程时为止。另外,也可以从被锁住进程 强迫剥夺资源以解除死锁。死锁前一页 休息3.9线程的引入l引入进程的操作系统 特点:在引入进程概念的操作系统中,将进程作为 一个独立运行的基本单位,这包括两层含义:只有 进程可以被调度运行,只有进程

15、才能拥有资源。 资源利用:当进程被创建时,系统要为它分配PCB表及其它必 要的资源,如内存等;当进程被撤消时,系统要收 回这些资源及PCB表等,因此系统必须付出一定的 开销。当进程运行时,进程的切换现象更会大量存在, 由于要保留当前执行进程的CPU现场和为选中执行 的进程重布现场,更需较大的开销。线程前一页 休息线程的引入l很多时候,用户要完成的任务具有许多相 似的性质。l例如:一个Web服务器同时接受不同用户的 页面请求。服务器处理这些请求是并发进行 的,可以用创建父进程和多个子进程的方式 来实现。l随着用户数量增加,子进程数量将增加, 进程的创建和切换过程越多,系统的开销越 多。l由于服务器的系统资源有限,服务器可以 处理和支持的用户访问请求就有限。l如何减少进程的创建和切换多带来的系统 开销?线程线程前一页 休息线程的基本概念l线程是进程的一部分,又被称为轻权 进程或轻量级进程。l线程也是CPU调度的基本单位。l一个没有线程的进程可以看作是单线 程的。前一页 休息线程的基本概念 l一个进程内拥有多个线程,则进程的 执行不再是唯一线状的,它由多条线状 执行过程组成。前一页 休息线程的引入l引入线程的好处使用线程的最大好处是在有多 个任务需要处理机处理时,减少处 理机的切换时间;而且,线程的创 建和结束所需要的系统开销也比进 程的创建和结束要小得多

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号