? ? ? ? 进程是指??可执行程序 + 内核数据结构(内核为了管理进程而创建的数据结构)。
????????进程是靠PCB(process control block [进程控制块])管理起来的,在linux下PCB叫 task_struct
?????????当一个可执行程序从磁盘加载进内存,只有这个程序的代码和数据,操作系统会创建出一个PCB对象来管理这些加载进来的程序,在PCB中有这个进程的各种信息以及标识符,系统就可以通过标识符管理PCB链表,因此,对进程的管理就可以转变为对PCB链表的管理,从而管理进程。
? ? ? ? 于是,所有对进程的控制和操作就只和PCB有关,和进程的可执行程序没有关系了。
struct PCB
{
//状态
//优先级
//内存指针字段
//标识符
//包含进程各种属性的字段
struct PCB* next
};
? ? ? ? 运行队列是用来负责调度进程的。运行队列里面有PCB链表的头指针,所以进程排队就是指进程的PCB根据优先级去排队,然后让CPU去调度。
struct runqueue
{
//...
struct PCB* head;
};