1. 什么是进程控制块PCB
- 操作系统为了执行进程间的切换,会维护一张表格,这张表就是进程表(process table)。每一个进程都会占用一个进程表项。这个表项就是进程控制块
- 进程控制块中包含了进程状态的重要信息。包括程序计数器、堆栈指针、内存分配状况、所打开的文件列表、账号与调度信息,以及其他在进程由运行太转换到就绪态或阻塞态时所必须要保存的信息,从而保证了该进程随后能再次启动还能从上次执行的地方继续执行。
2. 进程控制块中的包含了哪些信息
- 进程管理相关
- 进程id
- 描述虚拟地址空间的信息(页表)
- 进程调度信息
- 进程的状态:有就绪,运行,挂起,停止等状态
- 进程的优先级信息
- 进程调度所需的其他信息:和相应的进程调度算法有关,如进程等待CPU的时间总和,进程已经执行的时间总和。
- 进程控制信息
- 程序和数据的地址:进程程序和数据所在的内存和外存地址,以便调度进程时使用
- 进程同步和通信机制
- 资源清单:除了CPU之外进程所需要的全部资源以及已经分配到该进程的资源清单。
- 链接指针:该进程所在队列的下一个进程的PCB首地址
- CPU状态信息:进程切换时需要保存和恢复的一些CPU寄存器信息
- 通用寄存器:可以被用户程序进程访问,用于暂存信息
- 指令计数器:存放者当前进程要访问的下一条指令地址
- 程序状态字PSW:含有状态信息
- 存储管理相关
- 代码段指针
- 数据段指针
- 堆栈段指针
- 文件管理相关
- 当前工作目录
- 文件描述符表,包含多个执行file结构体的指针
- 用户id和组id
3. 进程控制块的组织方式
- 线性表方式:不论进程的状态如何,将所有的PCB连续地存放在内存的系统区。这种方式适用于系统中进程数目不多的情况
- 索引表方式:该方式时线性表的改进,系统按照进程的状态分别建立就绪索引表,阻塞索引表等
- 链接表方式:系统按照进程的状态将进程的PCB组成队列,从而形成就绪队列,阻塞队列和运行队列等。