欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 【软考中级软件设计师】进程管理

【软考中级软件设计师】进程管理

2025/5/18 13:00:08 来源:https://blog.csdn.net/weixin_45188218/article/details/148031217  浏览:    关键词:【软考中级软件设计师】进程管理

目录

一、进程的概念(进程是什么?)

二、进程的作用(为什么需要进程?)

三、进程管理状态转换原理(进程是怎么运作的?)

基础五状态模型

扩展七状态模型

四、进程管理之同步异步机制

同步机制(Synchronous)

异步机制(Asynchronous)

经典问题解决方案

五、进程管理之互斥信号量机制

互斥机制的黄金法则

临界区原则(四大条件)

信号量机制

1. 信号量(Semaphore)

2、原语(Primitive)

3. P/V 操作详解(软考核心考点)

软考真题


一、进程的概念(进程是什么?)

进程(Process)是操作系统中最核心的概念之一,是程序的一次动态执行过程

  • 进程:程序在内存中的执行实例(动态实体),包含:

    • 代码段(Text)

    • 数据段(Data)

    • 堆栈(Stack/Heap)

    • 程序计数器(PC)

    • 寄存器状态

    • 资源(如打开的文件)

比喻:程序像乐谱,进程像是乐队按照乐谱进行的演奏。

二、进程的作用(为什么需要进程?)

操作系统引入进程主要解决三大问题:

  1. 并发性:使多个程序能"同时"运行(宏观并行,微观串行)

  2. 资源隔离:每个进程有独立的地址空间,防止相互干扰

  3. 效率提升:当某进程等待I/O时,CPU可执行其他进程

典型案例:浏览器同时打开多个标签页时,每个标签页可能对应一个独立进程。

三、进程管理状态转换原理(进程是怎么运作的?)

基础五状态模型

下图是操作系统中最经典的进程状态划分,适合理解基本调度原理。

