进程的基本状态及转换和阻塞及挂起的理解【转】
时间:2018-12-09
本文章向大家介绍进程的基本状态及转换和阻塞及挂起的理解【转】,主要包括进程的基本状态及转换和阻塞及挂起的理解【转】相关应用实例、知识点总结和注意事项,具有一定的参考价值,需要的朋友可以参考一下。
- 就绪状态 :一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。
- 执行状态:当一个进程在处理机上运行时,则称该进程处于运行状态。
- 阻塞状态:一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时仃止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。
- 挂起状态:由于IO的速度慢于CPU的运算速度,经常出现CPU等待I/O的情况。这时OS需要将主存中的进程对换至外存。在进程行为模式中需要增加一个新的挂起(suspend)状态。当内存中所有进程阻塞时,OS可将一进程置为挂起态并交换到外存,再调入另一个进程执行。
- 新建状态:进程刚创建,但还不能运行,OS还没有把它加到可执行进程组中,通常是还没有加载到主存中的新进程。
- 退出状态:OS从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消。进程不在适合执行,但与作业相关的表和其它信息临时被OS保留起来,为其他程序提供所需信息。
- 活跃就绪:指进程在主存并旦可被调度的状态。
- 静止就绪:指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。
- 活跃阻塞:指进程在主存中。一旦等待的事件产生,便进入活跃就绪状态。
- 静止阻塞:指进程对换到辅存时的阻塞状态。一旦等待的事件产生,便进入静止就绪状态。
进程转换状态图
- 三种基本状态转换图:
- 五种基本状态转换图(单挂起):
- 五种基本状态转换图(双挂起):
阻塞及挂起的理解
- 挂起是一种主动行为,是把一个进程从内存转到外存,而阻塞则是一种被动行为(并不绝对,看个人理解),是在等待事件或资源时任务的表现。对于挂起,其进程所有资源都转入外存;而阻塞,其进程所有资源依然保存在内存中。
- 对应挂起的行为是激活,即当没有活动就绪进程时或静止就绪队列里面有进程优先级高于活动就绪里面所有进程,还有就是当一个进程释放足够内存时,系统会把一个高优先级阻塞激活。而阻塞却没有对应的主动行为来解除,需要其他进程或系统唤醒。
- 一个比喻:只有一个锅,当食材已经准备充分的菜就可以下锅,这就是执行态;而其他准备好的菜就顺序放在一旁,等待下锅,这就是就绪态;还有的菜准备还不是很充分,例如该切片的菜还没有切片,还有一些佐料还没有从冰箱里拿出,这就是I/O操作等待,类似阻塞态;而还有一种情况就是厨房的面积太小了,桌子上放不下那么多的准备下锅的菜,于是先将那些还没有准备好的菜放入冰箱,如果还是放不了那么多菜,就把那些已经准备好的但没有下锅的菜放入冰箱,以免变质,这就是挂起态;当桌子上有位置了,就把菜从冰箱拿出来,这便是激活操作。做好的菜就可以端出厨房,这便是退出态。(PS:这里我假设冰箱空间很大,也存在那种炒到一半的菜放到一边的情况,即从执行态到就绪态或阻塞态的情况,这种情况可以类似川菜中先将肉处理一下(去腥等等),然后又从锅里捞出来,用豆瓣和其他佐料来进行腌制(这里如果佐料没有在桌子上就类似进入阻塞态,而如果有就相当于进入就绪态,但是锅里已经被占用了,需要等待一会儿)至于优先级的高低,也可类比有些菜是为了其他菜做铺垫(举个例子:在川菜里面,回锅肉和炒白菜,一般家庭会优先做回锅肉,因为当做回锅肉时,会炒出许多猪油,而这些有可以用来炒白菜,这样的炒白菜不仅好吃,而且也节约了许多油。))
- python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库
- MySQL中的NULL和空串比较 (r9笔记第52天)
- Core-periphery decomposition--核心-外围模型R代码整理
- 停止数据库没有响应的问题分析(r9笔记第51天)
- Hive——巧用transform处理复杂的字符串问题
- 停止数据库没有响应的问题分析(r9笔记第50天)
- 一个SQL语句引发的ORA-00600错误排查(一) (r9笔记第64天)
- 一个SQL语句引发的ORA-00600错误排查(二)(r9笔记第65天)
- 关于all_procedures的问题分析 (r9笔记第61天)
- 半自动化搭建Data Guard的想法和实践(一) (r9笔记第74天)
- Go语言位操作实例
- 通过Snapshot Standby来精确评估SQL性能 (r9笔记第73天)
- mongodb11天之屠龙宝刀(三)基本操作:增删改查与mysql对比
- Go语言 实现bitmap
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python基础入门知识点——字符串的介绍
- 文章要保存为TXT文件,其中的图片要怎么办?Python帮你解决
- 分析B站弹幕,川普同志暴露的那一天,没有一个鬼畜up是无辜的
- python-爬取地理坐标
- Python基础第一个案例:猜数字游戏,这个都写不出,那就放弃吧
- 现在听歌要各大平台到处跑,嫌麻烦?制作个人专属的音乐下载器
- 爬取上市公司数据、分析数据,并用可视化现实全国各地区公司数量
- 今天刚上手爬虫,当然要从最简单的开始啦,验证一下所学的知识
- Python数据可视化入门:使用Matplotlib绘图
- 有了音乐下载器,怎么能没有音乐播放器呢,打造自己的音乐播放器
- 七夕节到了,单身狗程序员要对自己好点,用代码送自己点安慰
- 面向对象视角下的前端工程体系
- 使用 Python破解大众点评字体加密(SVG反爬虫)
- Python爬虫练习:爬取高清4K桌面壁纸
- 爬取B站18000条《黑神话:悟空》实机演示弹幕,做成词云