IntelliJ IDEA教程 centos7安装 机器学习 dataframe video gwt static vue使用教程 管理后台模板 河南普通话报名 nodejs视频教程 mac虚拟打印机 chrome发送post请求 flutter 缺点 destoon python条件判断 如何配置python环境 javafile java日期 javase教程 java的环境配置 java中的注释 java如何配置环境变量 高效能人士的七个习惯下载 打马赛克的软件 隐藏虚拟键 beatedit c语言程序100例 unity3d下载 dnf传说装备 maya2016教程 迅雷会员共享账号 软碟通u盘装系统教程 php上传文件 ae蒙版和遮罩 vue搭建项目 img转iso 云挂机软件 cdr如何做立体字 java下载文件
当前位置: 首页 > 学习教程  > 编程语言

死锁概念以及产生的原因

2020/10/8 19:10:42 文章标签:

一、概念 所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。 二、死锁产生的四个必要条件 1.互斥性:线程对资源的占有是排他性的,一个资源只能被一个线程…

一、概念
所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
二、死锁产生的四个必要条件
1.互斥性:线程对资源的占有是排他性的,一个资源只能被一个线程占有,直到释放。

2.请求和保持条件:一个线程对请求被占有资源发生阻塞时,对已经获得的资源不释放。

3.不剥夺:一个线程在释放资源之前,其他的线程无法剥夺占用。

4.循环等待:发生死锁时,线程进入死循环,永久阻塞。
三、避免死锁的方法
1.破坏“请求和保持”条件
    资源一次性分配:一次性分配所有资源,这样就不会再有请求了。只要有一个资源得不到分配,也不给这个进程分配其他的资源:

2.破坏“不可抢占”条件
    可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源

3.破坏“循环等待”条件
    资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反。
四、检测死锁
首先为每个进程和每个资源指定一个唯一的号码;
然后建立资源分配表和进程等待表。
五、解除死锁:
当发现有进程死锁后,便应立即把它从死锁状态中解脱出来,常采用的方法有:

1.剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;
2.撤消进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态.消除为止;所谓代价是指优先级、运行代价、进程的重要性和价值等。


本文链接: http://www.dtmao.cc/news_show_250103.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?