产生原因
# 互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
# 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
# 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
# 循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
避免死锁
~ 允许进程同时访问某些资源 -- 互斥
~ 允许进程强行从占有者那里夺取某些资源 -- 非剥夺条件
~ 进程在运行前一次性地向系统申请它所需要的全部资源 -- 请求与保持
~ 把资源事先分类编号,按号分配,杜绝环路 -- 循环等待