当前位置: 首页 > news >正文

操作系统(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进程核心控制结构的关联逻辑

操作系统的控制结构并非孤立,而是通过 “指针关联、队列挂载” 形成有机整体,以 “进程运行” 为例,核心关联流程如下:

  1. 进程启动时,内核创建 PCB,同时为进程分配虚拟地址空间,生成页表(关联虚拟地址与物理内存);

  2. 进程执行open系统调用时,内核查找目录项,找到对应的 FCB/inode,将文件描述符加入 PCB 的文件描述符列表(PCB 与 FCB 关联);

  3. 进程执行read系统调用时,内核通过 PCB 中的文件描述符找到 FCB,再通过 FCB 关联的 DCB 与设备交互(FCB 与 DCB 关联);

  4. 若 I/O 未完成,进程状态转为阻塞态,PCB 被移至 DCB 的 I/O 请求队列(PCB 与 DCB 关联);

  5. I/O 完成后,设备触发中断,内核通过中断向量表找到中断处理程序,将 PCB 从阻塞队列移至就绪队列(PCB 与调度队列关联);

  6. 调度器从就绪队列中选择 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 进程),用于提供持续服务。

http://www.dtcms.com/a/589244.html

相关文章:

  • 数据库库、表的创建及处理
  • 空间矢量脉宽调制(Space Vector Pulse Width Modulation)SVPWM基础
  • 链接的迷雾:odr、弱符号与静态库的三国杀
  • Vite + React 项目启动深度踩坑指南
  • 回收网站建设短网址生成器免费
  • Servlet 的 URLPattern配置
  • 传奇购买域名做网站一个网站的渠道网络建设
  • MATLAB中显示X、Y、Z三个方向信号的时频特征,使用时频分析方法
  • 构建AI智能体:八十九、Encoder-only与Decoder-only模型架构:基于ModelScope小模型的实践解析
  • SpringMVC快速入门
  • CPU亲和性深度实践:从基础原理到Intel大小核架构优化
  • 北京网站排名seo深圳正规网站建设服务
  • 【大模型学习4】大语言模型(LLM)详解
  • 扩频通信技术详解
  • 哈特曼波前传感器zemax仿真与人眼像差模拟
  • 进入职场第二课—融入
  • 【数论】中国剩余定理(CRT) 扩展中国剩余定理(EXCRT)
  • 【JVM】JVM内存结构
  • 【Vue 功能总结】Vue 注册功能实现:从校验到 API 封装
  • 站长工具收录查询网站建设培训 店
  • 建设家具网站的目的及功能定位做网站月入7000
  • 链表算法---基本算法操作(go语言版)
  • 【开题答辩全过程】以 基于SpringBoot房源出租信息系统的设计与实现为例,包含答辩的问题和答案
  • 解锁MIME:Qt中的数据传输密码
  • 【Go 与云原生】让一个 Go 项目脱离原生的操作系统——我们开始使用 Docker 制造云容器进行时
  • 大语言模型学习之路(一)
  • 网页设计教程网页设计培训福州关键词优化平台
  • GPIO中断编程
  • 手机和pc合一的网站云南集优科技网站
  • 14.大语言模型微调语料构建