`
香煎马鲛鱼
  • 浏览: 107158 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

死锁问题入门知识

阅读更多

死锁问题入门知识

今天我们一起来学习死锁,一起沐黎文伟老师的春风(我的操作系统老师叫做黎文伟),呵呵呵。

什么是死锁:

是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

产生死锁的原因主要是:
因为系统资源不足。
进程运行推进的顺序不合适。
资源分配不当等。
如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则
就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。

死锁出现的必要条件:

互斥使用(资源独占) 
 一个资源每次只能给一个进程使用 
不可强占(不可剥夺) 
    资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放 
请求和保持(部分分配,占有申请) 
一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配) 
循环等待 
存在一个进程等待队列 
    {P1 , P2 , … , Pn}, 
    其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路

资源分配图:

资源分配图用来精确描述系统资源分配场景(死锁)

资源分配图标识:

1、节点:进程节点P(每一个进程有一个节点),资源节点R(每一类有一个节点)

2、边:请求边(从进程节点指向资源节点),分配边()

 

画法:

Process



 

 

Resource Type with 4 instances



  

资源分配图的观察:

1、无环无死锁

2、有环可能死锁

a) 所有资源都是单资源实例

b) 多类资源,有一个资源有一个实例,其他资源有多个实例;环所涉及的资源只有一个实例

c) 无环一定无死锁

死锁实例:



  

活锁

如果有太多进程或操作在短时间内大量请求同一资源出现了活锁;

特点:

好像停滞了,但可以解开;

数据库例子:如果食物T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然在等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,……,T2有可能永远等待,这就是活锁的情形

网络的例子:中断活锁;

网卡速率变化导致数据包处理方式的变化

中断->轮询

三种处理死锁的方式:

1、死锁的预防和避免

预防:防止死锁出现;

避免:评估死锁是否会发生进行评估,如果有可能则不执行;

2、死锁的检查和恢复

3、鸵鸟策略:不管它,忽略

鸵鸟策略看似可笑,但是应用还是比较广泛的:

数学家观点(理论型,完美主义者):

希望世界完美无缺

有问题就必须处理,无论任何代价

工程师观点(实践):

能够工作就可以

有问题(死锁):频率、危害、处理代价进行比较

死锁频率<其他故障频率

处理代价>大于处理代价

死锁避免和预防方法:

1、消除互斥——非共享资源必须互斥访问,可共享资源无需互斥访问。

什么是共享?现代操作系统中,几乎所有的资源都是共享的,但这样的共享只是宏观意义上的,微观上,共享分为分时共享CPU、打印机,和同时共享如只读文件

2消除持有并等待——进程请求资源时不持有任何资源

执行前请求所有资源(不一定可行,因为一个进程执行前,不一定知道自己需要多少资源)

在请求资源前先释放所有资源

这个方式的缺点:有可能一个进程申请了资源但很久才用,有可能一个进程需要多个资源,不是所有资源都不是一次性能申请到的;

3、消除非抢占——请求的资源不可得时已持有的资源可被抢占(隐式释放)

这样的方式只能用于一些特殊情况:只能用于状态可以保存和恢复的资源

4、循环等待条件的消除

以上就是今天给大家补的知识~~希望以后继续跟大家共同进步~~~

<!--EndFragment-->
  • 大小: 17.5 KB
  • 大小: 1.3 KB
  • 大小: 581 Bytes
0
0
分享到:
评论

相关推荐

    SQL.Server.2008编程入门经典(第3版).part2.rar

    读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 作者简介 作者:(美国)韦拉(Rovert Vieria) 译者:孙皓 马煜 合著者:杨大川 韦拉(Robert Vieria),是畅销书作者...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 作者简介 作者:(美国)韦拉(Rovert Vieria) 译者:孙皓 马煜 合著者:杨大川 韦拉(Robert Vieria),是畅销书作者...

    Berkeley DB数据库支持事物的C++语言入门教程

    此外本书还描述了多线程(或者多进程)环境下,如何处理死锁的问题。 本书使用的是Berkeley DB12c的第一版。library版本是12.1.6.0 本书的目标是实现一个在支持事务的应用中的软件引擎的编写。本书假设你已经了解...

    动力节点_Java基础视频教程224_线程-死锁

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、...每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴。

    java 编程入门思考

    14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable 14.5.1 过多的线程 14.6 总结 14.7 练习 第15章 网络编程 15.1 机器的标识 15.1.1 服务器和客户机 15.1.2 端口:机器内独一无二的场所 15.2 套接字 ...

    图解java多线程设计模式

    日本经典多线程入门书,原版长销11年! 1.图文并茂 通俗易懂 日本资-深技术作家、《程序员的数学》作者结城浩执笔,264张图表(UML类图、时序图、Timethreads图等)穿插文中,通过类比手法和浅显的语言,逐一讲解与...

    Java初学者入门教学

    14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable 14.5.1 过多的线程 14.6 总结 14.7 练习 第15章 网络编程 15.1 机器的标识 15.1.1 服务器和客户机 15.1.2 端口:机器内独一无二的场所 15.2 套接字 ...

    2024新版计算机操作系统期末速成59集全(视频+配套资料)

    本课程将操作系统分为五个部分,分别是操作系统概述、进程...● 超易懂:考虑到不同人群接受能力不同,所有我们有基础入门知识,有高阶知识,搭建可以根据自己的情况进行学习,并且每个技术点以浅显易懂的方式进行深入

    asp.net知识库

    在SQL Server 2005中解决死锁 在 SQL Server 2005 中查询表结构及索引 sql server 2005中的DDL触发器 在 SQL Server 2005 中使用表值函数来实现空间数据库 SQL Server 2005的30个最重要特点 同时安装sql2000和sql...

    SQL Server 2008编程入门经典(第3版)

    第1章 RDBMS基础:SQLServer数据库的构成 ...14.5 处理死锁(1205错误) …… 第15章 触发器 第16章 初识XML 第17章 Reporting Services 第18章 使用Integration Services进行集成 第19章 扮演管理员的角色 附录

    入门学习Linux常用必会60个命令实例详解doc/txt

    入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不...

    db-tutorial是数据库db-tutorial是一个数据库教程

    关键词: ACID , AUTOCOMMIT ,事务隔离级别死锁,死锁,分布分布式事务 :hammer:其他关系型数据库Nosql数据库整理主流Nosql数据库知识点。 :books: :hundred_points: :high_voltage: -关键词:内存淘汰,事件,...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    12.3.4小心线程死锁 12.4认识定时器 12.4.1为什么需要定时器 12.4.2如何使用定时器 12.5小结 第13章反射技术 13.1为什么要学习反射 13.1.1引入配置文件 13.1.2配置文件遇到的问题 13.2认识Class类 13.2.1...

    SQL Server 2008高级程序设计 5/6

     11.5 处理死锁(也称作“A 1205”)  11.6 小结 第12章 触发器  12.1 触发器的含义  12.2 为数据完整性规则使用触发器  12.3 触发器的其他常见用途  12.4 其他触发器问题  12.5 INSTEAD OF触发器  ...

    SQL Server 2008高级程序设计 4/6

     11.5 处理死锁(也称作“A 1205”)  11.6 小结 第12章 触发器  12.1 触发器的含义  12.2 为数据完整性规则使用触发器  12.3 触发器的其他常见用途  12.4 其他触发器问题  12.5 INSTEAD OF触发器  ...

    SQL Server 2008高级程序设计 6/6

     11.5 处理死锁(也称作“A 1205”)  11.6 小结 第12章 触发器  12.1 触发器的含义  12.2 为数据完整性规则使用触发器  12.3 触发器的其他常见用途  12.4 其他触发器问题  12.5 INSTEAD OF触发器  ...

    SQL Server 2008高级程序设计 1/6

     11.5 处理死锁(也称作“A 1205”)  11.6 小结 第12章 触发器  12.1 触发器的含义  12.2 为数据完整性规则使用触发器  12.3 触发器的其他常见用途  12.4 其他触发器问题  12.5 INSTEAD OF触发器  ...

    SQL Server 2008高级程序设计 2/6

     11.5 处理死锁(也称作“A 1205”)  11.6 小结 第12章 触发器  12.1 触发器的含义  12.2 为数据完整性规则使用触发器  12.3 触发器的其他常见用途  12.4 其他触发器问题  12.5 INSTEAD OF触发器  ...

    SQL Server 2008高级程序设计 3/6

     11.5 处理死锁(也称作“A 1205”)  11.6 小结 第12章 触发器  12.1 触发器的含义  12.2 为数据完整性规则使用触发器  12.3 触发器的其他常见用途  12.4 其他触发器问题  12.5 INSTEAD OF触发器  ...

Global site tag (gtag.js) - Google Analytics