当前位置: 首页 > 面试题库 >

请谈一谈,什么情况下会发生死锁?解决死锁的策略有哪些?

商泽宇
2023-03-14
本文向大家介绍请谈一谈,什么情况下会发生死锁?解决死锁的策略有哪些?相关面试题,主要包含被问及请谈一谈,什么情况下会发生死锁?解决死锁的策略有哪些?时的应答技巧和注意事项,需要的朋友参考一下

考察点:死锁

(一)互斥条件:一个资源一次只能被一个进程访问。即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占 有。这种独占资源如CD-ROM驱动器,打印机等等,必须在占有该资源的进程主动释放它之后,其它进程才能占有该资源。这是由资源本身的属性所决定的。

(二)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。进程至少已经占有一个资源,但又申请新的资源;由于该资源已被另外进程占有,此时该进程阻塞;但是,它在等待新资源之时,仍继续占用已占有的资源。

(三)不剥夺条件:进程已经获得的资源,在未使用完之前不能强行剥夺,而只能由该资源的占有者进程自行释放。

(四)循环等待条件:若干资源形成一种头尾相接的循环等待资源关系。

解决方法:银行家算法

 

 类似资料:
  • 死锁描述了另外两个线程因为永远等待对方而被阻塞的情况。当死锁发生时,程序永远挂起,你唯一能做的就是杀死程序。 为什么在下面给出的示例生产者-消费者问题中没有发生死锁: 我想知道为什么当同步对象正在等待其他线程释放锁时,在同步块中调用等待方法不会导致死锁?

  • 本文向大家介绍请你说一说死锁发生的条件以及如何解决死锁相关面试题,主要包含被问及请你说一说死锁发生的条件以及如何解决死锁时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 死锁是指两个或两个以上进程在执行过程中,因争夺资源而造成的下相互等待的现象。死锁发生的四个必要条件如下: 互斥条件:进程对所分配到的资源不允许其他进程访问,若其他进程访问该资源,只能等待,直至占有该资源的进程使用完成后释放该

  • 主要内容:1.死锁无知,2.死锁预防,3.避免死锁,4.死锁检测和恢复1.死锁无知 死锁无知是所有机制中使用最广泛的方法。 许多操作系统主要为最终用户使用。 在这种方法中,操作系统假定永远不会发生死锁。 它只是无视死锁。 这种方法最适合用户使用系统仅用于浏览和所有其他常规内容的单个最终用户系统。 正确性和性能之间总是有一个折衷。 Windows和Linux等操作系统主要关注性能。 但是,如果死锁发生的次数是100次,那么系统的性能就会一直下降,如果它始终使用死锁处理

  • 问题内容: 我一直在尝试解决我在Golang并发中遇到的这个简单问题。我一直在搜索所有可能的解决方案,但没有发现与我的问题有关的特定信息(否则我可能会被遗漏)。这是我的代码: 它显示错误: 致命错误:所有goroutine都在睡觉-死锁! goroutine 1 [chan接收]:main.main()D:/Code/go/src/testconcurrency/main.go:23 + 0xca

  • 本文向大家介绍请问什么是死锁(deadlock)?相关面试题,主要包含被问及请问什么是死锁(deadlock)?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程死锁 两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是这些线程都陷入了无限的等待中。 例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生

  • 本文向大家介绍Oracle数据表中的死锁情况解决方法,包括了Oracle数据表中的死锁情况解决方法的使用技巧和注意事项,需要的朋友参考一下 在进行数据库管理的过程中,经常会出现数据表被用户的一些不合理操作而导致表被锁定的情况,以下主要介绍如何查找哪些表被哪个用户所锁定,以及如何解除锁定: 1.查找被锁定的表: 如果想知道具体是哪个进程阻塞了哪个进程,可用以下语句查看: 或 2.确定锁定表用户的si