操作系统原理 —— 进程有哪几种状态?状态之间如何切换?(七)

进程的五种状态

首先我们一起来看一下进程在哪些情况下,会有不同的状态表示。

创建态、就绪态

当我们刚开始运行程序的时候,操作系统把可执行文件加载到内存的时候,进程正在被创建的时候,它的状态是创建态,在这个阶段操作系统会为进程分配资源、初始化 PCB。

当进程创建完成之后,便进入 就绪态,处于就绪的进程已经具备运行条件,但是由于 CPU 不空闲,就暂时不能运行。
在这里插入图片描述

那么过了一会,CPU 它有空了,开始执行 就绪态 的进程,如果一个进程此时在 CPU 上运行,那么这个进程处于 运行态,CPU 会执行该进程对应的程序。

然后在 CPU 执行过程中,这个进程它需要调用打印机的系统资源,但是打印机它现在也很忙,没空处理。 CPU 就会把该进程变为 阻塞态

当打印机忙完了,可以把资源分配给该进程的时候,进程又会从阻塞态 转变成 就绪态 等待 CPU 的再一次执行。

当我们整个进程执行完成之后,一个进程可以执行 exit 系统调用,请求操作系统终止该进程,此时该进程会进入 终止态,操作系统会让该进程下 CPU,并且回收内存空间资源,最后还要回收该进程的 PCB,当终止进程的工作完成之后,这个进程就彻底消失了。

进程状态之间的切换

现在我们已知进程有五种状态:创建态、就绪态、运行态、阻塞态、终止态,我们再一起来总结一下这几种状态转变的过程。

首先当程序执行,进程在被创建的时候是创建态,当创建工作完成之后,就会进入就绪态,等待 CPU 执行.

当 CPU 开始执行该进程,就会进入运行态,在运行过程中,进程调用 系统调用的方式申请某种系统资源时,或者请求等待某个事件发生,此时就会进入 阻塞态,这里强调一下,从 运行态 -> 阻塞态,是由进程自身做出的主动行为。

当进程申请的资源或等待的事情发了,这个时候又从阻塞态 -> 就绪态,在这里不是进程本身能控制的,是一种被动行为。

当程序运行结束,或者运行过程中遇到不可修复的错误,就会从 运行态 -> 终止态

还有一种情况就是当进程的时间片执行时间到了,或者 CPU 被抢占了,这个时候进程状态会从:运行态 -> 就绪态

这里需要注意:不能由阻塞态 直接变为 运行态,也不能直接由 就绪态变为阻塞态,因为阻塞态是由进程主动请求的,必然需要进程在运行时主动发出这个请求。
在这里插入图片描述

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

在这里插入图片描述

状态如何被组织

操作系统为了方便管理各个不同状态下的进程,会将同一种状态下的各个进程的 PCB 组织起来。

那怎么组织呢? 组织一共有两种方式:链接方式、索引方式。

链接方式就有点像链表的数据结构一样进行存储,如下图:

在这里插入图片描述

索引的方式也很好理解,就是维护各个不同状态下进程的索引表就行,如下图:
在这里插入图片描述

这两种方式大家理解,有个印象就行。
在这里插入图片描述

本章总结

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三菱GX Works2梯形图程序分段显示设置的具体方法示例

三菱GX Works2梯形图程序分段显示设置的具体方法示例 大家平时在使用GX Works2进行梯形图程序编辑时,默认是一整段在一起,程序步数较多时查看起来不是那么方便,下面就和大家分享如何通过声明编辑来实现程序分段显示。 具体方法可参考以下内容: 如下图所示,打开GX Works2编…

DATAFAKER 使用方法记录

DATAFAKER 使用方法记录 win10 64位 Python 3.10.11 参考网址 datafaker的使用–详细教程 https://blog.csdn.net/A15517340610/article/details/105623103 https://github.com/gangly/datafaker python 版本 It is compatible with python2.7 and python3.4 也就是说 他…

案例2:Java图书商城系统设计与实现开题报告

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

使用nginx做WSS转为WS

HTTPS 是一种加密文本的超链接,所以需要证书,证书可以 使用域名,在腾讯云等服务商申请 https 证书,证书有 收费的和免费的,免费的有使用期限。 利用域名申请证书后,一般会有4中证书文件, .csr…

【Vue 基础】尚品汇项目-02-路由组件的搭建

