操作系统层面下——进程状态讲解

news/2024/12/21 18:02:18/

      目录

        一.进程的状态:运行态

        1.什么是运行状态?

        2.进程进入内存的详细图解:

        总结:

        二.进程的状态:阻塞态 

        1.什么是阻塞状态?

        三.进程的状态:挂起态

        1.什么是挂起态?

2.阻塞与挂起的区别:


        通过上一篇博客对进程的讲解,我们了解了进程就是一个个在磁盘中的二进制可执行文件运行时被加载到内存后就成为了进程。其实进程也是分状态的,在很多操作系统的书中提到进程的状态有新建、就绪、运行、挂起、阻塞、死亡、停止...... 进程之所以能被描述出有这么多状态,本质都是用来满足不同的运行场景的。下面我将介绍最重要的三种进程状态

一.进程的状态:运行态

        1.什么是运行状态?

        当一个进程被调入CPU的运行队列时就是处于运行状态了。

        在生活中,我们用的电脑一般情况下都只有一个CPU,而CPU是用来执行和处理进程的,将具体一点就是每一个CPU都会有一个运行队列(runQueue),运行队列的底层实现是一个数据结构链表,它里面的各个节点元素就是各进程的属性task_struct(PCB),所以CPU可以根据运行队列看到各节点进程的状态和数据信息。

        2.进程进入内存的详细图解:

        如上就是进程运行时在被加载到内存后的详细步骤图,运行队列中存放的是该进程的PCB结构体,根据队列先进先出的原则,CPU会对先加载进来的进程PCB进行代码和数据上的执行处理 。

        举一个工作上的例子进行理解:当我们在找工作的过程中,向公司投递了简历,这里的投简历并不是把自己投进了公司,而是把自己的简历做成文件投进去了,那么简历从哪里来呢?是我们自己制作了一份包含了自己的姓名、年龄、电话、性别、技术特长...... 的文档,这就是我之前所提到的:“先描述” 即整理出自己的信息数据!

        然后公司收到简历后,便开始筛选,当你通过筛选后,你的简历就会被放在HR的办公桌上,公司会安排你进行下一轮的面试,这时你就相当于是进程,简历相当于是PCB。而运行队列就是HR,面试的过程相当于是你进入了运行队列,这便是后三个字:“再组织” ——HR将一个个人的简历链接起来进行面试。

        若你通过了面试,公司的系统(相当于是CPU)则会对你的身份进行入职办理(CPU对进程进行运算处理)。

总结:

        1.一个CPU只有一个运行队列。

        2.当可执行文件.exe程序运行起来后,便会进入内存成为进程,而操作系统会形成一个PCB去概括该进程的所有属性(Linux下是形成struct task_struct结构体),所谓的进程进入运行队列,本质上是该进程的PCB被操作系统调入了运行队列中。

        3.进程的PCB只要处在运行队列中,就表明该进程是在运行状态。

所以“只有该进程的PCB正在被CPU运行处理时才算是运行状态 。”这种想法是错误的,因为CPU的运算速度相当快,是一瞬间的事情,所以只要PCB在队列中就是运行状态!

        4.对于上面投简历这个案例,我还想说一点:当我们投简历给公司后,公司经过筛选一部分的简历进入下一轮后,会给这些人打电话说:"恭喜x先生/女士,我们xx公司通过了你的简历,请在未来几天内等候安排面试!",在HR说这句话之前,我们正在忙着自己的事情(可以是睡觉,打游戏,吃饭),而在HR说过这话以后,我们作为进程,就达到了运行状态。

        5.不要只以为,进程只会占用CPU的资源,如上图,进程也可能会占用键盘、网卡、显示器、磁盘等硬件资源!那么进程所处的不同状态,就是进程处在CPU和非CPU的队列中,等待着该硬件空闲处理去使用,这就是下面我要提到的进程的第二种状态——阻塞状态!


二.进程的状态:阻塞态 

1.什么是阻塞状态?

        举个例子理解:当我们上网时,在网上下载一个游戏,找到下载路径开始下载,此时右上方就会出现一个软件下载的进度条,在下载的过程中家里停电了,电脑被迫断网,导致进程停下来了,那么该进程的状态就称为是阻塞状态。

        因为该进程是需要占用网卡(硬件资源的),但是CPU等不了那么长时间(网卡的运算传输很慢的),所以该进程就只能被操作系统调出运行队列,放到网卡的队列中等待着网卡处理器的运行中,这时该进程从运行状态就转换到了阻塞状态。

       上图中,橙色的框代表着各个硬件资源的老大,相当于是小型的cpu也可以。在这些硬件处理器中,都有各自的等待队列,专门用于存放进程需要占用这些硬件资源的位置,相当于医生给你看病的半中间,让你先去抽血,拍CT,化验等过程,在抽血的过程中也需要进入队列排队,只要进程进入这些硬件处理器的队列,那么这个进程就是处于“阻塞状态”!

        上面的例子中提到,进程A由于需要网卡硬件资源,导致CPU停止了该进程A的运行,将其转入了网卡的等待队列,运行态变为阻塞态。此时若是有其他进程B,C,D也正在被网卡执行时,那该进程A就需要在队列中等待,若没有则会立即被网卡执行处理。

