news 2026/4/18 10:47:18

408真题解析-2010-25-操作系统-信号量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
408真题解析-2010-25-操作系统-信号量

一 真题2010-25

2010-25. 设与某资源关联的信号量初值为 3,当前值为 1。若 M 表示该资源的可用个数,N 表示等待该资源的进程数,则 M、N 分别是( )。

A. 0,1
B. 1,0
C. 1,2
D. 2,0

二 题目要素解析

核心考点整型信号量的核心含义,属于操作系统进程同步与互斥模块的基础核心考点,考查信号量值与资源可用数、等待进程数的一一对应关系,是 408 统考选择题的经典常考题型。

考查知识点

  • 整型信号量的定义:信号量值与资源可用个数的直接关联关系;
  • 信号量的 P/V 操作对信号量值、资源数、等待进程数的影响;
  • 判定等待进程数的核心条件:信号量值小于 0时,其绝对值为等待该资源的进程数。

题型特征:数值对应类选择题,无复杂计算,侧重对信号量基本概念的精准理解,属于基础概念辨析题,易因混淆信号量值与等待进程数的判定条件而出错。

易错点

  • 误将信号量当前值与资源可用数割裂开,错误计算资源可用个数;
  • 忽略等待进程数仅在信号量值 < 0 时存在的核心条件,盲目根据初值与当前值的差值计算等待进程数。

三 哔哔详解

本题解题核心是牢牢掌握整型信号量的两个核心判定规则,直接通过信号量当前值推导资源可用个数和等待进程数,无需复杂的 P/V 操作反推,一步判定结果。

前置概念铺垫

在操作系统的整型信号量机制中,信号量(S)是用于实现进程同步与互斥的核心变量,与共享资源强关联,其值的含义有严格且唯一的定义(408 必背),是解此类题的关键:

  1. 信号量的初值:表示系统中该共享资源的初始总个数,本题中初值为 3,即该资源初始有 3 个;

  2. 信号量的当前值(S):直接表示系统中该资源的可用个数(空闲个数)

  3. 等待进程数的判定规则:仅当信号量当前值 S < 0时,其绝对值 | S|*表示*等待该资源的进程数;若S ≥ 0**,则等待该资源的进程数为0(无进程等待)。

    核心逻辑:P 操作(申请资源)会使 S-1,V 操作(释放资源)会使 S+1;仅当申请资源时无可用资源(S-1<0),进程才会阻塞并进入等待队列。

题干条件逐一推导

已知题干中与资源关联的信号量当前值为 1,结合上述核心规则直接推导:

  1. 推导资源可用个数 M:信号量当前值直接表示资源可用个数,因此 M = 信号量当前值 =1
  2. 推导等待该资源的进程数 N:信号量当前值 1 ≥ 0,根据判定规则,此时无进程等待该资源,因此 N =0

选项最终判定

M=1、N=0,对应正确选项为B

四 参考答案

B ✅

五 考点精析

5.1 整型信号量的定义

整型信号量是一种由Dijkstra 提出的同步机制,其本质是一个整型变量S,用于表示系统中某类临界资源的可用数量,并配合两个原子操作 P(Wait)和 V(Signal)实现进程互斥与同步。

  • 数学表示semaphore S;
  • 初值设定
    • 互斥信号量:S = 1(仅一个进程可进入临界区)
    • 同步信号量:S = 0(用于前驱-后继关系)
    • 资源计数信号量:S = n(n 个同类资源)

5.2 性质与特征

特性说明
原子性P/V 操作必须是不可分割的原子操作(执行期间不被中断)
非负性(理想)理论上S ≥ 0,但实际实现中可能为负(表示等待进程数)
忙等待(Busy Waiting)❗ 最大缺陷:当S ≤ 0时,进程在 P 操作中循环测试,持续占用 CPU(不满足“让权等待”)
仅支持互斥/简单同步无法高效处理复杂同步场景(如生产者-消费者需多个信号量)
无等待队列不记录等待进程信息,仅靠循环重试

💡关键局限
整型信号量因“忙等待”问题,在现代操作系统中已被记录型信号量取代,但仍是理解同步机制的基础


5.3 P/V 操作对信号量状态的影响

1.对信号量值S的影响

操作动作公式
P(S)申请资源S = S - 1
V(S)释放资源S = S + 1

✅ 无论资源是否可用,P/V 都会立即修改 S 值(这是原子性的体现)

