PCB:process control block,里面放着进程的描述信息。在Linux 中的PCB 是task_struct。
task_struct 的内容
PID:描述进程的唯一标识符,用来区分进程。(身份证号)
status:任务状态、退出代码(echo $?
)、退出信号灯。(一个人现在的状态)
内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。(家庭地址)
优先级:相对于其他进程的优先级。(家长是不是当官的)
使用top 命令有一列叫做PR,这个PR就是进程的优先级,在Linux下这个数字越小优先级越高。NI(nice)表示优先级的修正值,最终系统认定的优先级是PR + NI,通过指令可以修改nice值,但是因为CPU在进程之间切换非常快,一般也看不出什么
程序计数器:程序中即将被执行的下一条指令的地址。(任务清单)
上下文数据:在CPU 切换进程的时候会把当前寄存器中的数据保存起来,下次切换回这个线程的时候的一些数据就不会丢失,这个就是上下文。(保存上下文、恢复上下文)
I/O信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息:皇上要雨露均沾呗~~
组织进程
进程在Linux 里是以链表的形式组织的,每一个节点应该都有一个task_struct。
一般除了top、ps等命令可以查看进程外,进程的信息还会记录在文件中,在/proc
。