1、什么是死锁?
在并发的环境下,各进程在竞争资源的情况下造成的一种互相等待对方占有的资源,导致各个进程发生阻塞,无法向前推进的现象,就是死锁
2、死锁、饥饿、死循环的区别和共同点?
共同点:进程无法顺利的向前推进(除了故意设计死循环)
区别:死锁是竞争资源,导致进程阻塞,进程无法向前推进的现象。
饥饿是长期得不到想要的资源,导致进程无法向前推进的现象。例如短进程优先算法中,长进程可能一直得不到资源,所以会发生长进程“饥饿”。
死循环:进程一直跳不出某一个循环,导致进程处于死循环状态,不过这个死循环的设计也许是程序员故意的,嘿嘿。
3、死锁产生的四个必要条件?
关键:只要四个必要条件中有一个不成立,死锁就不会发生!
必要条件一:互斥条件:必须对互斥的资源进行竞争抢夺才会可能导致死锁现象的发生。
必要条件二:不剥夺条件:进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。
必要条件三:请求和保持条件:对已经占有的资源不释放,又提出了新的资源请求,此时发生了进程阻塞,但是还不释放