2.对可用资源数的影响

操作可用资源数变化
P(S)若原S > 0→ 可用资源减 1 若原S ≤ 0→ 无资源可减(但 S 仍减 1)
V(S)可用资源加 1(若之前有等待进程,则资源被立即分配,对外表现为“可用数不变”)

📌注意

  • 可用资源数 =max(S, 0)(仅当 S ≥ 0 时才有实际可用资源)
  • 当 S < 0 时,可用资源数 = 0

3.对等待进程数的影响

操作等待进程数变化
P(S)若执行后S < 0→ 等待进程数 = `
V(S)若执行前S ≤ 0→ 理论上应唤醒一个等待进程 (但整型信号量无唤醒机制,依赖其他进程再次尝试 P)

⚠️核心缺陷体现
整型信号量没有阻塞/唤醒机制,因此:

  • 等待进程数在逻辑上存在(由 S 的负值隐含)
  • 但物理上所有进程都在运行态忙等,无真正“阻塞队列”

六 考点跟踪

年份题号考查内容CSDN 参考链接VX参考链接
2010第25题信号量
2015第45题信号量同步互斥
2017第46题信号量同步互斥
2020第45题信号量同步互斥
2021第45题信号量同步互斥
2022第46题信号量同步互斥
2024第46题信号量同步互斥

说明:本文内容基于公开资料整理,参考了包括但不限于《数据结构》(严蔚敏)、《计算机操作系统》(汤小丹)、《计算机网络》(谢希仁)、《计算机组成原理》(唐朔飞)等国内高校经典教材,以及其他国际权威著作。同时,借鉴了王道、天勤、启航等机构出版的计算机专业考研辅导系列丛书中的知识体系框架与典型题型分析思路。文中所有观点、例题解析及文字表述均为作者结合自身理解进行的归纳与重述,未直接复制任何出版物原文。内容仅用于学习交流,若有引用不当或疏漏之处,敬请指正。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:20:44

Flink数据倾斜解决方案:大数据处理的常见难题

Flink数据倾斜解决方案&#xff1a;大数据处理的常见难题 1. 引入与连接 1.1引人入胜的开场 想象一下&#xff0c;你正在负责一个超大型电商平台的实时数据分析项目。这个平台每天都会产生数以亿计的交易记录&#xff0c;你的任务是通过Flink实时计算每个商品的销量、销售额…

作者头像 李华
网站建设 2026/4/18 5:25:53

/go/src/github.com/samber/lo 切片转MAP

samber/lo 库提供了多个函数用于将切片&#xff08;Slice&#xff09;转换为 Map&#xff0c;比手写循环更简洁安全。以下是主要用法&#xff1a; 核心函数 1. Associate&#xff08;键值自定义&#xff09; 将切片转换为 map&#xff0c;同时定义 key 和 value 的生成逻辑&…

作者头像 李华
网站建设 2026/4/18 10:06:53

恶意代码演变:AI 生成的多态恶意软件与免杀技巧

⚠️ 免责声明 本文仅用于网络安全技术交流与学术研究。文中涉及的技术、代码和工具仅供安全从业者在获得合法授权的测试环境中使用。任何未经授权的攻击行为均属违法&#xff0c;读者需自行承担因不当使用本文内容而产生的一切法律责任。技术无罪&#xff0c;请将其用于正途。…

作者头像 李华
网站建设 2026/4/18 8:06:16

基于深度学习YOLO26算法的智慧电力与智慧工业钢缆缺陷检测 电缆散股检测钢丝绳断裂缺陷检测 深度学习图像识别第10463期

计算机视觉数据集说明 往期热门主题 主页搜两字"关键词"直达 代码数据获取&#xff1a; 获取方式&#xff1a;***文章底部卡片扫码获取***. 覆盖了YOLO相关项目、OpenCV项目、CNN项目等所有类别&#xff0c; 覆盖各类项目场景&#xff1a; 项目名称项目名称基于Y…

作者头像 李华
网站建设 2026/4/18 8:15:51

C++可变模板参数详细讲解

先给你一句终极人话&#xff08;背下来&#xff0c;这就是全部&#xff09;Args 你随便起的一个名字&#xff0c;跟 int a 里的 a 一样&#xff0c;想改成 ABC、Params、Shit 都行&#xff0c;没有任何魔法。... 只有两个功能&#xff1a;打包、拆包写在左边&#xff1a;...A…

作者头像 李华