为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块(Process Control Block, PCB),PCB是进程实体的一部分。

系统利用PCB来对并发执行的进程进行控制和管理的。

进程的控制结构 - 图1

每个PCB是如何组织的?

通常是通过链表的方式进行组织,把具有相同状态的进程链在一起,组成各种队列。比如:

  • 将所有处于就绪状态的进程链在一起,称为就绪队列
  • 把所有因等待某事件而处于等待状态的进程链在一起就组成各种阻塞队列
  • 另外,对于运行队列在单核 CPU 系统中则只有一个运行指针了,因为单核 CPU 在某个时间,只能运行一个程序。

进程的控制结构 - 图2
就绪队列和阻塞队列

还有一种方式是索引方式。工作原理:将同一状态的进程组织在一个索引表中,索引表项指向相应的PCB,不同状态对应不同的索引表。

这两种方式中,一般会选择链表。因为可能面临进程创建、销毁等调度导致进程状态发生改变,所以链表能够更加灵活的插入和删除。