操作系统(12)进程描述与控制--进程概述(2)
操作系统控制计算机系统内部的事件,为处理器执行进程而进行调度与分配资源,响应客户端基本服务请求。
12.1操作系统的控制结构
操作系统为了管理进程与资源,必须掌握关于每个进程和资源当前状态的信息。操作系统的控制结构是内核用于管理硬件资源、进程、文件等核心实体的结构化数据集合,核心作用是 “记录状态、关联资源、支撑调度与管理”。

12.2进程控制结构
操作系统的控制结构围绕 “实体管理” 设计,核心分为 6 大类,覆盖从硬件到应用的全层级管理:
1. 进程管理核心:进程控制块(PCB,Process Control Block)
PCB 是操作系统感知和管理进程的 “唯一标识”,每个进程对应一个 PCB,进程生命周期内持续存在。
核心字段与功能:
进程标识信息:PID(进程 ID)、PPID(父进程 ID)、UID/GID(权限标识),用于唯一识别进程;
进程状态信息:当前状态(运行 / 就绪 / 阻塞)、优先级、调度参数,支撑 CPU 调度;
资源占用信息:内存段指针(代码段 / 数据段 / 堆栈段)、打开的文件描述符列表、I/O 设备关联信息,记录进程占用的所有资源;
执行上下文:程序计数器(PC)、寄存器数据、堆栈指针,用于进程暂停 / 恢复时的上下文切换;
控制信息:信号掩码、同步机制(信号量 / 消息队列 ID)、异常信息(错误码),支撑进程间同步与异常处理。
核心作用:实现进程的生命周期管理(创建→调度→执行→终止),是内核调度、资源分配的核心依据。
2. 内存管理核心:页表(Page Table)与内存控制块(MCB)
内存控制结构的核心是 “实现内存虚拟化”,让进程高效、安全地使用物理内存。
页表(Page Table):
功能:将进程的虚拟地址映射到物理内存地址,解决 “虚拟地址空间与物理内存的适配” 问题;
关键字段:虚拟页号(VPN)、物理页框号(PFN)、页权限(读 / 写 / 执行)、有效位(是否映射物理页);
优化结构:多级页表(如二级 / 三级页表),减少页表占用的内存空间。
内存控制块(MCB,Memory Control Block):
功能:管理物理内存的分配与回收,记录物理内存的使用状态;
关键字段:物理页框号、页框状态(空闲 / 已分配 / 共享)、占用进程 ID、页框大小,支撑内存分配算法(如空闲分区链、伙伴系统)。
核心作用:实现内存的高效利用(如分页 / 分段管理)、进程地址空间隔离(通过页权限控制)。
3. 设备管理核心:设备控制块(DCB,Device Control Block)
DCB 是内核与 I/O 设备交互的 “桥梁”,每个 I/O 设备(如磁盘、网卡、键盘)对应一个 DCB。
核心字段与功能:
设备标识:设备类型(块设备 / 字符设备)、设备编号(主设备号 + 次设备号),用于唯一识别设备;
设备状态:就绪 / 忙 / 故障、当前 I/O 操作类型(读 / 写),记录设备工作状态;
控制信息:设备寄存器地址、I/O 缓冲区指针、传输模式(中断驱动 / DMA),用于内核向设备发送控制指令;
I/O 请求队列:未完成的 I/O 请求链表,实现 I/O 请求的排队与调度(如电梯调度算法)。
核心作用:屏蔽不同设备的硬件差异,为内核提供统一的设备操作接口(open/read/write),支撑 I/O 管理。
4. 文件管理核心:文件控制块(FCB,File Control Block)与索引节点(inode)
文件控制结构的核心是 “记录文件元信息”,实现文件的创建、读写、删除等操作。
文件控制块(FCB):
功能:存储文件的核心元信息,是文件存在的标志;
关键字段:文件名、文件类型(普通文件 / 目录 / 设备文件)、文件大小、创建 / 修改 / 访问时间、物理存储地址(如磁盘块号)、权限控制(所有者 / 组 / 其他用户的读写执行权限)。
索引节点(inode,Unix/Linux 系统):
功能:与 FCB 类似,存储文件元信息,但 inode 与文件名分离(文件名存储在目录项中);
优势:支持硬链接(多个文件名指向同一个 inode)、节省存储空间(目录项仅存储文件名与 inode 映射)。
关联结构:目录项(Directory Entry):存储文件名与 inode/FCB 的映射关系,支撑文件路径查找(如
/home/user/file.txt需遍历各级目录项)。核心作用:实现文件的按名存取、权限控制、存储空间管理。
5. 调度与同步核心:调度队列(Scheduling Queue)与同步控制块
支撑进程调度与进程间同步,确保系统高效、有序运行。
调度队列:
分类:就绪队列(存储就绪态进程的 PCB)、阻塞队列(按阻塞原因分类,如 I/O 阻塞队列、信号量阻塞队列);
功能:调度器从就绪队列中选择优先级最高的进程分配 CPU,阻塞进程按原因加入对应阻塞队列,事件完成后移至就绪队列;
实现:通常用链表或优先级队列(如红黑树)实现,保证调度效率。
同步控制块:
信号量控制块(SemCB):记录信号量值、等待进程队列,支撑进程间互斥与同步;
消息队列控制块(MsgCB):记录消息队列 ID、消息链表、权限信息,支撑进程间消息传递;
功能:解决进程间资源竞争与协作问题,避免死锁、数据错乱。
6. 系统级控制结构:系统控制块(SCB,System Control Block)
记录操作系统整体运行状态的全局控制结构,是内核的 “总控中心”。
核心字段与功能:
系统状态信息:当前 CPU 利用率、内存使用率、活跃进程数,用于系统监控;
全局资源信息:空闲物理页框总数、未分配的设备编号、系统级信号量(如全局互斥锁),支撑全局资源分配;
启动参数:系统启动时的配置(如内存大小、CPU 核心数、启动模式),用于内核初始化;
异常处理信息:中断向量表(映射中断号与中断处理程序地址)、系统调用表(映射系统调用号与内核处理函数),支撑中断与系统调用处理。
核心作用:统筹全局资源,协调各子系统(进程管理、内存管理、I/O 管理)的运行,确保系统稳定性与高效性。

