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