项目路由说明: 前端的路由:Key-Value键值对 Key:URL(地址栏中的路径) Value:相应的路由组件 作用:设定访问路径,并将路径和组件映射起来(就是用于局部刷新页面&#xff0…

前有谷歌的“生存指南”,后有金山系的“表格编程”,均登热榜

谷歌的“生存指南” 一位曾经在谷歌工作的工程师,干了一件了不起的事,花费了两年的时间,整理了一份“xg2xg”的清单。 原来这位离职的谷歌工程师为程序员编写了一份“厂外生存指南”,即使你从谷歌离职后,在这套“生存…

AlgoC++第六课:BP反向传播算法

目录 BP反向传播算法前言1. MNIST2. 感知机2.1 前言2.2 感知机-矩阵表示2.3 感知机-矩阵表示-多个样本2.4 感知机-增加偏置2.5 感知机-多个输出2.6 总结2.7 关于广播 3. BP4. 动量SGD5. BP示例代码总结 BP反向传播算法 前言 手写AI推出的全新面向AI算法的C课程 Algo C&#xf…

【三十天精通Vue 3】第十六天 Vue 3 的虚拟 DOM 原理详解

引言 Vue 3 的虚拟 DOM 是一种用于优化 Vue 应用程序性能的技术。它通过将组件实例转换为虚拟 DOM,并在组件更新时递归地更新虚拟 DOM,以达到高效的渲染性能。在 Vue 3 中,虚拟 DOM 树由 VNode 组成,VNode 是虚拟 DOM 的基本单元…

新黑马头条项目经验(黑马)

swagger (1)简介 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(API Documentation & Design Tools for Teams | Swagger)。 它的主要作用是: 使得前后端分离开发更加方便,有利于团队协作 接…

HCIP之RSTP、MSTP

目录 RSTP 相较于802.1D改进 改进1:变更了端口角色 改进点2:修改了端口的状态类型 改进3:对配置BPDU的报文内容进行修改 改进点4:对配置BPDU的处理 改进点5:快速收敛机制 改进点6:拓扑变更机制的改进…

学电路设计时,你遇到过什么有趣的事?

说几个学生时代的傻x事: 1、以前对DC-DC懂得少,而且一般开关电源芯片小,还有一堆外围,手焊很麻烦,就觉得三端稳压器碉堡了啊,一个就能得到想要的电压啊,有木有。然后就各种用三端稳压器。那玩意…

无源滤波器为什么能滤波?

滤波器能够滤波的本质是利用构造特定的阻抗特性引起反射和损耗来实现对频率的选择。 如果从能量守恒的角度来讲,被抑制掉的信号去哪里了?​ 我们先看一下基本电路原理,上图中,负载接收的功率为 我们知道,最大功率传输…

【大数据之Hadoop】十八、MapReduce之压缩

1 概述 优点:减少磁盘IO、减少磁盘存储空间。 缺点:因为压缩解压缩都需要cpu处理,所以增加CPU开销。 原则:运算密集型的Job,少用压缩;IO密集型的Job,多用压缩。 2 压缩算法对比 压缩方式选择时…

广州蓝景分享—快速了解Typescript 5.0 中重要的新功能

作为一种在开发人员中越来越受欢迎的编程语言,TypeScript 不断发展,带来了大量的改进和新功能。在本文中,我们将深入研究 TypeScript 的最新迭代版本 5.0,并探索其最值得注意的更新。 1.装饰器 TypeScript 5.0 引入了改进的装饰…

AI绘画——Checkpoint模型Dark Sushi Mix 大颗寿司Mix

目录 版本解析 模型简介 模型特性 模型演示(多图预警) Picture One 正面tag: 负面tag: Checkpoint模型darkSushiMixMix无Vae Checkpoint模型darkSushiMixMixVae模型kl-f8-anime2.ckpt Picture Two 正面tag:…

什么是OADM光分插复用器

文章导读: 什么是OADM光分插复用器 光分插复用器的功能 光分插复用器的类型(FOADM, TOADM) OADM的应用 1、什么是OADM光分插复用器 由不同的光通道进出单模光纤。 它的主要功能是在不影响其他波长信道传输的情况下,选择性地下载或…

python 的 object 与type的关系

python 的 object 与type的关系 是并列关系&#xff0c;两种是相互依赖的 查询父类 type.__bases__ object.__bases__(<class ‘object’>,) () 查询类型 type(type) type(object)<class ‘type’> <class ‘type’> 在python中&#xff0c;type用于描述…

开放原子训练营(第一季)铜锁探密:基于铜锁构建在线在线加密工具箱

基于铜锁构建Web在线加密工具库 搭建运行环境 实验⼿册中的实验都是以 docker 和 docker-compose 环境为主&#xff0c;基于 Ubuntu 20.04 容器镜像。 初始化项目 首先利用 IDE 创建一个 tongsuo_web 的空项目&#xff0c;接下来我们所有的文件都会创建在该项目中&#xff0…

ThinkPHP模型操作下

ThinkPHP模型操作下 前言1. 模型设置1.name(数据表除去前后缀的名字&#xff0c;默认是当前model的类名)2.table(完整的数据表名)3.pk 改变主键名称4.schema 设置模型对应数据表字段及类型5.disuse 数据表废弃字段&#xff08;数组&#xff09;6.模型的其他属性 2. 模型的主要功…

E5EAA HENF105240R1将用于工业生产过程的测量、控制和管理

​E5EAA HENF105240R1将用于工业生产过程的测量、控制和管理 工业控制计算机是工业自动化控制系统的核心设备 工业控制计算机是工业自动化设备和信息产业基础设备的核心。传统意义上&#xff0c;将用于工业生产过程的测量、控制和管理的计算机统称为工业控制计算机&#xff0c;…