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

这篇具有很好参考价值的文章主要介绍了操作系统层面下——进程状态讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

      目录

        一.进程的状态:运行态

        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的资源再拿回来进行处理,这时该进程从“挂起状态”--->"阻塞状态"        

以上就是从宏观层面上对进程的三种重要状态的讲解了。文章来源地址https://www.toymoban.com/news/detail-461357.html

到了这里,关于操作系统层面下——进程状态讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 头歌操作系统 课后作业3.1:进程的描述与状态

    第1关:1 号进程的核心栈内容分析 编程要求 根据相关知识,回答问题: (将答案填写在 /data/workspace/myshixun/第三关.txt 中) 1 号进程的核心栈栈底的位置是多少? 1 号进程(用 si)执行函数 task1 中的第一个 int 0x81 指令后,核心栈栈顶的位置是多少?从栈底到栈顶依次放了哪

    2024年02月05日
    浏览(30)
  • 操作系统理论:Linux进程与进程状态(进程调度的大O(1)算法数据结构模型)

    冯诺依曼体系的计算机在运行时,内存中会预加载许多程序(数据+运算指令集),然而CPU 同一时刻只能执行一个程序 (多个程序竞争CPU资源),此时就需要操作系统 对内存中的诸多程序进行管理 ,让CPU资源得到合理的分配,于是便有了进程的概念: 进程:描述程序的结构体对象( PCB结构体

    2024年02月15日
    浏览(35)
  • 头歌操作系统 课堂练习3.1:进程的描述与状态 答案

    第1关:任务寄存器(TR)的分析 编程要求 根据相关知识,回答问题: (将答案填写在 /data/workspace/myshixun/第一关.txt 中) 1 号进程的任务状态段(TSS)的地址是多少?1 号进程的核心栈栈底的位置是多少? 1 号进程运行时,任务寄存器(TR)的值是多少?它指向的任务状态段

    2023年04月25日
    浏览(27)
  • [入门篇]Linux操作系统fork子进程的创建以及进程的状态 超超超详解!!!我不允许有人错过!!!

    目录 0.前言 1.fork()创建子进程讲解 1.1fork()的简单介绍 1.2 创建子进程详解 1.2.1 如何理解fork创建子进程 1.2.2 子进程的PCB以及子进程的代码和数据 1.2.3为什么要共享写时拷贝 1.2.4 什么时候发生写时拷贝 1.3 fork函数返回值详解 1.3.1引入fork返回值的作用 1.3.2 fork返回执行逻辑剖析

    2024年03月21日
    浏览(45)
  • 【Linux】操作系统与冯诺依曼体系——深度解析(软硬件层面)

    ​ 前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,从软硬件层面向大家介绍操作系统与冯诺依曼体系, 主要内容含: 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门! 订阅专栏阅读: YY 的《Linux》系列 ❀❀❀❀❀ 【

    2024年02月13日
    浏览(29)
  • 操作系统:4、进程管理之进程同步

    上述过程,若并发执行就会出现缓冲区数据出错 “哲学家进餐问题中会发生极端情况,所有哲学家都饿死,也就是所有进程都陷入等待状态” “生产者消费者问题”以及“哲学家进程问题”的根源问题是:彼此相互之间没有通信。 若生产者通知消费者我已经完成一件产品生

    2023年04月26日
    浏览(42)
  • 【操作系统核心概念】进程管理和进程调度

    本文主要讲的是操作系统的一些核心概念, 主要讲解 进程管理和进程调度 的问题, 当然学习完本篇并不会让你能从零打造一个操作系统, 而只是让读者有了对操作系统核心概念的基本认识. 关注收藏, 开始学习吧🧐 操作系统是一组做计算机资源管理的软件的统称 , 其本质上也

    2024年02月12日
    浏览(52)
  • 【操作系统】聊聊不可中断进程和僵尸进程

    当我们输入top命令之后 其中S代表的是当前进程的状态 R (Running 或 Runnable) 进程在CPU的就绪队列中,正在运行或者等待运行。 D (Disk Sleep) 不可中断睡眠,进程正在跟硬件交互,不运行被其他进程或者中断打断。 Z (Zombie) 进程已经结束,但是父进程没有回收资源 (描述符、PID等

    2024年02月07日
    浏览(34)
  • 【操作系统】02.进程管理

    多道就是将多个程序同时装入内存,使之并发运行。操作系统也是基于多道产生的,提高了资源利用率和系统吞吐量。 进程是程序的一次执行 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位 在引入线程后,线程成为调度的基本单位,进程仍是资源分

    2024年02月08日
    浏览(42)
  • 操作系统:06 进程通信

            进程间通信是指两个或多个进程之间交互数据的过程,因为进程之间是相互独立的,为了协同工作必须进行进程间交互数据 2.1 简单的进程间通信:         信号(携带附加数据)、文件、命令行参数、环境变量表 2.2 传统的进程间通信:         管道文件(有名管道

    2024年02月03日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包