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

揭秘进程管理:从PID到PCB全解析

🔥个人主页:🌈包球

❄️个人专栏 :《武魂觉醒值Java创世之力 》

《 踏遍字节秘境解锁 Java 高阶奥义》

💻以码为路奔赴热爱


目录

一.进程

1.1 进程的产生

1.2 并发和进程的关系

1.3 进程的组成

1.4 操作系统管理进程

1.5进程的属性(PCB核心属性)

1.5.1 PID进程的标识符

1.5.2 内存指针

注意事项

1.5.3 文件描述符表

文件描述符与进程文件管理

文件描述符表的结构

文件描述符表的作用

1.5.4 进程状态

进程的就绪状态

进程的阻塞状态

1.5.5 进程的优先级

进程优先级的概念

1.5.6 进程的上下文

上下文切换的流程

1.5.7 进程的记账信息



一.进程

1.1 进程的产生

计算机上运行起来的程序就称为"进程"

在日常工作中通常需要实现多任务处理,多任务处理也就是所谓的并发编程,早期的cpu只有一个核心,为了实现并发编程而引入了进程.

思考:一个电脑有上百个进程可是只有十几个核心,那是如何让上百个进程同时运行的

创建多个进程由一个核心控制以达到并发编程的目的,单个核心在同一时间只能执行一个进程,但是由于cpu运算的速度极快,通过快速切换进程,可以模拟出多个任务同时运行的效果.

1.2 并发和进程的关系

并发指多个任务在同一时间段内交替执行,通过快速切换给用户一种“同时运行”的假象。它强调任务在时间上的重叠,而非严格的并行。例如,单核CPU通过时间片轮转实现多任务并发。

并行是真正的多任务同时执行,需多核或多处理器支持;并发是逻辑上的同时,通过任务调度实现。并行是并发的子集,但并发不依赖硬件多核。

在之后的编程中并发和并行都统称为并发.

并发并非指多个进程真正同时执行,而是通过时间片轮转或优先级调度,让 CPU 核心在极短时间内切换不同进程。由于切换速度极快(纳秒级),用户感知上近似于并行执行。

下图是我们电脑上的进程.

1.3 进程的组成

进程是操作系统进行资源分配的基本单位.每个进程在执行过程中需要占用多种硬件资源,包括内存空间,cpu计算时间,磁盘存储以及输入输出设备等.系统通过进程管理机制对这些资源进行合理分配和协调,确保多个进程能够高效,安全的并发执行

1.4 操作系统管理进程

如何描述进程?

在操作系统中用PCB(进程控制块)来描述进程的各种属性,PCB是一个非常大的结构体

如何组织?

再用一定的数据结构将多个PCB串起来,一般采用链表的结构来组织PCB

那么进程之中又有哪些属性呢?

1.5进程的属性(PCB核心属性)

1.5.1 PID进程的标识符

PID是由操作系统自动分配的,是不可重复的且都是整数,确保每一个进程都有一个PID

PID(Process Identifier)是操作系统为每个运行中的进程分配的唯一标识符。它是一个整数,用于在系统范围内区分不同的进程。

PID 由操作系统内核动态分配,确保在同一时间点不会重复。当进程终止后,其 PID 可能被后续新创建的进程复用,但在任意时刻,所有活跃进程的 PID 均保持唯一。

进程的管理依赖PID指定目标进程,

进程中的一些资源与PID有关

父子进程关系通过PPID维护进程层级结构

1.5.2 内存指针

进程的运行需要依赖内存

进程的内存空间通常分为多个区域,包括代码段(指令)、数据段、堆、栈等。内存指针用于标识和访问这些不同区域的内容

注意事项

  • 误用指针可能导致段错误(如修改代码段)。
  • 现代操作系统通过内存保护机制隔离指令与数据。

1.5.3 文件描述符表

文件都是写在硬盘上的让进程进行读写,而一个进程想要读写文件就需要先打开,而打开的时候就会在PCB中构建一个文件相关的结构体,放在PCB的文件描述符表中.

文件描述符表可以看作是一个数组,包含了多个结构体,每个结构体有具体的文件信息

文件描述符与进程文件管理

进程对文件的读写操作需要通过文件描述符(File Descriptor)实现。文件描述符是操作系统内核为进程提供的抽象接口,用于管理已打开的文件。

文件描述符表的结构

每个进程的进程控制块(PCB)中维护一个文件描述符表,该表是一个数组结构,数组的每个元素指向一个文件相关的结构体(如Linux中的struct file)。文件描述符本质上是该数组的索引值(非负整数),通常从0开始分配。

文件描述符表的作用

  • 文件访问入口:进程通过文件描述符索引到具体的文件结构体,进而访问文件的读写位置、权限、inode信息等元数据。
  • 资源管理:操作系统通过文件描述符表跟踪进程打开的文件,确保文件关闭时释放资源。
  • 多路复用支持:文件描述符可用于监控文件、套接字等I/O事件(如select/epoll机制)。

1.5.4 进程状态

