操作系统(8)第二章- 进程同步与互斥
进程同步与互斥的基本概念一、前提并发与共享引发的问题多道程序环境下进程并发执行且会访问共享资源硬件设备、全局变量、缓冲区、文件等。 多个进程同时读写共享数据时执行结果不可预期这种现象称为竞态条件Race Condition。 为规避竞态条件、保证数据一致性与执行逻辑正确引入进程同步与互斥机制。二、临界区Critical Section1. 定义进程中访问共享资源的代码片段是引发竞态条件的根源。 其余不访问共享资源的代码称为剩余区。2. 临界区使用四大准则必考空闲让进临界区无人使用时允许请求进入的进程立即进入。忙则等待临界区已被占用其他请求进程必须等待。有限等待等待的进程不能无限阻塞在有限时间内一定能进入临界区避免饥饿。让权等待进程等待时主动放弃 CPU不忙等提升 CPU 利用率。补充忙等忙等待进程循环检测临界区状态一直占用 CPU。三、进程互斥Mutual Exclusion1. 定义多个竞争关系的进程同一时刻最多只能有一个进程进入临界区访问共享资源一个进程在临界区时其他进程必须等待。2. 核心特征关系进程间相互竞争共享资源无固定执行顺序。目的保证共享资源的独占访问杜绝同时操作。典型场景独占设备打印机、全局变量、账户余额修改。3. 通俗理解排他使用你用我就不能用。四、进程同步Synchronization1. 定义多个协作关系的进程按照预先规定的先后次序执行一个进程的执行依赖另一个进程的运行结果形成执行顺序约束。2. 核心特征关系进程间相互协作存在逻辑依赖。目的协调执行顺序保证业务逻辑正确。典型场景生产者 - 消费者、数据先写入再读取、流水线任务。3. 通俗理解有序执行你做完我才能做。五、互斥与同步的区别与联系1. 核心区别对比项进程互斥进程同步进程关系竞争关系互不依赖协作关系存在执行依赖核心要求禁止同时进入临界区保证固定先后执行顺序访问规则随机竞争谁先抢到谁执行顺序固定强制等待前驱进程2. 联系二者都是为了解决并发进程访问共享资源的问题保障执行正确性。同步场景中通常包含互斥例如生产者 - 消费者既要控制生产 / 消费顺序同步又要独占访问缓冲区互斥。二者可使用同一套工具实现信号量、锁等。六、两类典型制约关系从逻辑上划分并发进程的制约分为两种对应同步与互斥间接制约源于资源共享→ 对应互斥多个进程争抢同一独占资源相互制约。直接制约源于进程合作→ 对应同步进程间有数据 / 任务传递一方执行依赖另一方的结果。Linux 下的同步与互斥一、Linux 下的同步互斥 3 层结构从操作系统原理 → 内核实现 → 你写代码用的 API上层你用的接口mutex、sem、rwlock、futex 中层内核同步原语信号量、自旋锁、互斥锁、完成量 下层硬件原子指令CAS、atomic、lock 指令二、Linux 同步互斥的核心思想1. 互斥Mutual Exclusion保护共享资源同一时间只能有一个执行单元访问。Linux 实现方式mutex互斥锁spinlock自旋锁atomic原子操作本质把多线程并行 → 变成临界区串行。2. 同步Synchronization让多个进程 / 线程按顺序执行你做完我再做。Linux 实现方式信号量semaphore条件变量pthread_cond_t完成量completion等待队列wait queue本质控制执行顺序解决生产者 - 消费者模型。三、Linux 最核心的 4 种同步机制操作系统级1互斥锁mutex→ 最常用Linux 应用层 内核层最标准的互斥工具。原理操作系统角度底层基于futex快速用户态互斥锁无竞争时用户态完成不进内核有竞争时阻塞线程不占 CPU让权等待pthread_mutex_t lock; pthread_mutex_lock(lock); // 进入临界区 临界区代码 pthread_mutex_unlock(lock); // 退出临界区操作系统特点睡眠等待不浪费 CPU临界区可以很长应用层开发 90% 用这个2信号量semaphore→ 同步 互斥全能原理计数器 等待队列P 操作down申请资源计数器 - 1V 操作up释放资源计数器 1两种用法互斥sem 1同步sem 0 / 资源数Linux APIsem_t sem; sem_wait(sem); // P sem_post(sem); // V操作系统定位信号量 通用同步互斥工具互斥锁是信号量的特例1。3自旋锁spinlock→ 内核专用原理加锁失败时while 循环忙等待不睡眠不切换进程适用场景临界区非常短中断上下文多核 SMP 环境特点操作系统重点不睡眠、不调度、不释放 CPU不能在自旋锁里调用可能阻塞的函数4条件变量condition variable→ 同步专用Linux 下实现 “等待 - 唤醒” 最标准工具。原理线程可以主动等待某个条件成立另一个线程完成后唤醒它典型模型生产者 - 消费者缓冲区空 / 满等待pthread_mutex_lock(lock); while(条件不满足) pthread_cond_wait(cond, lock); // 等待并释放锁 // 操作共享资源 pthread_mutex_unlock(lock);

相关新闻

MAA明日方舟助手:如何用智能图像识别技术实现全自动游戏辅助

MAA明日方舟助手:如何用智能图像识别技术实现全自动游戏辅助

MAA明日方舟助手:如何用智能图像识别技术实现全自动游戏辅助 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https…

2026/6/20 10:28:44阅读更多 →
WebLogic弱密码漏洞复现与防御:从原理到实战攻防

