OS进程管理
进程:指一个具有一定独立功能的程序在一个数据集合上的一次动态执行的过程。
简单来说,进程就是正在内存中运行的程序。需要注意的是,不同进程之间的地址空间是相互独立的。
进程控制块(Process Control Block,PCB)
PCB是OS来描述进程基本情况及变化的一个数据结构,每个进程都在OS中对应有一个PCB,是进程存在的唯一标志。
PCB中主要包含以下信息:
- 调度和状态信息:即调度进程和处理机的使用情况
- 进程间通信信息:进程间通信相关的各种标志信息
- 存储管理信息:指向进程映像存储空间数据结构
- 进程所用到的资源:例如进程中需要使用到的文件资源等
- 有关数据结构的连接信息:与PCB相关的进程队列
一般来说,PCB的组织方式分为两种:链式
和索引式
,这个大家肯定都很熟悉,需要注意的两点是:
- 如果是索引的方式,会存在一个索引表,索引表的每一项指向其对应的PCB的起始地址。
- 不同的进程状态对应不同的PCB链表或PCB索引表。例如,我们都知道进程有
Ready态
、Waiting态
、Blocking态
,如果采用索引的方式来建立PCB组织方式,于是会有对应的就绪态索引表
、等待态索引表
。
进程的状态
说明一点:下面所有提到的等待
,你可以认为与阻塞
等价
说到进程,必然会涉及到上面这个图,下面简要概况一下各个箭头之间的转变情况,以及主要由什么原因产生的状态转化:
-
创建