挂起和阻塞区别以及sleep和wait的区别
阻塞 VS 挂起
阻塞与挂起都是进程的状态,但他们有一些相似之处,也有一些区别,下面先对他们进行概述,再进行比较
阻塞:正在执行的进程由于发生某时间(如I/O请求、申请缓冲区失败等)暂时无法继续执行。此时引起进程调度,OS把处理机分配给另一个就绪进程,而让受阻进程处于暂停状态,一般将这种状态称为阻塞状态。
挂起:由于系统和用户的需要引入了挂起的操作,进程被挂起意味着该进程处于静止状态。如果进程正在执行,它将暂停执行,若原本处于就绪状态,则该进程此时暂不接受调度。
共同点:
1. 进程都暂停执行
2. 进程都释放CPU,即两个过程都会涉及上下文切换
不同点:
1. 对系统资源占用不同:虽然都释放了CPU,但阻塞的进程仍处于内存中,而挂起的进程通过“对换”技术被换出到外存(磁盘)中。
2. 发生时机不同:阻塞一般在进程等待资源(IO资源、信号量等)时发生;而挂起是由于用户和系统的需要,例如,终端用户需要暂停程序研究其执行情况或对其进行修改、OS为了提高内存利用率需要将暂时不能运行的进程(处于就绪或阻塞队列的进程)调出到磁盘
3. 恢复时机不同:阻塞要在等待的资源得到满足(例如获得了锁)后,才会进入就绪状态,等待被调度而执行;被挂起的进程由将其挂起的对象(如用户、系统)在时机符合时(调试结束、被调度进程选中需要重新执行)将其主动激活
挂起和阻塞区别:
(1)挂起是一种主动行为,因此恢复也应该要主动完成。而阻塞是一种被动行为,是在等待事件或者资源任务的表现,你不知道它什么时候被阻塞,也不清楚它什么时候会恢复阻塞。
(2)阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或者信号量的时候出现。挂起(suspend)不释放CPU,如果任务优先级高,就永远轮不到其他任务运行。一般挂起用于程序调试中的条件中断,当出现某个条件的情况下挂起,然后进行单步调试。
sleep()和wait()函数的区别:
(1)两者比较的共同之处是:两个方法都是使程序等待多少毫秒。
(2)最主要区别是:sleep()方法没有释放锁。而wait()方法释放了锁,使得其他线程可以使用同步控制块或者方法。
(3)sleep()指线程被调用时,占着CPU不工作,形象的说明为“占着CPU”睡觉。
sleep(2000)表示:占用CPU,程序休眠2秒。
wait(2000)表示:不占用CPU,程序等待2秒。
挂起和阻塞区别以及sleep和wait的区别相关推荐
- 挂起和阻塞区别?sleep()和wait()的区别?
挂起和阻塞区别: (1)挂起是一种主动行为,因此恢复也应该要主动完成.而阻塞是一种被动行为,是在等待事件或者资源任务的表现,你不知道它什么时候被阻塞,也不清楚它什么时候会恢复阻塞. (2)阻塞(pen ...
- java线程的睡眠、挂起、阻塞
线程的状态与状态间的转化 新建状态:单独的创建一个线程,参考我之前博客:java多线程的三种创建方式与多线程的应用 新建 = > 就绪:处于新建状态的进程thread调用它的start()放方法 ...
- 详细解说Windows 8.1与Windows 8的区别(Win8.1与Win8区别)
详细解说Windows 8.1与Windows 8的区别(Win8.1与Win8区别) 详细解说Windows 8.1与Windows 8的区别(Win8.1与Win8区别) 本文转自"吾乐 ...
- C++中结构体与类的区别(struct与class的区别)
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能. struct能包含成员函数吗? 能! struct能继承吗? 能!! s ...
- java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...
- adaboost和GBDT的区别以及xgboost和GBDT的区别
adaboost和GBDT的区别以及xgboost和GBDT的区别 AdaBoost:提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值.这样一来,那些没有得到正确分类的数据, ...
- 问题小结(二)——maven的核心功能、面向对象编程和面向接口编程的区别、抽象类和接口的区别等
文章目录 1. Java创建对象有哪四种方式? 2. 什么是maven?maven的核心功能有哪些? 3. 什么是MVC?说说分层的好处. 4. Spring的两大核心技术是什么? 5. 什么是IOC ...
- [html] title与h1的区别、b与strong的区别、i与em的区别?
[html] title与h1的区别.b与strong的区别.i与em的区别? title 是 网页标题标签 h1 是文本标签 默认与word的h1相似为最大的标题显示 b 为文本加粗标签 与word ...
- JavaScript中Element与Node的区别,children与childNodes的区别
关于Element跟Node的区别,cilldren跟childNodes的区别很多朋友弄不清楚,本文试图让大家明白这几个概念之间的区别. Node(节点)是DOM层次结构中的任何类型的对象的通用名称 ...
最新文章
- 如何进行无线网络中继设置
- 2014年-如何编写游戏辅助工具
- 分布式系统之消息队列
- STM32F1笔记(五)外部中断EXTI
- c++设置一个二维字符组初值_6.8 C++字符数组
- 如何提高 Rust 程序的性能?
- 微信messageutil.java_java微信公众平台开发回复文本消息
- 借助 Clay 编写 不可思议 的 c# 代码
- FFMpeg的avcodec_send_packet/avcodec_receive_frame是异步解码
- win10系统steam登陆计算机授权,Steam怎样取消电脑授权 设置里面有
- 服务器主板电池的电压不稳定怎么办,轻松解决CMOS掉电烦恼这绝招
- LeetCode:合并两个有序数组
- Windows创建用户定义的服务(srvany.exe和instsrv.exe )
- python就业方向
- 全网最详细的Yolov3训练Caltech Pedestrain数据集并绘制fppi miss rate图
- [Luogu P2597] [BZOJ 2815] [ZJOI2012]灾难
- Android 10 正式版或将 9月3日 发布!
- 视频批量截取方法,怎样同时对多个视频的一部分进行截取?
- 小厂B端产品啥都干——B端表格设计入门指南(上)
- SQL语句优化(雷人代码)
热门文章
- RT-Thread逐飞-智能车培训之RT-Thread在全向行进组中的应用
- 电路纹身-疼痛的快乐
- 第十五届,我们一起加油吧
- 已解决Cause: java.sql.SQLException: Incorrect string value: ‘\\xF0\\x9F\\x8C\\xB8 \\xE5...‘报错
- c语言排班系统设计报告,C语言课程设计关于排班系统的一些问题
- 如何去除table的边框_如何擦玻璃,这些擦玻璃知识很实用
- java 进程消失_Java进程诡异消失问题
- python3 的乐趣进度条
- python 导入包的路径_关于Python包导入的知识点你知道吗?
- 西南交通大学计算机专硕调剂,2019年西南交通大学接收调剂信息