操作系统原理 —— 进程有哪几种状态?状态之间如何切换?(七)
进程的五种状态
首先我们一起来看一下进程在哪些情况下,会有不同的状态表示。
创建态、就绪态
当我们刚开始运行程序的时候,操作系统把可执行文件加载到内存的时候,进程正在被创建的时候,它的状态是创建态,在这个阶段操作系统会为进程分配资源、初始化 PCB。
当进程创建完成之后,便进入 就绪态,处于就绪的进程已经具备运行条件,但是由于 CPU 不空闲,就暂时不能运行。

那么过了一会,CPU 它有空了,开始执行 就绪态 的进程,如果一个进程此时在 CPU 上运行,那么这个进程处于 运行态,CPU 会执行该进程对应的程序。
然后在 CPU 执行过程中,这个进程它需要调用打印机的系统资源,但是打印机它现在也很忙,没空处理。 CPU 就会把该进程变为 阻塞态。
当打印机忙完了,可以把资源分配给该进程的时候,进程又会从阻塞态 转变成 就绪态 等待 CPU 的再一次执行。
当我们整个进程执行完成之后,一个进程可以执行 exit 系统调用,请求操作系统终止该进程,此时该进程会进入 终止态,操作系统会让该进程下 CPU,并且回收内存空间资源,最后还要回收该进程的 PCB,当终止进程的工作完成之后,这个进程就彻底消失了。
进程状态之间的切换
现在我们已知进程有五种状态:创建态、就绪态、运行态、阻塞态、终止态,我们再一起来总结一下这几种状态转变的过程。
首先当程序执行,进程在被创建的时候是创建态,当创建工作完成之后,就会进入就绪态,等待 CPU 执行.
当 CPU 开始执行该进程,就会进入运行态,在运行过程中,进程调用 系统调用的方式申请某种系统资源时,或者请求等待某个事件发生,此时就会进入 阻塞态,这里强调一下,从 运行态 -> 阻塞态,是由进程自身做出的主动行为。
当进程申请的资源或等待的事情发了,这个时候又从阻塞态 -> 就绪态,在这里不是进程本身能控制的,是一种被动行为。
当程序运行结束,或者运行过程中遇到不可修复的错误,就会从 运行态 -> 终止态。
还有一种情况就是当进程的时间片执行时间到了,或者 CPU 被抢占了,这个时候进程状态会从:运行态 -> 就绪态。
这里需要注意:不能由阻塞态 直接变为 运行态,也不能直接由 就绪态变为阻塞态,因为阻塞态是由进程主动请求的,必然需要进程在运行时主动发出这个请求。

我们最后再来一起总结看下:

状态如何被组织
操作系统为了方便管理各个不同状态下的进程,会将同一种状态下的各个进程的 PCB 组织起来。
那怎么组织呢? 组织一共有两种方式:链接方式、索引方式。
链接方式就有点像链表的数据结构一样进行存储,如下图:

索引的方式也很好理解,就是维护各个不同状态下进程的索引表就行,如下图:

这两种方式大家理解,有个印象就行。

本章总结
主要是掌握进程的状态,以及状态之间的切换。

