操作系统——死锁相关

操作系统——死锁相关

1、死锁:在计算机系统中有许多互斥资源(如打印机)或软件资源(如临界区),若两个进程同时使用打印机,或者同时进入临界区必然会出现问题。所谓死锁,是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。

2、死锁产生的必要条件:

(1)互斥条件:即一个资源每次只能被一个进程使用,在操作系统中这是真实存在的情况。

(2)保持和等待条件:有一个进程已获得了一些资源,但因请求其他资源被阻塞时,对已获得的资源保持不放。

(3)不剥夺条件:有些系统资源是不可剥夺的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。

(4)环路等待条件:若干个进程形成环形链,每个都占用对方要申请的下一个资源。

3、死锁预防:死锁预防是采用某种策略,限制并发进程对资源的请求,破坏死锁产生的4个必要条件之一,使系统在任何时刻都不满足死锁的必要条件。

(1)预先静态分配法。破坏了“不可剥夺条件”。预先分配所需资源,保证不等待资源。该方法的问题是降低了对资源的请求,降低进程的并发程度;有时可能无法预先知道所需资源。

(2)资源有序分配法。破坏了“环路条件”。把资源分类按顺序。保证不形成环路。该方法存在的问题是限制进程对资源的请求;由于资源的排序占用系统开销。

4、死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全,典型算法是“银行家算法”。但这种算法会增加系统的开销。

5、死锁检测:判断系统是否处于死锁状态,如果是,则执行死锁解除策略。

6、死锁解除:与死锁检测结合使用,它使用的方式就是剥夺。即将资源强行分配给别的进程。

更多请参考:http://blog.csdn.net/a_long_/article/details/51222906

时间: 2024-10-05 17:45:26

操作系统——死锁相关的相关文章

关于操作系统——死锁

一.死锁的定义: 两个或多个进程在无限期的等待永远不会发生的条件系统处于停滞状态,这种现象称为进程死锁. 二.产生死锁的必要条件: 1:互斥使用(资源独占):一个资源每次只能给一个进程使用: 2:不可强占(不可剥夺):资源申请者不能强行的从占有者手中读取资源,资源只能有占有者资源释放: 3:请求和保持:一个进程在申请资源的同时保持对原有资源的占有 4:循环等待:存在一个等待队列{p1,p2,p3,......pn},其中p1等待p2占有的资源,p2等待p3占有的资源,.......pn等待p1的

Mysql 死锁相关操作

该随笔随时记录日常工作中遇到的关于mysql的死锁相关问题 1)查看mysql当前的处理线程(connection) mysql> show processlist; 2)杀掉对应的connection mysql> kill connection_id;    例如 kill 3(杀掉链接3) 4)查看数据库中的锁状态 mysql自带的数据库INFORMATION_SCHEMA 记录了数据库相关的信息.包括锁信息等:我们见到的了解一下. mysql> use information_s

sqlserver 中死锁相关问题

死锁定义: 所谓死锁就是两个线程或多个线程在拥有一部分资源的同时还需要拥有其他资源, 但是其他资源被其他线程占有,每个线程为了获得其他线程占有的资源都处于一个相互等待 的状态,这个时候如果没有外界力量破坏这种相互等待的状态或是某个(些)线程自动放弃已经占有的资源, 那么所有的线程都无法完成任务,这个时候系统处于一个僵死状态.这就是所谓的死锁. sqlserver自身有个锁监视器(Lock monitor),一旦发现死锁,SqlServer会kill掉一个其中一个线程, 使另外一个(些)继续完成任

【操作系统-死锁】死锁发生的条件是什么?死锁的避免和预防方法

digest:本文章简要概述操作系统死锁的原因以及预防和解决方法. 1.死锁的定义 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种进程间相互阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程.                                                                ——汤小丹等.<计算机操作系统>:西安电子科技大学出版社,2012.

[OS] 死锁相关知识点以及银行家算法详解

因此我们先来介绍一下死锁: 死锁特征 当出现死锁时,进程永远不能完成,并且系统资源被阻碍使用,阻止了其他作业开始执行.在讨论处理死锁问题的各种方法之前,先深入讨论一下死锁的特征. ·必要条件 (1)互斥:至少有一个资源必须处于非共享模式,即一次只有一个进程使用.如果另一进程申请该资源,那么申请进程必须等到该资源被释放为止. (2)占有并等待:一个进程必须占有至少一个资源,并等待另一资源,而该资源为其他进程所占有. (3)非抢占:资源不能被抢占,即资源只能在进程完成任务后自动释放. (4)循环等待

《操作系统》相关

(1)页表项(页描述子)中各个位的作用: 1. 页号 2. 块号(页框号) 3. 中断位: 用于判断该页是不是在内存中,如果是0,表示该页面不在内存中,会引起一个缺页中断 4. 保护位(存取控制位):用于指出该页允许什么类型的访问,如果用一位来标识的话:1表示只读,0表示读写 5. 修改位(脏位):用于页面的换出,如果某个页面被修改过(即为脏),在淘汰该页时,必须将其写回磁盘,反之,可以直接丢弃该页 6. 访问位:不论是读还是写(get or set),系统都会设置该页的访问位,它的值用来帮助操

数据库的死锁相关知识

死锁的定义 死锁是指两个或两个以上的进程在执行的过程中,由于竞态资源或由于彼此通信而造成的一种阻塞现象.若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态,这些在互相等待的进程称为死锁进程. 数据库发生死锁的条件 1.资源不能共享.需要只能由一个进程或线程使用. 2.请求且保持.已经锁定的资源自己保持着不释放. 3.不剥夺. 自己申请的资源不能被别人剥夺. 4.循环等待. 想防止死锁只需将上述条件破坏: (1)尽量避免并发的执行涉及到修改数据的语句. (2)要求每个事务一次就将所有要用的

iOS开发----操作系统----死锁的四个必要条件

1)互斥条件:一段时间内某资源被使用时不能被其他进程使用. 2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求, 而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放. 3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放. 4)循环等待条件:指在发生死锁时,必然存在一个进程--资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0 正在等待一个P1占用的资源:P1正在等待P2占用的资源,--,Pn正在

死锁相关介绍

1.多线程中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,循环依赖导致彼此一直处于阻塞的状态. 2.定位死锁最常见的方式就是利用jstack等工具获取线程栈,然后定位互相之间的依赖关系,进而找到死锁. 3.如果程序运行时发生了死锁,绝大多数情况下都是无法在线解决的,只能重启.修正程序本身问题. 4.避免死锁发生的方法有: (1)尽量避免使用多个锁,并且只有需要时才持有锁. (2)尽量设计好锁的获取顺序,参考银行家算法. (3)使用带超时的方法,如Object.wait(...).Cou