注:阻塞态的进程仍处于内存中,进程的代码数据也会移动到相应的所需要的硬件资源存放处。


三.进程的状态:挂起态

1.什么是挂起态?

        挂起态和阻塞态息息相关,也就是说进程在进入挂起态之前一定处于阻塞态!

       举个例子:当有三个进程1,2,3都需要申请磁盘资源时,操作系统将他们都调入了磁盘的等待队列中,这时它们处于阻塞状态,磁盘处理器开始一个个的运行处理这些调过来的PCB,假如此时磁盘处理进程的空间已经快满了,又有一个进程需要申请磁盘资源,系统需要把它调进磁盘的等待队列,但是该队列已经放不下了,于是系统会将队列中前面还需要等待时间较长的PCB3的代码数据保存下来,然后进程3就可以暂时被磁盘的进程空间给释放掉了,以便于给后面调过来的进程留有空间。

        这就是操作系统对于进程的普遍处理,若是某个硬件处理器的运行空间不够,就会将在该硬件处理器等待时间较长的进程资源数据先保存下来,然后暂时释放掉该进程所占的空间,让后来的想要申请该硬件资源的进程也能够进来。

        当PCB1,PCB2都被磁盘处理运算完后,轮到PCB3时,系统会再将PCB3的代码资源从之前保存过的磁盘空间唤醒,调回磁盘处理器中开始处理,处理完后PCB3就会被系统再调回CPU的运行队列,由CPU继续从上一次的断点处开始处理。

                                        阻塞不一定挂起,挂起一定阻塞。

2.阻塞与挂起的区别:

        阻塞:当进程正在被CPU运算处理时,需要申请CPU以外的资源,系统会将其从运行队列调出,进而调入需要申请资源的task_strucy结构体中(某某处理器)的等待队列,该状态称为阻塞状态。

        当该进程被某某处理器处理完后,系统会将其送回CPU的运行队列中,继续被CPU运算处理,该进程从“阻塞状态”----> “运行状态”

        挂起:当进程的PCB进入某某资源处理器的等待队列后,由于又有新的进程需要申请进入该资源处理器的等待队列,系统不得不将等待时间长的进程的数据信息保留下来,拿出去以便给后面的新进程腾出空间,这是的进程状态被称为“挂起状态”

        当资源处理器能够处理之前被拿出去的进程时,系统会将其唤出,把该进程C的资源再拿回来进行处理,这时该进程从“挂起状态”--->"阻塞状态"        

以上就是从宏观层面上对进程的三种重要状态的讲解了。


http://www.ppmy.cn/news/91082.html

相关文章

搭建Serv-U FTP服务器共享文件并外网远程访问「无公网IP」

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 转载自内网穿透工具的文章:使用Serv-U搭建FTP服务器并公网访问【内网穿透】 1. 前言…

Leetcode665. 非递减数列

Every day a Leetcode 题目来源:665. 非递减数列 解法1:贪心 本题是要维持一个非递减的数列,所以遇到递减的情况时(nums[i] > nums[i 1]),要么将前面的元素缩小,要么将后面的元素放大。 …

2023.5.19Hadoop具体操作(四种)

大作业 1、ens33没有地址 查看虚拟机的NAT8网段 使用ip a显示ens33的ip ip a设置静态ip 编辑网络接口配置文件:输入以下命令来编辑网络接口的配置文件: sudo vi /etc/network/interfaces在打开的文件中,找到要设置为静态IP的网络接口&am…

React项目搭建

一、项目搭建(不采用vite方式) 使用create-react-app生成项目 npx create-react-app pc 进入根目录 cd pc 启动项目 npm start 调整项目目录结构 /src/assets 项目资源文件,比如,图片 等/components 通用组件/pag…

电子合同网页预览盖章效果实现

电子合同在现在应用越来越广,需求也就随之产生。 本篇文章主要记录两种网页盖章效果实现方式,自己记录一下, 也给需要的人提供一点思路和帮助。 效果 JqueryCSS实现 原理 通过定位盖章位置,之后操作图片悬浮到盖章位置 1.设置…

SCTracker 跟踪论文阅读笔记

SCTracker 跟踪论文阅读笔记 SCTracker: Multi-object tracking with shape and confidence constraints 论文链接 (未开源状态) 论文主要更新点围绕shape constraint and confidence两点来展开: 首先论证在跟踪匹配的过程中D-box(检测框)与T-box(预测框)需要有一定…

如何在华为OD机试中获得满分?Java实现【对称字符串】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 对称就是最大的美学,现…

【C++】类和对象——类的引入、类的访问限定符、类的作用域、类的实例化、类的储存、this指针的引出和特性

文章目录 1.类的引入2.类的访问限定符3.类的作用域4.类的实例化5.类的储存6.this指针6.1this指针的引出6.2this指针的特性 1.类的引入 C是在C的基础上加以扩展。 在C语言中,我们想要让一个类型含有多种成员变量,我们使用结构体;而在C中我们可…