PCB(Process Control Block,进程控制块)是操作系统中用于管理和控制进程的关键数据结构
一、PID
进程的身份标识(从1开始累加) 32位整数
同一台机器上,同一时刻,每个进程pid是唯一的。
例:选中一个进程,结束任务=>任务管理器会获取到选中的进程id,然后调用一个系统api,把pid作为参数传进去,从而完成杀死进程。
二、内存指针
用来描述进程都能使用哪些内存
进程运行过程中要消耗一些系统资源(如内存),从系统申请,系统分配。
每个进程都必须使用自己申请到的内存。进程也需要知道,哪里存的指令,哪里存的数据。
进程运行时需要有“指令”,也需要有“内存”(均要加载到内存中)
内存指针就描述了进程使用内存资源的详细情况。
三、文件描述符表
以顺序表等形式记录进程已打开的文件及其他资源(如网络连接、设备接口)。该属性确保进程对文件的操作权限和资源访问的合法性。
进程要经常访问硬盘,操作系统对硬盘这样的硬件设备封装=>文件
存储器=内存+外存(硬盘,软盘,光盘,u盘)
操作系统对外存进行统一的抽象,全按照“文件”的方式操作。进程想操作文件,需要先“打开文件”,让进程在文件描述符表中分配一个表项(构造一个结构体),表示这个文件的相关信息。
四、状态
描述进程的当前执行状态,描述某个进程是否能够去cpu上执行
运行状态:进程正在CPU上执行;
就绪状态:进程已准备好运行,但需等待空闲CPU资源;
阻塞状态:进程因等待I/O操作,来自控制台的输入/出,硬盘输入/出,网卡输入/出而暂停执行。
(注:部分分类可能简化为“就绪”和“阻塞”两种状态)
五、优先级
决定进程获取CPU资源的优先级顺序。(调度可以调配)
多个等待系统调度,调度的先后关系不平均。
高优先级进程可更快被调度执行,常用于关键任务或需快速响应的场景。
六、记账信息
针对每个进程,占用了多少cpu时间,进行统计。统计进程在CPU上的执行时间、指令数目等数据,用于优化资源分配策略。
会根据这个统计结果进行进一步的调整调度的策略,在下一轮次进行调整,确保每一个进程都不至于完全不能到cpu上执行。
七、上下文
保存进程切换时的CPU寄存器值、堆栈内容及程序计数器等状态。通过上下文保存与恢复,操作系统可在进程被中断后重新加载原有执行状态,实现“无缝续接”。
支撑进程调度的重要属性 <=>读档和存档
每个进程在运行过程中,很多中间结果会存在cpu的寄存器中。
保存上下文:把cpu的关键寄存器中的数据,保存到内存中(PCB的上下文属性中)
恢复上下文:把内存中的关键寄存器中的数据加载到cpu对应的寄存器中。