操作系统之死锁
前面所介绍的进程管理 内存管理 文件管理 IO管理都是操作系统的必要组成条件,而死锁确实操作系统的病症。死锁出现后 会导致程序无法运行,可以比喻为系统的病症导致程序的罢工。
死锁病症出现的条件:
互斥,即每个资源只能供一个线程使用
占有且等待,即已占有资源的线程不会释放资源
不可抢占,即不可抢占已被其他线程占有资源
循环等待,即存在一个封闭的资源环路,互不释放、互相追求
死锁的解决:
引入第三方来整体上管控资源的分配
给资源分级
原理:
死锁的三种解决方式:预防、避免、检测并修复
预防:
即打破死锁形成的四个调价,只要四个条件不满足,就无法形成死锁。
避免:
操作系统知道整个资源的占有情况,当有新的资源请求发生的时候,操作系统会判断该请求是否会产生死锁,从而规避。
检测:
允许进程任意请求资源,操作系统会周期性检测 是否存在死锁病症,一旦存在 就强力消除死锁。必要时 会杀死进程。