考点频率★★★★☆常以1-2道选择题考查难度⭐建议掌握临界资源的判断方法、临界区的四部分组成、临界区管理的四项原则1️⃣ 回顾什么是临界资源临界资源是指一次只允许一个进程使用的资源。这类资源如果被多个进程同时访问会导致数据不一致或系统错误。常见临界资源举例临界资源类型具体例子为什么是临界资源共享变量计数器count、队列指针多个进程同时修改会导致计数错误共享数据结构链表、缓冲区池同时操作会破坏数据结构完整性独占I/O设备打印机、磁带机同时打印会输出混乱判断标准如果一个资源被多个进程同时访问会造成不可预期的错误那么它就是临界资源。注意临界资源不一定都是硬件设备软件中的共享数据如全局变量、缓冲区也属于临界资源。2️⃣ 什么是临界区临界区是指每个进程中访问临界资源的那一段程序代码。临界区不是一段固定的内存区域而是程序中的代码片段。一个进程访问临界资源的典型结构进程P: 剩余区代码 ← 不需要互斥保护的普通代码 ┌─────────────────┐ │ 进入区 (Entry) │ ← 申请进入临界区如执行P操作 │ 临界区 (CS) │ ← 真正访问临界资源的代码核心 │ 退出区 (Exit) │ ← 释放临界区如执行V操作 └─────────────────┘ 剩余区代码 ← 继续执行普通代码四个区域的说明区域说明进入区检查是否可进入临界区。若可以则设置“正在访问临界区”的标志通常通过PV操作的P操作实现。临界区真正访问临界资源的代码段。同一时刻最多只有一个进程在此区域。退出区清除“正在访问临界区”的标志释放资源通常通过PV操作的V操作实现。剩余区代码中除进入区、临界区和退出区之外的部分不受互斥保护。3️⃣ 临界区管理的四项原则临界区的管理必须满足以下四个条件这是软考常考的重点。凡是不满足这些条件的设计都会导致进程间资源访问出错。原则说明反例忙则等待已有进程在临界区时其他进程必须等待不能强行闯入不遵守会导致两个进程同时修改共享变量空闲让进当无进程在临界区时一个请求进入的进程应立即获准进入不遵守会浪费CPU时间导致性能下降有限等待任何进程都不能无限期地等待进入临界区不应存在死等或饥饿低优先级进程永远等不到饥饿让权等待不能进入临界区的进程应当释放CPU资源而不是占用CPU忙等进程死循环等待浪费CPU自旋锁虽允许但在多核场景特殊处理4️⃣ 临界区与临界资源的关系临界资源资源层面 │ └── 由多个进程共享 │ └── 每个进程中访问该资源的代码段 ──→ 临界区临界资源是“东西”如打印机、共享缓冲区临界区是“代码”访问那个东西的程序段一个进程可以访问多个临界资源因此可能对应多个临界区同一进程中的多个临界区如果访问不同临界资源彼此之间通常不需要互斥5️⃣ 经典例题例题1在操作系统中临界区是指 。A. 访问临界资源的程序段B. 进程执行过程中访问共享变量的程序段C. 进程执行过程中访问临界资源的程序段D. 一段内存区域解析临界区是访问临界资源的程序段是代码而非内存区域选 C。例题2下列原则中属于临界区管理必须满足的是 。A. 忙则等待B. 资源预分配C. 循环等待D. 不可抢占解析临界区管理的四项原则包括忙则等待、空闲让进、有限等待、让权等待。资源预分配、循环等待、不可抢占是死锁相关的条件不属于临界区管理原则。选A。例题3判断一个进程可以拥有多个临界区。 解析正确。一个进程可能访问多个不同的临界资源因此会有多个对应的临界区。例如生产者进程既需要访问共享缓冲区临界区1又可能需要更新计数器临界区2。6️⃣ 记忆口诀临界资源一次用临界区是访问段。进入退出要成对忙则空闲不能乱。有限等待不饿死让权等待不空转。7️⃣ 小测验评论区对答案下列关于临界区的叙述中正确的是 。A. 临界区是一段内存区域B. 同一进程的多个临界区之间必须互斥C. 临界区中的代码访问的是临界资源D. 进程在临界区中可以无限期停留本专栏日更2篇点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #临界区 #临界资源 #进程同步 #操作系统