简单理解进程有两种状态:就绪和阻塞

进程的就绪状态

就绪状态是指进程已经获得了除CPU之外的所有必要资源,只要调度程序分配CPU时间片,就能立即执行。处于就绪状态的进程会被放入就绪队列中,等待操作系统调度。

就绪状态的进程通常具备以下特征:

  • 进程所需的内存、I/O设备等资源已分配完毕
  • 仅缺少CPU资源
  • 可以被调度程序选中并投入运行

进程的阻塞状态

阻塞状态是指进程由于等待某种事件(如I/O操作完成、信号量释放等)而暂时无法继续执行的状态。处于阻塞状态的进程会被移出就绪队列,直到等待的事件发生才会重新进入就绪状态。

阻塞状态的进程通常具备以下特征:

  • 进程正在等待某个外部事件发生
  • 即使分配CPU也无法继续执行
  • 需要等待的事件完成后才会转为就绪状态

1.5.5 进程的优先级

进程优先级的概念

进程优先级是操作系统调度程序用来决定哪个进程优先获得CPU资源的指标。优先级高的进程会更快或更频繁地被调度执行,而优先级低的进程可能需要等待更长时间。

进程的优先级决定了哪个进程要优先安排cpu资源

1.5.6 进程的上下文

相当于我们所说的存档

进程上下文(Process Context)是操作系统管理进程时保存的与进程执行相关的状态信息。当进程被切换(如时间片用完或等待I/O)时,操作系统需要保存当前进程的上下文,并恢复目标进程的上下文,以确保进程能从中断点继续执行。

上下文切换的流程

  • 保存当前上下文:将CPU寄存器和PCB信息存入内核栈或内存。
  • 加载目标上下文:从目标进程的PCB恢复寄存器、内存映射等状态。
  • 切换开销:上下文切换涉及大量数据搬运,频繁切换会降低系统性能。

1.5.7 进程的记账信息

进程记账(Process Accounting)是操作系统记录进程活动信息的一种机制,用于跟踪进程的资源使用情况(如CPU时间、内存占用、I/O操作等)。这些数据可用于系统审计、性能分析、计费或安全监控。

通过记账来决定给哪个进程多分配一些资源,哪些进程少分配一些资源

PCB中的属性非常多以上是常用的核心属性,希望大家熟悉

http://www.zskr.cn/news/1398250.html

相关文章:

  • AzurLaneAutoScript:5步实现碧蓝航线全自动化的终极解决方案
  • TransCAD 6.0 闪退别慌!手把手教你打补丁并搞定波士顿交通网络的最短路径分析
  • [吐槽] outlook 新版本
  • 别再只拿Amazon Review Dataset做推荐了!用Python玩转商品评论的情感分析与销量预测
  • 告别Transformer?手把手带你用Mamba搭建首个图像分类模型(附PyTorch代码)
  • Anthropic开源11个企业级插件,我全试了一遍——这是值得装的4个
  • AI Agent 认知模型与推理模式综述
  • 别再只会点按钮了!SPSS聚类分析实战:用31省产业数据手把手教你选对方法(附数据集)
  • 在银河麒麟V10上装VirtualBox增强工具,卡在SELinux policy.29错误?试试这个临时关闭SELinux的完整流程
  • Windows系统itss.dll文件丢失找不到问题解决
  • 多Agent虚拟开发:构造功能设想与开发方案(一)
  • A51汇编器行号偏移问题解析与调试优化
  • AI Agent Harness Engineering 的并发控制:多任务同时执行的挑战
  • 大语言模型SFT与ESSA超参数优化实践
  • 质数的庖丁解牛
  • 用STM32F103C8T6做个桌面小钢炮:0-30V/1.5A数控电源DIY全记录(附源码与PCB)
  • 人工智能通识课:多模态大模型
  • Win10/Win11系统版本兼容性实测:eNSP搭配VirtualBox 5.2.26如何避开AR 40错误?
  • 从 LangChain 到 LangGraph:AI Agent 时代的核心框架演进
  • 2026年中大力德一级授权代理商TOP5权威排行:广州LED驱动电源/广州减速电机/广州工业类开关电源/广州机壳电源/选择指南 - 优质品牌商家
  • Android开发板与Windows网络不通?原来是策略路由在作祟
  • 保姆级教程:手把手教你安装配置Ultimaker Cura 4.8中文版(Win系统)
  • PX4Ctrl起飞逻辑深度解析:get_rotor_speed_up_des函数里的6.0和7.0参数到底怎么调?
  • 【LeetCode 热题 100】移动零
  • 别再傻傻重启Word了!Windows 11/10字体安装后立即生效的正确姿势
  • 从“富足的一生”到代码人生:技术人的精神富足与价值重构
  • 用NEAT-Python搞定XOR问题:一个隐藏节点就够了?手把手教你调参与可视化
  • AI 营销越做越累?因为你还没用上 GEO 思维
  • 基于 Python + LangChain + MCP(新闻查询)
  • 2026年实用AI写作辅助软件全攻略(含保姆级操作教程)