接下来我们介绍进程控制块
进程控制块是进程当中的重要信息
它负责控制
由操作系统控制和
管理进程运行的过程
那进程控制块到底是干什么的
然后它如何用
里头到底有些什么样的信息
我们在这儿呢一一来进行讨论
进程控制块是管理和控制进程
运行所需的信息的集合
那在这些信息里头呢它是有些啥呢
进程的基本信息你比如说它的ID
它执行的是哪一个程序
以及它运行变化的过程
那就是进程的状态
那进程控制块呢是
进程存在的唯一标志
也就是说我任何一个进程
只要它创建了它存在了
它一定有一个
跟它相对应的进程控制块
那一个进程结束了
那它进程控制块呢
也就必然被操作系统回收
好那这时候说
我们这进程块怎么来用呢
那在创建的时候
生成该进程的进程控制块
然后结束的时候
回收它的进程控制块
在中间使用的时候呢
那对进程的所有操作都是
通过进程控制块来实现的
那具体进程控制块里都有些什么
它们是如何组织的呢
以及于我们在进程在
执行过程当中它的状态
到底怎么变化呢
都和这个进程控制块是密切相关的
下面我们先来说进程控制块的内容
进程控制块里的内容呢有标识信息
然后再一类呢
就是我多个进程交替运行
如果你不交替运行的话
第二条你是不需要保存的
好交替运行的时候交替的部分
交替完了之后会被
另外的进程使用的部分的内容呢
你都必须保护下来
那这就是处理机的现场保护
然后再一些呢就是进程控制的信息
那这是我们进程在内存当中的印象
好我们加载的时候呢就是在
内存当中形成这样一段存储区域
存储相应的代码和其它的一些内容
好我们在这里进程控制块里是什么
就从这里抽出一部分信息
来放到我的进程控制块里头
实际上这一块呢
也是存到内存里的某个位置
内核当中的
比如说关键的信息就是
当前指令指针这个P
指向的到底是哪个地方
好第二个是说我在这里头
函数调用和返回
当时的栈顶在什么地方
那这是至关重要的
然后再有你比如说它的标识信息ID
然后它的控制信息调度和这里的
其它寄存器就是你现场保护的时候
别的进程执行的时候要用到寄存器
你在这儿都必须保存
那具体说起来在这里头
控制信息有些啥呢
控制信息呢一个是以调度相关的
那就包括调度的信息
和它的进程的状态
因为它依据状态来决定我如何调度
然后进程之间的通讯信息
任何一个进程它在执行过程当中
你一定要跟外界打交道
比如说我处理不同的数据
读入不同的数据来进行处理
如果没有这一条的话
那这个程序的用处也就很小了
好然后再一个是存储的信息
我这个进程占用了哪些存储空间
那对应的位置是什么样的
你在用完之后
你还必须还给操作系统
好再就是进程占用的资源
你比如说我打开的文件
那这些你在结束的时候是要回收的
以及于我的进程状态的变化体现为
进程控制块所在的
各种各样的链表里头
或者说索引表里头
对应的这些连接关系
那在这儿都是通过
相应的进程队列来实现的
这是进程控制的信息
好 那么进程控制块组织呢
有多种多样的方式
你比如说表 链表 索引
和各种各样的数据结构都可能会用到
在我们这里头呢
我们简单的说两种
一种是链表
那一个元素指向下一个元素
下一个元素再指向下一个
以同一类型的构成一个链表
那比如说在这个地方
那我们就有就绪和等待
这两个进程状态的链表
那这个链表分别是就绪
有三个
这个等待的是三个
那分别是它们组织成两个不同的链表
然后第二种呢是说我们可以用索引
把通过指针指向进程控制块的指针
放到索引表里头
那不同的状态的呢
我构成不同的索引表
这个刚才说的链表同样的
我可以用类似的办法来
组织成索引表
那我们实际上在操作系统里头呢
你原来在数据结构当中
学到的各种各样的数据结构
在这个地方
都会在后续里头呢不断得到体现
好那我们到这儿呢就说清楚了
进程控制块它是干什么的
它是如何来用
以及于里头到底
都有一些什么样的信息
那我们这地方介绍呢还都很初步
那下面通过程序里
实现里内容的来看
对进程控制块里头到底准确的来说
哪个系统里都有一些什么