博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是死锁
阅读量:6569 次
发布时间:2019-06-24

本文共 667 字,大约阅读时间需要 2 分钟。

进程死锁,它是操作系统或系统软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其他进程占用时,就形成了死锁。

产生死锁的原因:

①系统资源不足;

②进程运行推进的顺序不合适;

③资源分配不当等。

产生死锁的四个必要条件:

①互斥条件:一个资源每次只能被一个进程使用;

②请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;

③不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺;

④循环等待条件:若干进程之间形成一种头尾相连的循环等待资源关系。

避免死锁的方法:

①有序的资源分配法;

②银行家算法。

解决死锁:

①进行系统的重新启动(最简单粗暴)

②撤销进程,剥夺资源

银行家算法

银行家算法是一种最有代表性的避免死锁的算法。

我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。

转载于:https://blog.51cto.com/liqi0302/2045573

你可能感兴趣的文章
跨站请求伪造CSRF
查看>>
Java刷题知识点之进程和线程的区别
查看>>
利用JS获取IE客户端IP及MAC的实现
查看>>
数据结构之二叉搜索树/二叉查找数/有序二叉树/排序二叉树
查看>>
Hawk原理:通过IEnumerable实现通用的ETL管道
查看>>
v深入研究Clang(四) Clang编译器的简单分析
查看>>
关于Eclipse插件开发(一)
查看>>
Dojo入门:DOM操作
查看>>
【Linux】Linux基本命令扫盲【转】
查看>>
Post with HttpClient
查看>>
C# 虚函数和重载函数
查看>>
如果遇到Hadoop集群正常,MapReduce作业运行出现错误,如何来查看作业运行日志(图文详解)...
查看>>
怎样实现企业管理系统的操作日志功能
查看>>
哈夫曼树
查看>>
nexus搭建maven私服
查看>>
FLASH免激活js
查看>>
linux下memcached安装 和redis安装,jdk,tomcat,mysql 安装
查看>>
PL/pgSQL学习笔记之九
查看>>
Android实现button一边圆角一边直角
查看>>
Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢...
查看>>