开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详
操作系统
死锁
死锁(Deadlock)的定义:
在一组进程中,每个进程都占用着若干个资源,同时又在等待得到该组进程中另一进程所占用的资源,因而造成的所有进程都无法进展下去的现象,这种现象称为死锁,这一组进程就称为死锁进程。
在死锁状态下,每个进程都动弹不得,既无法运行,也无法释放所占用的资源,它们互为因果、互相等待。
关于死锁的一些结论:
1.参与死锁的进程最少是两个(两个以上进程才会出现死锁)
2.参与死锁的进程分别占有系统的部分资源
3.参与死锁的所有进程都在等待资源
注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。
资源问题
在计算机系统中,有各种不同类型的资源:CPU,时钟、I/O设备、内存空间、数据库中的记录等。
永久性资源:可以被多个进程多次使用(可再用资源)
可抢占的资源: 当一个进程正在使用这种类型的资源时,可以把它拿走而不会对该进程造成任何不良的影响。例如:内存、CPU。
不可抢占的资源: 当一个进程正在使用这种类型的资源时,如果强行把它拿走,将会导致该进程运行失败。例如:打印机。
临时性资源: 只可使用一短暂时间后便无用的资源;如信号量等(可消耗性资源)
死锁主要由竞争不可抢占资源引起,对于可抢占资源而言,可以通过重新分配资源的方法来避免死锁。进程竞争临时性资源也可能产生死锁。
进程在使用一个资源时,一般有三个步骤:申请资源、使用资源、释放资源。若申请不成功,则进程被阻塞。
未完待续......