12.3进程核心控制结构的关联逻辑
操作系统的控制结构并非孤立,而是通过 “指针关联、队列挂载” 形成有机整体,以 “进程运行” 为例,核心关联流程如下:
进程启动时,内核创建 PCB,同时为进程分配虚拟地址空间,生成页表(关联虚拟地址与物理内存);
进程执行
open系统调用时,内核查找目录项,找到对应的 FCB/inode,将文件描述符加入 PCB 的文件描述符列表(PCB 与 FCB 关联);进程执行
read系统调用时,内核通过 PCB 中的文件描述符找到 FCB,再通过 FCB 关联的 DCB 与设备交互(FCB 与 DCB 关联);若 I/O 未完成,进程状态转为阻塞态,PCB 被移至 DCB 的 I/O 请求队列(PCB 与 DCB 关联);
I/O 完成后,设备触发中断,内核通过中断向量表找到中断处理程序,将 PCB 从阻塞队列移至就绪队列(PCB 与调度队列关联);
调度器从就绪队列中选择 PCB,恢复其执行上下文(PCB 中的寄存器数据、PC),进程继续运行。
12.4进程控制:内核与应用层如何操作进程
进程的生命周期由内核和应用层通过系统调用协同控制,核心操作如下:
1. 核心系统调用
进程创建:
fork()(创建子进程,复制父进程资源)、exec()(替换进程的程序代码,执行新程序);进程终止:
exit()(进程主动退出)、kill()(向进程发送信号,触发终止或其他行为);进程等待:
wait()/waitpid()(父进程等待子进程退出,回收资源,避免僵尸进程);进程状态控制:
sleep()(进程主动阻塞指定时间)、pause()(进程阻塞至收到信号);资源控制:
getrlimit()/setrlimit()(获取 / 设置进程资源限制,如最大内存、CPU 时间)。
2. 特殊进程类型
僵尸进程(Zombie):子进程退出后,父进程未调用
wait()回收资源,PCB 残留(仅保留 PID、退出状态等少量信息),占用系统资源;孤儿进程(Orphan):父进程先于子进程退出,子进程被 init 进程(PID=1)收养,退出后由 init 回收资源(无危害);
守护进程(Daemon):后台运行的特殊进程,脱离终端控制(如 Linux 的 sshd、nginx 进程),用于提供持续服务。

