进程管理 三 同步与互斥问题
同步与互斥
多道程序环境下,进程并发执行,不同进程之间存在不同的相互制约关系。
同步——直接制约关系
互斥——间接制约关系
临界区互斥的实现方法
软件实现方法
单标志法
标志turn用于指示允许进入临界区的进程。
双标志先检查法
双标志后检查法
Peterson算法
硬件实现方法
通过硬件支持实现临界互斥问题的方法称为低级方法,或称元方法。
中断屏蔽方法
TestAndSet指令
Swap指令
硬件方法的优点:适用于任意数目的进程,而不管是单处理机还是多处理机;简单、容易验证其正确性。可以支持进程内有多个临界区,只需为每个临界区设立一个布尔变量。
硬件方法的缺点:进程等待进入临界区时需要耗费处理机时间,不能实现“让权等待”;从等待进程中随机选择一个进入临界区,有的进程可能一直选不上,导致“饥饿”现象。
互斥锁
解决临界区问题最简单的工具就是互斥锁(mutex lock)。一个进程在进入临界区时应该获得锁,在退出临界区时释放锁。
available:布尔变量,指示锁是否可用。
acquire():获得锁。当锁是可用的(available = true),成功获得锁(设置available = false)
release():释放锁。设置available = true
acquire()和release()操作必须是原子操作(即硬件实现的),当有一个进程在临界区内时,其他进程在进入临界区时必须循环调用acquire()。当多个进程共享同一CPU时,就浪费了CPU周期。因此,互斥锁常用于多处理机系统,一个线程可以在一个处理机上忙等,不影响其他线程的执行。
信号量机制
整型信号量
记录型信号量
信号量操作实现互斥\同步\前驱
前V,P后
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南