一、进程的概念
进程是指 可执行程序 + 内核数据结构(内核为了管理进程而创建的数据结构)。
二、进程的管理
进程是靠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;
};