相关文章:
操作系统原理 —— 进程有哪几种状态?状态之间如何切换?(七)
进程的五种状态 首先我们一起来看一下进程在哪些情况下,会有不同的状态表示。 创建态、就绪态 当我们刚开始运行程序的时候,操作系统把可执行文件加载到内存的时候,进程正在被创建的时候,它的状态是创建态,在这个阶…...
可算是熬出头了,测试4年,费时8个月,入职阿里,涨薪14K
前言 你的努力,终将成就无可替代的自己。 本科毕业后就一直从事测试的工作,和多数人一样,最开始从事点点点的工作,看着自己的同学一步一步往上走,自己还是在原地踏步,说实话这不是自己想要的状态。 一年半…...
5款十分小众的软件,知道的人不多但却很好用
今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。 1.视频直播录制——OBS Studio OBS Studio可以让你轻松地录制和直播你的屏幕、摄像头、游戏等内容。你可以使用OBS Studio来创建多种…...
Linux驱动开发:uboot启动流程详解
前言:uboot作为Linux驱动开发的 “三巨头” 之一,绝对是一座绕不开的大山。当然,即使不去细致了解uboot启动流程依旧不影响开发者对uboot的简单移植。但秉持着知其然知其所以然的学习态度,作者将给读者朋友细致化的过一遍uboot启动…...
分治与减治算法实验: 排序中减治法的程序设计
目录 前言 实验内容 实验目的 实验分析 实验过程 流程演示 写出伪代码 实验代码 代码详解 运行结果 总结 前言 本文介绍了算法实验排序中减治法的程序设计。减治法是一种常用的算法设计技术,它通过减少问题的规模来求解问题。减治法可以应用于排序问题&…...
leetcode两数、三数、四数之和
如有错误,感谢不吝赐教、交流 文章目录 两数之和题目方法一:暴力两重循环(不可取)方法二:HashMap空间换时间 三数之和题目方法一:当然是暴力破解啦方法二:同两数之和的原理,借助Has…...
使用Docker部署wikitten个人知识库
使用Docker部署wikitten个人知识库 一、wikitten介绍1.wikitten简介2.wikitten特点 二、本地实践环境介绍三、本地环境检查1.检查Docker服务状态2.检查Docker版本 四、部署wikitten个人知识库1.创建数据目录2.下载wikitten镜像3.创建wikitten容器4.查看wikitten容器状态5.检查w…...
【MYSQL】Java的JDBC编程(idea连接数据库)
1. 配置 (1)新建一个项目 (2)Build System 那里选择Maven,下一步Create (3)配置pom.xml文件 首先查看自己的MYSQL版本:进入MySQL命令窗口 我的MYSQL版本是8.0版本的. 下一步,…...
机器学习——主成分分析法(PCA)概念公式及应用python实现
机器学习——主成分分析法(PCA) 文章目录 机器学习——主成分分析法(PCA)一、主成分分析的概念二、主成分分析的步骤三、主成分分析PCA的简单实现四、手写体识别数字降维 一、主成分分析的概念 主成分分析(PCA&#x…...
手写axios源码系列二:创建axios函数对象
文章目录 一、模块化目录介绍二、创建 axios 函数对象1、创建 axios.js 文件2、创建 defaults.js 文件3、创建 _Axios.js 文件4、总结 当前篇章正式进入手写 axios 源码系列,我们要真枪实弹的开始写代码了。 因为 axios 源码的代码量比较庞大,所以我们这…...
HTB-Time
HTB-Time 信息收集80端口 立足pericles -> root 信息收集 80端口 有两个功能,一个是美化JSON数据。 一个是验证JSON,并且输入{“abc”:“abc”}之类的会出现报错。 Validation failed: Unhandled Java exception: com.fasterxml.jackson.core.JsonPa…...
零基础C/C++开发到底要学什么?
作者:黑马程序员 链接:https://www.zhihu.com/question/597037176/answer/2999707086 先和我一起看看,C/C学完了可以做什么: 软件工程师:负责设计、开发、测试和维护各类型的软件应用程序;游戏开发&#x…...
OpenStack中的CPU与内存超分详解
目录 什么是超分 CPU超分 查看虚拟机虚拟CPU运行在哪些物理CPU上 内存超分 内存预留 内存共享 如何设置内存预留和内存共享 全局设置 临时设置 什么是超分 超分通常指的是CPU或者GPU的分区或者分割,以在一个物理CPU或GPU内模拟多个逻辑CPU或GPU的功能。这…...
main.m文件解析--@autoreleasepool和UIApplicationMain
iOS 程序入口UIApplicationMain详解,相信大家新建一个工程的时候都会看到一个main.m文件,只不过我们很少了解它,现在我们分析一下它的作用是什么? 一、main.m文件 int main(int argc, char * argv[]) {autoreleasepool {return …...
C语言复习之顺序表(十五)
📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c阶段>——目标C、Windows,MySQL,Qt,数据结构与算法,Linux,多线程,会持续分享…...
学系统集成项目管理工程师(中项)系列10_立项管理
1. 系统集成项目管理至关重要的一个环节 2. 重点在于是否要启动一个项目,并为其提供相应的预算支持 3. 项目建议 3.1. Request for Proposal, RFP 3.2. 立项申请 3.3. 项目建设单位向上级主管部门提交的项目申请文件,是对拟建项目提出的总体设想 3…...
电视盒子哪个好?数码小编盘点2023电视盒子排行榜
随着网络剧的热播,电视机又再度受宠,电视盒子也成为不可缺少的小家电。但面对复杂的参数和品牌型号,挑选时不知道电视盒子哪款最好,小编根据销量和用户评价整理半个月后盘点了电视盒子排行榜前五,对电视盒子哪个好感兴…...
flink动态表的概念详解
目录 前言🚩 动态表和持续不断查询 stream转化成表 连续查询 查询限制 表转化为流 前言🚩 传统的数据库SQL和实时SQL处理的差别还是很大的,这里简单列出一些区别: 尽管存在这些差异,但使用关系查询和SQL处理流并…...
ArcGIS Pro用户界面
目录 1 功能区 1.1 快速访问工具栏 1.2 自定义快速访问工具栏 1.3 自定义功能区选项 1.3.1 添加组和命令 1.3.2 添加新选项卡 2 视图 3 用户界面排列 编辑 4 窗格 4.1 内容窗格 4.2 目录窗格 4.3 目录视图(类似ArcCatalog) 4.4 浏览对话框…...
HDCTF 2023 Pwn WriteUp
Index 前言Pwnner分析EXP: KEEP_ON分析EXP: Minions分析EXP: 后记: 前言 本人是菜狗,比赛的时候只做出来1题,2题有思路但是不会,还是太菜了。 栈迁移还是不会,但又都是栈迁移的题,真头大。得找时间好好学学…...
宝塔部署前后端时,配置域名与ssl证书
创建文件夹1.后端部署部署之后点击设置这步骤最关键# HTTP反向代理相关配置开始 >>>location ~ /purge(/.*) {proxy_cache_purge cache_one $Host$request_uri$is_args$args;}location / {proxy_pass http://127.0.0.1:8773;proxy_set_header Host $Host:$server_port…...
RotaryDial库:嵌入式脉冲拨号信号采集与处理
1. RotaryDial 库深度解析:面向嵌入式系统的脉冲拨号信号采集与处理1.1 脉冲拨号技术原理与工程价值脉冲拨号(Pulse Dialing),又称环路断续拨号(Loop Disconnect Dialing),是模拟电话系统中最早…...
昆明波纹管供应商哪个好
在市政排水、农田灌溉、通信保护等工程领域,HDPE双壁波纹管因其优异的环刚度、耐腐蚀性和施工便捷性,已成为不可或缺的关键建材。然而,面对市场上琳琅满目的供应商,尤其是在地质气候条件独特的西南地区,如何选择一个真…...
EasyAnimation性能优化指南:确保动画流畅运行的7个关键点
EasyAnimation性能优化指南:确保动画流畅运行的7个关键点 【免费下载链接】EasyAnimation A Swift library to take the power of UIView.animateWithDuration(_:, animations:...) to a whole new level - layers, springs, chain-able animations and mixing view…...
基于YOLOv8深度学习的电梯内电动车检测系统(YOLOv8+YOLO数据集+UI界面+Python项目源码+模型)
一、项目介绍 项目摘要 随着城市化进程的加速,电梯已成为现代建筑中不可或缺的垂直交通工具。然而,电动车进入电梯并违规充电引发的火灾事故频发,对人民生命财产安全构成严重威胁。为解决这一问题,本系统基于YOLOv8深度学习算法…...
三相离网逆变器在不对称负载下的正负序控制Matlab仿真探索
三相离网逆变器在不对称负载下的正负序控制matlab仿真: 1不对称控制包括: 正序分量处理负序分量处理正序控制环负序控制环; 2正序控制换路与负序控制换路都采用dq轴上的电容电压外环电感电流内环控制; 3直流电压Vdc700V,总功率15kWÿ…...
2025届学术党必备的降重复率网站横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 研究人工智能开题报告的工具,借助自然语言处理技术,靠着学术大数据分…...
蛋白质结构预测的深度学习之路:从AlphaFold2到ESMFold
点击 “AladdinEdu,你的AI学习实践工作坊”,注册即送-H卡级别算力,沉浸式云原生集成开发环境,80G大显存多卡并行,按量弹性计费,教育用户更享超低价。 摘要:蛋白质结构预测是生命科学的核心难题。…...
2026年AI风口已至!月薪3万+岗位盘点+零基础转行指南,速收藏!
本文详细介绍了2026年转行AI的优势与机遇,指出行业人才缺口巨大且薪资水平高。文章全面梳理了AI行业的各类岗位,并针对技术、产品、运营、培训等不同转行路径,提供了分阶段的学习指南和推荐资源。此外,还针对应届毕业生、传统行业…...
vmware workstation 安装esxi ,ip 设置192.168.10.4, 网络中心 vmnet8 ip 网关也是同一个网段,但是浏览器打不开ip 地址
esxi虚拟机配置上网 vmware esxi 虚拟机网络设置vmware workstation 安装esxi ,ip 设置192.168.10.4, 网络中心 vmnet8 ip 网关也是同一个网段,但是浏览器打不开ip 地址 在 VMware Workstation 中安装 ESXi 后无法通过浏览器访问管理界面(19…...
