进程的概念


1、什么是进程(Process)

一个程序,运行起来/跑起来,在操作系统中就会出现一个对应的进程
进程就是一个跑起来的应用程序
在这里插入图片描述
除了上述自己运行起来的应用程序是进程之外,还有一些是系统自带的/安装某些程序,给你添加的,这些进程对于你的系统能够稳定运行有很重要的意义
要想让一个程序能够稳定运行,就必须得给这个进程分配系统资源,包括不限于cup,内存,硬盘,网络带宽,显卡…
进程也可以视为操作系统进行资源分配的基本单位
在操作系统中包含了许多的进程,一旦进程多了我们就要进行管理,对于管理我们通用的做法是,先组织,再描述
描述:通过一些结构体/类把一个进程的核心信息抽象提取出来,并进行表示
组织:通过一定的数据结构,把多个这样的结构体/类的对象串起来,方便进一步的各种增删改查

2、PCB

在操作系统中,通常使用称为PCB(进程控制块)这样的结构体来描述进程
结构体中就需要包含一些进程的核心信息
操作系统中通常会使用链表这样的结构,把多个PCB串起来
1.任务管理器中查看进程列表,就是在遍历链表的每个节点,并且获取显示出对应的信息
2.创建新的进程(双击某个程序运行),新的进程创建出一个对应的新的PCB,并且添加到上述链表中
3.销毁某个进程(某个程序退出),要把链表上对应的PCB节点给删除掉
在PCB结构体中包含了很多信息,此处我们只讨论以下几个

1.pid进程的id/标识符

在这里插入图片描述
同一个机器,同一个时刻,,进程id是一定不同的

2.内存指针

进程运行时,需要消耗一定的硬件资源,内存就是一个关键的资源
一个程序,在运行的时候,就会被从硬盘加载到内存中,就会加载这个程序的指令/依赖的数据
这里的指针是一组指针,它告诉操作系统,该进程要运行的指令都在内存的哪些地方,也告诉操作系统,该进程依赖的数据,又在哪些地方

3.文件描述符表

一个进程运行的时候,就会操作一些文件,就会通过一个“顺序表”这样的数据结构,记录当前的这个进程,都打开了哪些文件

4、进程调度

任务管理器中,可以看到系统中包含很多的进程,每个进程都需要执行,执行就需要占用CPU资源,这时就需要通过进程调度来合理分配资源
1.并行执行:一个核心,同一时刻,只能运行一个程序
2.并发执行:cpu把总的执行时间,切换成若干个小的片段,每个片段执行一个进程,每个片段称为“时间片”由于时间片比较短,cpu切换进程的速度极快,人感知不到所有站在人的角度来看,这若干个进程在“同时执行”(本质不是同时)
操作系统会按照并行+并发相互搭配,运行所有的进程
PCB中又提供了以下几个属性,支持进程调度

4.1状态

记录了进程当前处于什么状态,如就绪,阻塞等,进程调度时需要根据进程的状态来确定哪些进程可以被调度执行

4.2优先级

用于确定进程在就绪队列中的执行顺序,优先级高的进程通常会被优先调度执行

4.3上下文

进程在cpu执行的过程中,会产生很多的“中间结果”,在进程切换出cpu之前就需要把这些中间结果(cpu的各种寄存器中的值)保存到PCB上下文里(寄存器->内存)【存档】
下次这个进程回到cpu上执行的时候,就需要先把之前的存档恢复回来(内存->寄存器)【读档】

4.4记账信息

通过表格来统计,进程分配的时间或者资源等等

相关推荐

  1. 进程概念介绍

    2024-05-02 00:20:02       45 阅读
  2. Linux进程基本概念

    2024-05-02 00:20:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 00:20:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 00:20:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 00:20:02       82 阅读
  4. Python语言-面向对象

    2024-05-02 00:20:02       91 阅读

热门阅读

  1. NDK 编译(一)—— Linux 知识汇总

    2024-05-02 00:20:02       34 阅读
  2. 负二进制转换

    2024-05-02 00:20:02       37 阅读
  3. 椋鸟C++笔记#1:C++初识

    2024-05-02 00:20:02       26 阅读
  4. Pytoch实现姿势识别模型

    2024-05-02 00:20:02       27 阅读
  5. leetcode394. 字符串解码

    2024-05-02 00:20:02       31 阅读
  6. 【MATLAB】MATLAB App Designer中的回调函数

    2024-05-02 00:20:02       35 阅读