进程的就绪、执行、阻塞和挂起

news2024/11/23 15:52:27

        假设我们有一个进程, 它需要的资源有CPU, 资源A(在进程创建时为其分配), 资源B(进程运行时才发现需要资源B), 现在用这个进程来分析一下进程的几种状态. 先看图: 

图1: 进程的几种状态

1. 创建 --> 就绪(+资源A):

        操作系统为进程分配资源A, 进程进入就绪态, 等待CPU.

        进程当前拥有资源: 资源A

2. 就绪 --> 执行(+CPU):

        操作系统进行CPU的调度, 将CPU分配给该进程, 进程进入执行态. 

        进程当前拥有资源: CPU + 资源A

3. 执行 --> 就绪(-CPU): 

        操作系统进行CPU的调度, 剥夺该进程的CPU, 剥夺CPU的原因可能是该进程的时间片完或者是更高优先级的进程进入就绪态并抢占了CPU, 该进程进入就绪态. 

        进程当前拥有资源: 资源A

4. 执行 --> 阻塞(wait资源B, -CPU): 

        进程执行过程中发现需要资源B, 但资源B当前无法使用, 需要等待, 则进程进入阻塞态. 同时操作系统剥夺进程的CPU资源. 

        进程当前拥有资源: 资源A

5. 阻塞 --> 就绪(+资源B): 

        进程需要的资源B可以使用了, 操作系统将资源B分配给进程, 进程进入就绪态. 

        进程当前拥有资源: 资源A + 资源B

6. 阻塞 --> 挂起阻塞(-资源A): 

        如果资源B迟迟不能使用, 则进入阻塞态的进程将长期占有资源A, 这也是资源的浪费, 因此我们引入挂起, 把资源A让出来, 供其他进程使用. 操作系统剥夺资源A, 进程进入挂起阻塞态. 

        进程当前拥有资源:

7. 挂起阻塞 --> 阻塞(+资源A): 

        操作系统发现资源B快准备好了, 就马上归还抢占的资源A, 唤醒(激活)进程, 进程进入阻塞态. 

        进程当前拥有资源: 资源A

8. 挂起阻塞 --> 挂起就绪(+资源B): 

        资源B准备好了, 但是资源A暂时无法归还, 进程进入挂起就绪态. 

        进程当前拥有资源: 资源B

9. 挂起就绪 --> 就绪(+资源A): 

        资源A可以归还了, 操作系统归还资源A, 进程进入就绪态. 

         进程当前拥有资源: 资源A + 资源B

10. 就绪 --> 挂起就绪(-资源A): 

        进程刚被创建后, 分配了资源A, 进入就绪态, 如果操作系统发现CPU需要较长时间才会分配给该进程, 则为了资源A不被闲置, 就剥夺资源A, 进程进入挂起就绪态. 

        进程当前拥有资源:

11. 创建 --> 挂起就绪(没有分配资源): 

        操作系统创建了进程, 但是发现这个进程很久之后才能分配到CPU, 因此索性不给这个进程分配资源, 直接让进程进入挂起就绪态. 

        进程当前拥有资源:

12. 执行 --> 挂起就绪(-CPU, -资源A): 

        操作系统负担较大, 认为这个进程不重要, 为了减轻负担, 剥夺这个进程的资源, 进程进入挂起就绪态. 

        进程当前拥有资源:

13. 执行 --> 终止(-CPU, -资源A): 

        进程执行完毕, 释放资源, 进入终止态. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1021003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ICS TRIPLEX T8310 自动化控制模块

ICS TRIPLEX T8310 是一种自动化控制模块,通常用于工业控制和自动化系统中,以实现对各种过程和设备的自动控制。以下是可能包括在 ICS TRIPLEX T8310 自动化控制模块中的一些常见产品功能: PLC(可编程逻辑控制器)功能&…

树结构构建,字典树快速生成。

表结构 查出list后&#xff0c;用工具类转换。工具类代码如下&#xff1a; 下面展示一些 内联代码片。 public static List<JSONObject> toTreeList(List tList, String oidkey, Stripspidkey) List<JSONObject> jsonObjectList JSONArray. parseArray (JSON.…

公司电脑监控软件哪个好?(常用公司电脑监控软件有哪些?)

随着科技的发展&#xff0c;公司对员工电脑的监控已经成为了企业管理的重要手段。然而&#xff0c;如何选择合适的公司电脑监控软件&#xff0c;以及如何避免员工发现&#xff0c;成为了企业管理者需要面对的问题。 一、公司电脑监控软件哪个好&#xff1f; 针对公司电脑监控软…

Hive工作原理

Hive 工作原理详解-阿里云开发者社区 Hive的服务端组件 1. Driver组件&#xff1a;该组件包括&#xff1a;Compiler、Optimizer、Executor,它可以将Hive的编译、解析、优化转化为MapReduce任务提交给Hadoop1中的JobTracker或者是Hadoop2中的SourceManager来进行实际的执行相应…

《数字图像处理-OpenCV/Python》连载(7)视频文件的读取与保存

《数字图像处理-OpenCV/Python》连载&#xff08;7&#xff09;视频文件的读取与保存 本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html 本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html 第1章 图像的基本操作 为…

记录一下 ThinkPHP 使用JWT进行身份验证

ThinkPHP使用JWT身份验证 1.composer安装jwt&#xff0c;安装命令&#xff1a;composer require firebase/php-jwt 安装成功后会在vendor目录下生成firebase目录文件 第二步&#xff1a;生成token 先引入jwt use Firebase\JWT\JWT; public function getToken($user){//使…