WebLogic弱密码漏洞复现与防御:从原理到实战攻防

1. 项目概述:从一次内部安全演练说起去年,我们团队在一次针对内部老旧系统的安全评估中,发现了一台仍在运行的WebLogic 10.3.6服务器。出于职业习惯,我尝试用几个常见的弱密码组合去碰碰运气,结果竟然真的通过weblogic…

2026/6/20 10:28:44阅读更多 →
LoadPE  被加载PE文件代码分析(ASM汇编版本)>>03

LoadPE 被加载PE文件代码分析(ASM汇编版本)>>03

目录 一、整体加载流程概览 二、详细实现步骤(汇编思路) 阶段0: OEP环境设置引用等 确定OEP加载程序 需要加载的程序大小 编译器链接器解决基地址(到时候在看看) 申请LoadPE所需要的空间 加载的过程 包引用环境变量等 查看基地址是否在400000地…

2026/6/20 10:28:44阅读更多 →
【专栏必读】王道考研408数据结构+算法设计与分析万字笔记使用说明及章节导航

【专栏必读】王道考研408数据结构+算法设计与分析万字笔记使用说明及章节导航

其他科目导航 【专栏必读】王道考研408计算机组成原理万字笔记使用说明及章节导航 【专栏必读】王道考研408操作系统Linux系统编程万字笔记使用说明及章节导航 【专栏必读】王道考研408计算机网络湖科大教书匠计算机网络网络编程万字笔记使用说明及章节导航 【免费分享】软件…

2026/6/20 11:48:51阅读更多 →
MC9S08JM60串行通信:SCI异步与SPI同步接口原理与实战配置

MC9S08JM60串行通信:SCI异步与SPI同步接口原理与实战配置

1. 项目概述与核心价值 在嵌入式开发的世界里,微控制器(MCU)与外部世界的“对话”大多依赖于串行通信。无论是向调试终端打印日志,还是从传感器读取数据,亦或是驱动一块显示屏,串行通信接口都是不可或缺的桥…

2026/6/20 11:48:51阅读更多 →
AI网关实战:构建可审计、可运维的企业级AI安全接入框架

AI网关实战:构建可审计、可运维的企业级AI安全接入框架

1. 项目概述:这不是“装虾”,而是给AI工具加一道职业级安全围栏最近在几个技术社群和产品团队内部复盘会上,反复听到同事说:“我们上线了一个AI功能,用户反馈很积极,但法务和合规同事连夜找上门&#xff0c…

2026/6/20 11:48:51阅读更多 →
OAuth 2.0安全审计:五大高危实现漏洞与加固实战

OAuth 2.0安全审计:五大高危实现漏洞与加固实战

1. 项目概述:一次对OAuth安全盲区的深度排查 最近在帮一个朋友的公司做安全审计,他们正在集成DeepSeek的某些API服务。朋友随口提了一句,说他们的开发团队觉得DeepSeek的OAuth集成文档“有点简略”,有些地方需要自己摸索。这句话立…

2026/6/20 11:48:51阅读更多 →
文心大模型4.0真实能力解析:中文语义压缩比与垂直场景落地

文心大模型4.0真实能力解析:中文语义压缩比与垂直场景落地

1. 这不是一句简单的公关话术,而是中国大模型产业进入深水区的信号 “李彦宏称「文心大模型4.0综合水平与GPT-4相比毫不逊色」,对此你怎么看?”——这句话在2023年百度世界大会上抛出时,我正坐在北京中关村一家咖啡馆里刷技术社区…

2026/6/20 11:48:51阅读更多 →
XXMI启动器:一站式游戏模组管理终极指南,告别繁琐配置的完整解决方案

XXMI启动器:一站式游戏模组管理终极指南,告别繁琐配置的完整解决方案

XXMI启动器:一站式游戏模组管理终极指南,告别繁琐配置的完整解决方案 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 你是否曾经为了给《原神》安装角色模…

2026/6/20 11:43:50阅读更多 →
【课程设计/毕业设计】基于 Web 的高校县志馆藏信息综合管理系统设计与实现 基于Django的青岛滨海学院特色文献捐赠流转管理系统的设计与实现【附源码、数据库、万字文档】

【课程设计/毕业设计】基于 Web 的高校县志馆藏信息综合管理系统设计与实现 基于Django的青岛滨海学院特色文献捐赠流转管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/20 0:02:40阅读更多 →
MC68HC908RF2A定时器PWM生成原理与实战:无缓冲与缓冲模式详解

MC68HC908RF2A定时器PWM生成原理与实战:无缓冲与缓冲模式详解

1. 项目概述与核心价值在嵌入式开发,尤其是电机驱动、LED调光、开关电源这些需要精确控制“能量”的领域,脉冲宽度调制(PWM)技术是工程师手中的一把瑞士军刀。它的本质很简单:用一个固定频率的方波,通过改变…

2026/6/20 0:02:40阅读更多 →
在银河麒麟V10桌面(2205版本)上实战部署软RAID 1:从模块黑名单到自动挂载

在银河麒麟V10桌面(2205版本)上实战部署软RAID 1:从模块黑名单到自动挂载

1. 银河麒麟V10桌面系统与软RAID 1基础认知 第一次在银河麒麟V10桌面上折腾软RAID 1时,我踩了不少坑。这个国产操作系统基于Linux内核,但2205版本对软RAID模块做了特殊处理,需要额外操作才能正常使用。软RAID 1其实就是磁盘镜像技术&#xff…

2026/6/20 0:02:40阅读更多 →