资源问题:
可重用性资源和消耗性资源:
可重用性资源:一种供用户多次使用的资源,具有以下性质:(1)每一个可重用性资源中的单元只能分配给一个进程使用,不允许多进程共享。(2)进程在使用该种资源时需要遵循这样的顺序:请求资源——>使用资源——>释放资源(3)系统中的每一类可重用资源中的单元数目是相对固定的,进程在运行期间不能随意创建和删除。
可消耗性资源:也称临时资源,由进程动态的创建和消耗,具有如下性质:(1)每一类可消耗性资源的单元数目在进程运行期间是可以不断变化。(2)在进程运行过程中,可以不断创造可消耗性资源的单元,将它们放入到该类资源的缓冲区中,以增加该类资源的单元数目。(3)进程在运行过程中,可以消耗若干个可消耗性资源,不再返回到该资源类中。
可抢占性资源和不可抢占性资源:
可抢占性资源:是指某类资源在获得该类资源后,该资源可以再被分配给其他进程或系统抢占。如CPU和主存均属于可抢占性资源。对于该类资源是不会引起死锁的。
不可抢占性资源:一旦系统把某类资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。如磁带机、打印机就是不可抢占性资源。
死锁的产生:
- 竞争不可抢占性资源引起死锁
- 竞争可消耗性资源引起死锁
- 进程推进顺序不当引起死锁
死锁的定义:
如果一组进程中的每一个进程都在等待仅有该组进程中的其他进程才能引发的事件爱你,那么该组进程是死锁的。
产生死锁的必要条件:
(1)互斥条件:即在某段时间内,某资源只能被一个进程使用
(2)请求和保持条件:进程已经至少保持了一个资源,但是又提出了新的资源请求,而该类资源 已经被其他进程占用,此时请求进程被阻塞,但对自己已获得的资源保持不放。
(3)不可抢占条件:进程已获得的资源在未使用完之前不能被抢占,只能在进程使用完时由自己释放。
(4)循环等待条件:产生了进程——资源循环链
处理死锁的方法:
(1)预防死锁
(2)避免死锁
(3)检测死锁
(4)解除死锁