1,什么是死锁:
一组进程中,每个进程都无限等待被该组进程中另一个进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程(处于阻塞态)
2,什么是可重用资源?(P186)
一次只能供一个进程安全地使用,并且不会由于使用而耗尽的资源。进程得到资源单元,后来又释放这些单元,供其他进程再次使用。如:处理器,I/O通道,内存和外存、设备,以及文件、数据库和信号量之类的数据结构。
3,什么是可消耗资源(P187)
可以被创建(生产)和销毁(消耗)的资源。通常对某种类型可消耗资源的数目没有限制,一个无阻塞的生产进程可以创建任意数目的这类资源。当消费进程得到一个资源时,该资源就不再存在了。如:中断、信号、消息、和I/O缓冲区的信息。
4,产生死锁的条件是什么(P189)
产生死锁有四个条件,前三个为必要条件
a,互斥:一次只有一个进程可以使用一个资源。其他进程不能访问已分配给其他进程的资源。
b,占有且等待:当一个进程等待其他进程时,继续占有已经分配的资源
c,不可抢占:不能强行抢占进程已有的资源
d,循环等待:存在一个封闭的进程链,使得每个进程至少占有此链中下一个进程所需要的一个资源
5,如何预防占有且等待?(P190)
要求进程一次性地请求所有需要的资源,并且阻塞这个进程直到所有请求都同时满足。
6,如何预防不可抢占?(P190)
a,如果占有某些资源的一个进程进一步申请资源时被拒绝,则该进程必须解放它最初占有的资源,如果有必要,可再次申请这些资源和另外的资源。
b,如果一个进程请求当前被另一个进程占有的一个资源,则操作系统可以抢占另一个进程,要求它释放资源。
注意:只有在任意两个进程的优先级都不相同的条件下,后一种方案才能预防死锁
7,如何预防循环等待?(P190)
通过定义资源类型的线性顺序来预防。如果一个进程已经分配到了R类型的资源,那么它接下来请求的资源只能是那些排在R类型之后的资源类型。
8,死锁避免和死锁预防有什么区别?(P191)
死锁预防:通过约束资源请求,使得4个死锁条件中至少有一个被破坏,这可以通过防止发生三个必要条件中的一个(互斥,占有且等待,非抢占)间接完成,也可以通过防止循环等待直接完成,但这些都会导致低效的资源使用和低效的进程执行。
死锁避免:与死锁预防相反,它允许三个必要条件,但通过明智的选择,确保永远不会达死锁点,因此死锁避免比死锁预防允许更多的并发。在死锁避免中,是否允许当前的资源分配请求是通过判断该请求是否可能导致死锁来决定的。因此,死锁避免需要知道将来的进程资源请求的情况。
两种死锁避免的方法:a,如果一个进程的请求会导致死锁,则不启动此进程。
b,如果一个进程增加的资源请求会导致死锁,则不允许此分配。