当一个程序被加载到内存中,它就变成了一个进程,同时系统会为它建立一个PCB块来记录它的各种信息,PCB经常被系统访问,所以PCB常驻在内存中。
那么PCB中的信息都有哪些呢?
它主要包括四方面的信息:1)进程标识符:用于唯一地标识一个进程
2)处理机状态
3)进程调度信息
4)进程控制信息
PCB是所有系统中的统称,具体到Linux系统下,它的名字叫做task_struct,以下是它的结构体定义:
struct task_struct {
volatile long state; //说明了该进程是否可以执行,还是可中断等信息
unsigned long flags; //Flage 是进程号,在调用fork()时给出
int sigpending; //进程上是否有待处理的信号
mm_segment_t addr_limit; //进程地址空间,区分内核进程与普通进程在内存存放的位置不同
//0-0xBFFFFFFF for user-thead
//0-0xFFFFFFFF for kernel-thread
//调度标志,表示该进程是否需要重新调度,若非0,则当从内核态返回到用户态,会发生调度
volatile long need_resched;
int lock_depth; //锁深度
long nice; //进程的基本时间片
//进程的调度策略,有三种,实时进程:SC