死锁
考试要求: 掌握     
知识路径:  > 计算机系统知识  > 计算机软件知识  > 操作系统知识  > 处理机管理(状态转换、同步与互斥、分时、抢占、死锁)  > 处理机管理


 
       死锁的概念
       计算机系统中有许多独占资源,它们在任一时刻都只能被一个进程使用,如磁带机、键盘、绘图仪等独占型外围设备,或进程表、临界区等软件资源。两个进程同时向一台打印机输出将导致一片混乱,两个进程同时进入临界区将导致数据错误乃至程序崩溃。正因为这些原因,所有操作系统都具有授权一个进程独立访问某一资源的能力。一个进程需要使用独占资源必须通过以下的次序。
       (1)申请资源。
       (2)使用资源。
       (3)归还资源。
       若申请时资源不可用,则申请进程等待。对于不同的独占资源,进程等待的方式是有差异的,如申请打印机资源、临界区资源时,申请失败将意味着阻塞申请进程;而申请打开文件资源时,申请失败将返回一个错误码,由申请进程等待一段时间之后重试。值得指出的是,不同的操作系统对于同一种资源采取的等待方式也是有差异的。
       在许多应用中,一个进程需要独占访问不止一种资源。而操作系统允许多个进程并发执行共享系统资源时,此时可能会出现进程永远被阻塞的现象。例如,两个进程分别等待对方占有的一个资源,于是两者都不能执行而处于永远等待,这种现象称为“死锁”。
       下面举一死锁的例子来加深对其理解:竞争资源产生死锁。
       设系统有打印机、读卡机各一台,它们被进程P和Q共享。两个进程并发执行,它们按下列次序请求和释放资源。
       
       它们执行时,相对速度无法预知,当出现进程P占用了读卡机,进程Q占用了打印机后,进程P又请求打印机,但因打印机被进程Q占用,故进程P处于等待资源状态;这时,进程Q执行,它又请求读卡机,但因读卡机被进程P占用而也只好处于等待资源状态。它们分别等待对方占用的资源,致使无法结束这种等待,产生了死锁。
       死锁产生的条件
       系统产生死锁必定同时保持四个必要条件:
       (1)互斥条件(Mutual Exclusion)进程应互斥使用资源,任一时刻一个资源仅为一个进程独占,若另一个进程请求一个已被占用的资源时,它被置成等待状态,直到占用者释放资源。
       (2)占有和等待条件(Hold and Wait)一个进程请求资源得不到满足而等待时,不释放已占有的资源。
       (3)不剥夺条件(No Preemption)任一进程不能从另一进程那里抢夺资源,即已被占用的资源,只能由占用进程自己来释放。
       (4)循环等待条件(Circular Wait)存在一个循环等待链,其中,每一个进程分别等待它前一个进程所持有的资源,造成永远等待。
       只要能破坏这四个必要条件之一,死锁就可防止。
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有