PCB(Processing Control Block进程控制块)

PCB:进程控制块,实际是一个结构体,放在sched.h文件中,Linux下可以通过whereis sched.h命令查看具体路径
该结构体主要包含:
1.进程id
用于区别进程
2.进程的状态:就绪、运行、挂起、停止

3.进程切换时需要保存和恢复的一些CPU寄存器
寄存器放在CUP中,A程序和B程序分时执行的时候,A占用CPU执行一定时间,CPU便被B占用了,然后又轮到A执行,A的资源如寄存器如何恢复到挂起时的状态,这时候就需要PCB来记住A停止运行时的寄存器状态,恢复后继续执行。
4.描述虚拟地址空间的信息
虚拟地址和物理地址的对于关系
5.描述控制终端的信息
如xshell打开两个终端连接同一个linux主机,在两个终端中执行同一个程序,这个终端的信息都分别存在PCB中
6.当前工作目录
如分别在/home和/etc目录下分别执行pwd命令,shell进程输出的结果是不一样的,这个工作目录就记录在PCB中
7.umask掩码
保护文件创建和修改的权限
如输入umask命令,默认输出是0022,表示创建一个文件的时候,默认去掉组用户和其他用户对该文件的写权限,如果把umask改为0000,则用户创建的文件可以被文件的所属用户,所属组,其他用户具有可写可读可执行权限。
8.文件描述符
9.和信号相关的信息
10.用户id和组id
11.会话和进程组
12.进程可以使用的资源上限
PCB的组织方式
PCB的组织方式是指如何组织和管理多个PCB。
• 链接方式
把具有同一状态的PCB,用其中的链接字链接成一个队列。这样,可以形成就绪队列、若干个阻塞队列和空白队列等。就绪队列常按进程优先级的高低排列,把优先级高的进程的PCB排在队列前面。根据阻塞原因的不同把处于阻塞状态的进程的PCB排成等待I/O操作完成的队列和等待分配内存的队列等。
在这里插入图片描述

• 索引方式
系统根据所有进程的状态建立几张索引表。例如,就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。
在这里插入图片描述

原文地址:https://www.cnblogs.com/frankltf/p/13801773.html