安达发|APS软件多工厂架构引领生产管理新革命

APS多工厂架构是一种生产管理系统&#xff0c;它通过将多个工厂的生产过程进行整合和优化&#xff0c;实现了生产效率的提高和成本的降低。在APS多工厂架构中&#xff0c;每个工厂都有自己的生产线和生产计划&#xff0c;但是它们之间可以进行协调和协作&#xff0c;以确保整个…

深度学习归一化原理及代码实现(BatchNorm2d,LayerNorm,InstanceNorm,GroupNorm)

文章目录 概述形式原理理解源代码实现1.BatchNorm2d2.LayerNorm3.InstanceNorm4.GroupNorm 概述 本文记录总结pytorch中四种归一化方式的原理以及实现方式。方便后续理解和使用。 本文原理理解参考自 https://zhuanlan.zhihu.com/p/395855181 形式 四种归一化的公式都是相同的…

油猴Safari浏览器辅助插件:Tampermonkey for Mac中文版

油猴脚本Tampermonkey是一款油猴Safari浏览器辅助插件&#xff0c;是一款适用于Safari用户的脚本管理&#xff0c;能够方便管理不同的脚本。虽然有些受支持的浏览器拥有原生的用户脚本支持&#xff0c;但tampermonkey油猴插件将在您的用户脚本管理方面提供更多的便利&#xff0…

使用Python进行时间序列分析的8种图

时间序列数据 时间序列数据是按时间顺序以固定的时间间隔排列的观测值的集合。每个观察对应于特定的时间点&#xff0c;并且数据可以以各种频率&#xff08;例如&#xff0c;每日、每月、每年&#xff09;。这种类型的数据在许多领域都非常重要&#xff0c;包括金融&#xff0…

linux+c语言杂记(二)

一、在 Ubuntu 20.04 上安装 GCC 默认的 Ubuntu 软件源包含了一个软件包组&#xff0c;名称为 “build-essential”,它包含了 GNU 编辑器集合&#xff0c;GNU 调试器&#xff0c;和其他编译软件所必需的开发库和工具。 想要安装开发工具软件包&#xff0c;以 拥有 sudo 权限用…

新一代最强开源UI自动化测试神器Playwright(Java版)(对话框处理)

&#x1f3ad;Playwright让网页对话框&#x1f310;&#x1f4ac;处理变得更加快捷&#xff01;网页对话框是在网页上出现的常见弹窗&#xff0c;包括Alert、Confirm和Prompt等。这些对话框通常需要用户输入信息或进行某些选择&#xff0c;但是在自动化测试中处理它们可能会很棘…

双周赛113(枚举、分类讨论 + 二分查找、枚举值域两数之和、换根DP)

文章目录 双周赛113[2855. 使数组成为递增数组的最少右移次数](https://leetcode.cn/problems/minimum-right-shifts-to-sort-the-array/)暴力枚举贪心 O(n) [2856. 删除数对后的最小数组长度](https://leetcode.cn/problems/minimum-array-length-after-pair-removals/)分类讨…

[MAUI]实现动态拖拽排序网格

文章目录 创建页面元素创建可绑定对象创建绑定服务类拖拽&#xff08;Drag&#xff09;拖拽悬停&#xff0c;经过&#xff08;DragOver&#xff09;释放&#xff08;Drop&#xff09; 限流(Throttle)和防抖(Debounce)项目地址 上一章我们使用拖放(drag-drop)手势识别实现了可拖…

TCP/IP协议栈各层涉及到的协议

21/tcp FTP 文件传输协议 22/tcp SSH 安全登录、文件传送(SCP)和端口重定向 23/tcp Telnet 远程连接 80/tcp HTTP 443/tcp HTTPS 计算机各层网络协议 五层&#xff1a;应用层: (典型设备:应用程序&#xff0c;如FTP&#xff0c;SMTP &#xff0c;HTTP) DHCP(Dynamic Host…

Pikachu Burte Force(暴力破解)

一、Burte Force&#xff08;暴力破解&#xff09;概述 ​ “暴力破解”是一攻击具手段&#xff0c;在web攻击中&#xff0c;一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录&#xff0c;直到得到正确的结果。 为了提高…

RFID与人工智能怎么融合,RFID与人工智能融合的应用

随着物联网技术的不断发展&#xff0c;现实世界与数字世界的桥梁已经被打通。物联网通过各种传感器&#xff0c;将现实世界中的光、电、热等信号转化为有价值的数据。这些数据可以通过RFID技术进行自动收集和传输&#xff0c;然后经由人工智能算法进行分析、建模和预测&#xf…

uniapp cli创建 vue3 + typeScript项目 配置eslint prettier husky

1 命令创建项目 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2 下载依赖 npm install3 填写appid 4 运行项目并且微信开发工具打开 npm run dev:mp-weixin5 安装 vscode 插件 安装 **Vue Language Features (Volar)** &#xff1a;Vue3 语法提示插件 安装 *…

伦敦银一手是多少?

伦敦银是以国际现货白银价格为跟踪对象的电子合约交易&#xff0c;无论投资者通过什么地方的平台进入市场&#xff0c;执行的都是统一国际的标准&#xff0c;一手标准的合约所代表的就是5000盎司的白银&#xff0c;如果以国内投资者比较熟悉的单位计算&#xff0c;那约相当于15…

http客户端Feign使用

一、RestTemplate方式调用存在的问题 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class);存在下面的问题&#xff1a; 代码可读…