状态组成

  1. 新建(New)

    • 进程刚被创建(如通过fork()

    • 尚未完成资源分配

  2. 就绪(Ready)

    • 已获得除CPU外的所有资源

    • 等待被调度器选中

    • 特点:可能有多个进程处于此状态形成就绪队列

  3. 运行(Running)

    • 正在CPU上执行指令

    • 单核CPU同一时刻只有一个进程处于此状态

  4. 阻塞/等待(Blocked/Waiting)

    • 因等待I/O、信号等事件暂停执行

    • 典型场景:读取磁盘、等待网络响应

  5. 终止(Terminated)

    • 进程执行完毕或被强制终止

    • 资源尚未完全释放(操作系统保留退出状态码)

扩展七状态模型

在五状态基础上增加 挂起(Suspend)概念,解决内存不足时的进程管理问题。

新增状态
6. 就绪挂起(Ready Suspended)

  • 进程数据被交换到磁盘

  • 特点:只要载入内存即可立即运行

7、阻塞挂起(Blocked Suspended)

  • 阻塞状态的进程被换出到磁盘

  • 特点:即使等待事件发生,也需先换入内存

挂起操作的触发场景

  • 内存不足:将暂时不运行的进程换出到磁盘

  • 用户干预:手动挂起进程(如Linux的Ctrl+Z

  • 调试需求:暂停进程检查状态

状态转换新增路径

  • 就绪 ↔ 就绪挂起:由内存管理器控制

  • 阻塞 ↔ 阻塞挂起:当阻塞进程长期无响应时

  • 阻塞挂起 → 就绪挂起:等待的事件发生时

比喻:假设你是一家餐厅的调度经理,外卖小哥就是"进程",他们的工作流程完美对应进程状态:


1. 五状态模型版

  •  新员工今天第一天入职,刚领到工牌和工作服(新建分配基本资源)

  • 小哥在餐厅待命,手机充好电、餐箱清空(资源齐全),等调度员派单(就绪等待CPU)

  • 小哥正在骑车送A订单(运行占用CPU执行任务)

  •  到达A顾客楼下发现电梯坏了,被迫在楼下等维修(阻塞等待I/O资源)

  • 送完订单后回餐厅打卡下班(终止释放所有资源)

状态转换示例

  1. 接单 → 骑车送餐(就绪→运行)

  2. 送餐途中等红灯(运行→阻塞)

  3. 红灯变绿灯继续骑行(阻塞→就绪→运行)

  4. 送完这单接新单(运行→就绪)


2. 七状态模型升级版

新增两种特殊情况:

  • 中午高峰过后,部分小哥被临时派去仓库整理货架(就绪挂起内存不足,进程被换出到磁盘)

  •  有个小哥在等顾客下楼取餐时(阻塞),突然被叫回餐厅帮厨(阻塞挂起人带车被"换出")

新增场景

  1. 仓库的小哥突然被叫回来送急单(就绪挂起→就绪)

  2. 帮厨的小哥听到顾客终于来了(阻塞挂起→阻塞→就绪)

四、进程管理之同步异步机制

同步机制(Synchronous)

  1. 核心特征

    • 调用方必须等待操作完成才能继续执行

    • 执行流严格按照代码顺序进行

    • 典型表现为阻塞式等待

异步机制(Asynchronous)

  1. 核心特征

    • 调用方发出请求后立即继续执行

    • 通过回调/事件通知获取结果

    • 非阻塞式执行流

经典问题解决方案

  1. 生产者-消费者问题

    • 同步方案:使用互斥锁+条件变量

    • 异步方案:用消息队列(如Kafka)

  2. C10K问题

    • 同步阻塞模型:每个连接一个线程(资源耗尽)

    • 异步非阻塞模型:单线程事件循环(Node.js方案)

五、进程管理之互斥信号量机制

就像公共厕所的隔间,同一时间只允许一个人使用(临界资源),其他人必须在门口等待(阻塞)直到里面的人出来(释放)。

互斥机制的黄金法则

临界区原则(四大条件)
  1. 互斥进入:任何时候最多一个进程在临界区内

  2. 有限等待:请求进入的进程应在有限时间内获得许可

  3. 空闲让进:临界区空闲时必须立即允许进入

  4. 让权等待:当进程不能进入临界区时,应立即释放CPU(而非忙等待)

常见错误模式

  • 死锁:A等B,B等A

  • 活锁:进程不断重试但无法前进

  • 饥饿:某些进程始终得不到资源

信号量机制

1. 信号量(Semaphore)

定义
信号量是一种用于进程/线程同步与互斥的机制,由 Dijkstra 提出,本质是一个整型变量 + 等待队列,通过 P(wait) 和 V(signal) 两个原子操作来控制资源访问。

作用

  • 互斥访问(二进制信号量):确保同一时间只有一个进程访问临界资源(如打印机)。

  • 同步控制(计数信号量):管理有限资源的分配(如数据库连接池)。

2、原语(Primitive)

定义
原语是指操作系统提供的、不可中断的原子操作,执行过程不会被调度打断,常用于实现同步机制(如信号量的 P/V 操作)。

特点

  • 原子性:执行过程不可分割,要么全部执行,要么完全不执行。

  • 不可抢占:执行期间不会被其他进程/线程打断。

3. P/V 操作详解(软考核心考点)

P/V 操作是信号量的核心,由 Dijkstra 提出,名称来源于荷兰语:

  • P(Proberen,尝试):申请资源(wait

  • V(Verhogen,增加):释放资源(signal

软考真题

  1. (2016年下半年例题)假设系统中有n个进程共享3台扫描仪,并采用PV操作实现进程同步与互斥。若系统信号量S的当前值为-1,进程P1、P2又分别执行了一次P(S)操作,那么信号量S的值应为___。
    解答:
    根据PV操作概念中P操作公式,S=S-1,这里发生两次P操作,那么当前S的值应该为-1减2次操作后等于-3。
  2. (2016年上半年例题) 进程P1、P2、P3、P4和P5的前趋图如下图所示:
  3. 若用PV操作控制进程P1、P2、P3、P4和P5的并发执行过程,则需要设置5个信号量S1、S2、S3、S4和S5,且信号量S1~S5的初值都等于零。下图中a和b处应分别填入___;c和d处应分别填入___;e和f处应分别填入___。

解答:根据前趋图,P1进程执行完需要通知P2和P3进程,所以需要利用V(S1)和V(S2)操作通知P2和P3进程,所以空a应该填V(S1)和V(S2),P2进程执行完要通知P4进程,所以空b应该填V(S3)。P3进程运行前需要等待P1进程的结果,所以执行程序前要先利用1个P操作,所以空c应该填P(S2),而P3进程运行结束需要利用一个V操作通知P5进程,所以空d应该填V(S4)。P4进程执行结束需要利用一个V操作通知P5进程,所以空e处应该填V(S5),P5进程执行前需要等待P3和P4进程的结果,所以空f处需要两个P操作,那应该填P(S4)和P(S5)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词