这三个现象的共同点是,它们都是进程发生了某种异常的状况而无法继续往下推进的现象(故意设计的死循环除外),在考研选择题中可能会考察,所以要注意区分。

死锁

死锁是在并发执行中,多个进程因竞争资源而造成的一种僵局,各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。

例如,在哲学家进餐问题中,当所有哲学家同时拿起了自己左边的筷子,这时就陷入了死锁,每个哲学家都在等待自己右边的人放下筷子,导致所有人都不能进餐。

死锁一定是“循环等待对方手里的资源”导致的,因此如果有死锁现象,那至少有两个或两个以上的进程同时发生死锁。另外,发生死锁的进程一定处于阻塞态。

饥饿

由于长期得不到想要的资源,某进程无法向前推进的现象。与死锁要区分开,死锁是永远阻塞无法向前推进,而饥饿是等待了很长时间而无法向前推进。

例如,在短进程优先算法SPF中,若有源源不断地短进程到来,则长进程将一直得不到处理机,从而发生长进程饥饿。

可能只有一个进程发生饥饿,发生饥饿的进程既可能是阻塞态(如长期得不到需要的I/O设备)也有可能是就绪态(如长期得不到处理机)。

死循环

死循环是某进程执行过程中一直跳不出某个循环的现象,有时是因为程序逻辑bug导致的,有时是程序员故意设计的。

可能只有一个进程发生死循环,死循环的进程可以上处理机运行(可以是运行态),只不过无法像期待的那样顺利推进。

死锁和饥饿问题是由于操作系统分配资源的策略不合理导致的,而死循环是由代码逻辑的错误导致的。

死锁和饥饿是管理者(操作系统)的问题,死循环是被管理者的问题。

操作系统——饥饿、死锁、死循环的区别相关推荐

  1. 2.4操作系统之死锁详解(预防、避免、检测、解除)+思维导图

    文章目录 0.思维导图 1.什么是死锁? 2.死锁.饥饿.死循环的区别 3.死锁产生的四个必要条件 4.什么时候会发生死锁? 5.死锁的处理策略 (1)预防死锁 ① 破坏互斥条件 ② 破坏不可剥夺条件 ...

  2. 【操作系统】死锁相关知识点

    文章目录 1. 死锁基本概念 2. 死锁的四个必要条件 3. 死锁处理方法 3.1 鸵鸟策略 3.2 死锁检测与恢复 3.3 死锁避免 3.4 死锁预防 3.5 死锁处理策略比较 4. 其他相关 4. ...

  3. java线程饥饿死锁_java并发-线程饥饿死锁测试

    线程饥饿死锁 <Java并发编程实践>中对线程饥饿死锁的解释是这样的:在使用线程池执行任务时,如果任务依赖于其他任务,那么就可能产生死锁问题.在单线程的Executor中,若果一个任务将另 ...

  4. 操作系统就是一个“死循环”?

    操作系统就是一个"死循环"? 在回答之前,我们先从进程调度的角度来看看. 进程调度想必大家都有所了解,又都不太了解. 有所了解是因为这个概念被提到太多次,不太了解是因为总觉得不直观 ...

  5. 面试问题之操作系统:死锁的四个必要条件和解决办法

    面试问题之操作系统:死锁的四个必要条件和解决办法 参考文章: (1)面试问题之操作系统:死锁的四个必要条件和解决办法 (2)https://www.cnblogs.com/yichengming/p/ ...

  6. Java中活锁和死锁有什么区别?

    Java中活锁和死锁有什么区别? 活锁:一个线程通常会有会响应其他线程的活动.如果其他线程也会响应另一个线程的活动,那么就有可能发生活锁.同死锁一样,发生活锁的线程无法继续执行.然而线程并没有阻塞-- ...

  7. linux操作系统各版本直接的区别?

    linux操作系统各版本直接的区别? 三大家族: Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社区版本.相比RHEL,Fedora打包了显 ...

  8. 操作系统 - 进程与线程的区别[超详解]

    操作系统 - 进程与线程的区别[超详解]面试高频考题

  9. 操作系统——进程和线程的区别

    操作系统--进程和线程的区别 最近学习了操作系统中的进程和线程这两个知识点,昨天老师给我们出了一道题:进程和线程的区别.听完题目后一脸懵逼,只想到了进程的一部分概念,回来之后就查书,找到了答案. 1. ...

最新文章

  1. hls之m3u8、ts流格式详解
  2. hive插入数据:FAILED: ParseException line 1:12 missing TABLE at 'student' near 'EOF'
  3. mysql有没有实现高可用_MySQL高可用架构:mysql+keepalived实现
  4. 利用vi编辑器创建和编辑正文文件(二)
  5. java stub_Java Stub 研究学习(2)
  6. 联合国总部宣布75周年活动用腾讯会议和企业微信举行
  7. 22. 二叉树的层次遍历
  8. python 中读取yaml
  9. 机试学习笔记07 -- 斐波那契数列、素数判定、素数筛选、二分快速幂、分解素因数、常见数学公式总结、规律神器OEIS、高精度问题
  10. 【资源下载】SocketTool 下载 资源下载
  11. mac虚拟机哪个好用 mac双系统和虚拟机哪个好
  12. Gradle 4.4 版本 百度云网盘地址(永久有效)
  13. ionic自定义图标心得分享
  14. Python入门:对Excel数据处理的学习笔记【第四章】字符串类型处理技术
  15. [转载]modbus通讯协议详解和几张modbus图解 力求通俗易懂
  16. Excel做 “回归分析”,你可能都没玩儿过!
  17. Biomedical images dataset findings(1 Brain page)
  18. This Week in Spring - February 18th, 2020
  19. mysql综合案例 数据表的基本操作
  20. airdots重新配对_小米蓝牙耳机AirDots 2上架:一只恢复立体声,无需重新配对

热门文章

  1. vtkRenderWindowInteractor的作用范围和工作原理
  2. php 反射 容器类,PHP反射类ReflectionClass、ReflectionObject和Reflection
  3. 【九校联考-24凉心模拟】锻造(forging)
  4. 长垣四中计算机专业有音乐课吗,校园暴力证实为长垣县孟岗四中宿舍内
  5. Towards Blockchain-Based Reputation-Aware Federated Learning
  6. 网络原理考点之误码率与异步传输
  7. 用Python计算一元二次方程 求根公式法
  8. 研究人员对特定行为的大脑信号模式进行分离和解码
  9. 龙芯3B1500处理器参数介绍
  10. 区块链安全理论与实践(Blockchain for Distributed Systems Security)阅读笔记D2