文章目录
- 1、什么是进程(Process)
- 2、PCB
- 1.pid进程的id/标识符
- 2.内存指针
- 3.文件描述符表
- 4、进程调度
- 4.1状态
- 4.2优先级
- 4.3上下文
- 4.4记账信息
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记账信息
通过表格来统计,进程分配的时间或者资源等等