进程 - 进程状态总览

一、进程状态

1.1进程状态本质

  • 进程状态,本质就是 task_struct 中的一个整形变量,用来表示当前进程的状态。
    在这里插入图片描述
  • 进程的状态决定了后续的动作,状态的改变引起的是 PCB 会被操作系统变迁到不同的队列(运行队列,等待队列)中,该点后文会提到。

二、运行状态

R状态:已经准备好随时被调度了。

  1. 运行队列: 每个 CPU 都会维护一个自己的运行队列(一个CPU,一个运行队列)。
    在这里插入图片描述
  2. 运行状态和运行队列:
    在这里插入图片描述

三、阻塞状态

阻塞状态是一种什么状态呢?下面通过一张图来认识一下。
在这里插入图片描述

下面我们来看操作系统对硬件设备的管理:

  • 首先是对硬件的描述情况:
    在这里插入图片描述
  • CPU 是设备,它可以有自己的队列,那么其他硬件也可以有自己的队列。
    • 有些进程需要等待硬件资源,所以操作系统将其从运行状态变成阻塞状态,链接到对应的设备等待队列中;
      在这里插入图片描述
    • 用户一旦通过键盘输入,操作系统知道了,会将最前方等待的进程从键盘的等待队列中拿出,将它的状态从阻塞变为运行状态,再链入到 CPU 的运行队列中。

所以,正如前文所说的:状态的改变引起的是进程的 PCB 会被操作系统变迁到不同的队列(运行队列,等待队列)中。

四、挂起状态

挂起状态是一种在计算机资源比较吃紧时会出现的状态。
挂起是指将进程信息写入到外设中,当使用时再写入进来。

4.1 阻塞挂起

  • 一个进程当前处于阻塞状态
    在这里插入图片描述

  • 当内存资源吃紧时,将阻塞进程的代码和数据唤出到磁盘中:
    在这里插入图片描述

    • 进行唤出的一定是阻塞状态的进程,因为运行状态的进程,操作系统不敢动他。正因为你阻塞着,所以操作系统认为你现在没有用着,所以才敢动你。
    • PCB 是不会被唤出到磁盘中的,因为操作系统是对 PCB 进行的管理,通过 PCB 才能知道它是运行/阻塞,唤入/唤出。
  • 当需要运行程序时,将代码和数据唤入到内存中:
    在这里插入图片描述

swap 分区的大小:
一般是内存的一半,或内存大小,不能超过内存大小的二倍。

  • 如果过大,操作系统会非常依赖 swap 分区,那与 swap 分区进行 I/O 交互的频率变高,效率变低。
  • 如果过小,那存放空间有效,效果不大。

本文到这里就结束了,如果对您有帮助,希望可以得到您的一个赞,如果错误,欢迎指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值