进程管理介绍

程序与进程

    进程是正在执行的程序。例如,当我们用C或C++编写程序并编译它时,编译器就创建二进制代码。原始代码和二进制代码都是程序。当我们实际运行二进制代码时,它就变成了一个进程。
    进程是一个“主动”实体,而程序则被认为是一个“被动”实体。一个程序可以在多次运行时创建多个进程,例如,当我们多次打开一个.exe或二进制文件时,就会开始多个实例(创建多个进程)。

内存中的进程是什么样的?

在这里插入图片描述
    文本部分(Text):一个进程,有时称为文本部分,也包括由程序计数器的值表示的当前活动。
    栈(Stack):栈包含临时数据,如函数参数、返回地址和局部变量。
    数据部分(Data):包含全局变量。
    堆(Heap):在进程运行时动态分配给进程的内存。

进程的属性或特征

    进程具有以下属性。

1. 进程Id:由操作系统分配的唯一标识符。
2. 进程状态:可以为就绪、运行等。
3. CPU寄存器:与程序计数器类似(当进程在CPU中交换时,必须保存和恢复CPU寄存器)。
4. I/O状态信息:例如,分配给进程的设备、打开的文件等。
5. CPU调度信息:例如优先级(不同的进程可能具有不同的优先级,例如在最短的作业优先调度中,短进程可能被分配低优先级)。

    进程的上述所有属性也称为进程的上下文。
    每个进程都有自己的进程控制块(PCB),即每个进程都有一个唯一的PCB。以上所有属性都是PCB的一部分。

进程状态

    进程处于以下状态之一:

1. New: 新创建的进程(或正在创建的进程)。
2. Ready: 进程创建后,变为Ready状态,表示进程已准备好执行。
3. Run: CPU中正在执行的进程(单个处理器一次只能执行一个进程)。
4. Wait (或 Block): 当进程请求I/O访问时。
5. Complete (or Terminated): 进程已完成其执行。
6. Suspended Ready: 当就绪队列已满时,某些进程将转变为Suspended Ready状态。
7. Suspended Block: 等待队列已满时。

在这里插入图片描述

上下文切换

    保存一个进程的上下文并加载另一个进程的上下文的过程称为上下文切换。简单地说,这就像在running状态与ready状态之间切换进程。

何时进行上下文切换?
  1. 当高优先级进程进入就绪状态时(即优先级高于正在运行的进程)。
  2. 发生中断。
  3. 用户和内核模式切换(虽然不是必需的)。
  4. 使用抢占式CPU调度。
上下文切换 vs 模式切换

    当CPU特权级别改变时,例如当进行系统调用或发生故障时,会发生模式切换。内核在特权模式下工作,而不是在标准用户任务下工作。如果用户进程想要访问只能由内核访问的内容,则必须进行模式切换。在模式切换期间,不需要更改当前正在执行的进程。
    通常在发生进程上下文切换时,发生模式切换。只有内核才能引起上下文切换。

CPU绑定与I/O绑定进程

    CPU绑定的进程需要更多的CPU时间或在运行状态下花费更多的时间。
    I/O绑定进程需要更多的I/O时间和更少的CPU时间。I/O绑定进程在等待状态下花费的时间更多。

参考文档

[1]GeeksforGeeks.Introduction of Process Management[EB/OL].https://www.geeksforgeeks.org/introduction-of-process-management/?ref=lbp,2021-04-01.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值