news 2026/7/12 10:32:13

进程同步与死锁

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
进程同步与死锁

目录

进程同步与互斥

进程互斥的实现

进程互斥的软件实现方法

单标志法

双标志先检查

双标志后检查

Peterson算法

进程互斥的硬件实现方法

中断屏蔽方法

TestAndSet

Swap指令

互斥锁

信号量机制

用信号量机制实现进程互斥

用信号量机制实现进程同步

用信号量机制实现进程前驱关系

经典的进程同步问题

生产者消费者问题

多生产者多消费者问题

吸烟者问题

读者写者问题

哲学家进餐问题

管程

死锁

死锁的预防

死锁的避免

死锁的检测和解除


进程同步与互斥

并发性带来了异步性,有时需要通过进程同步解决这种异步。有的进程之间需要相配合地完成工作,各进程的工作推进需要遵循一定的先后顺序。

对临界资源的访问,需要互斥的进行。即同一时间段内只能允许一个进程访问该资源。

进入区和退出区是负责实现互斥的代码段。临界区是进程中访问临界资源的代码段,也可称为临界段。

进程互斥的实现

进程互斥的软件实现方法
单标志法

双标志先检查

双标志后检查

Peterson算法

进程互斥的硬件实现方法
中断屏蔽方法

TestAndSet

Swap指令

互斥锁

信号量机制

在进程同步中,让权等待是指当进程在等待进入临界区时,应主动释放处理机(CPU),将自身阻塞并加入等待队列,让其他就绪进程有机会运行。这样可以避免CPU空转,提高系统效率。

四种软件实现方式三种硬件实现方式均存在以下问题:

  • 软件实现方式:在进入临界区前,进程通常会在一个循环中反复检查条件(如标志位或锁状态),这个过程称为忙等待(Busy Waiting)。在此期间,进程持续占用CPU执行检查指令,不会主动让出CPU,因此无法实现让权等待。

  • 硬件实现方式

    • 中断屏蔽:通过关闭中断来保证互斥,但在此期间系统无法进行进程调度,当前进程独占CPU,若它不进入临界区也不释放CPU,则其他进程无法运行。

    • TS/TSL指令和Swap/XCHG指令:常用于实现自旋锁(Spinlock),进程会在循环中反复执行这些指令尝试获取锁,同样属于忙等待,不会主动释放CPU。

这些方法的共同缺陷是:进程在等待时持续占用CPU资源,而不是阻塞自己并让出CPU,因此都无法满足让权等待的要求。这会导致CPU利用率降低,尤其在多道程序系统中可能严重影响系统性能。为了克服这一问题,后来引入了信号量(Semaphore)等机制,这些机制可以在进程等待时将其阻塞并切换至其他进程,从而实现真正的让权等待。

信号量机制

用信号量机制实现进程互斥

用信号量机制实现进程同步

用信号量机制实现进程前驱关系

经典的进程同步问题

生产者消费者问题

多生产者多消费者问题

吸烟者问题

读者写者问题

哲学家进餐问题

如何防止死锁的发生呢?

①可以对哲学家进程施加一些限制条件:比如最多允许四个哲学家同时进餐。这样可以保证至少有一个哲学家是可以拿到左右两只筷子的

②要求奇数号哲学家先拿左边的筷子,然后再拿右边的筷子,而偶数号哲学家刚好相反。用这种方法可以保证如果相邻的两个奇偶号哲学家都想吃饭,那么只会有其中一个可以拿起第一只筷子,另一个会直接阻塞。这就避免了占有一支后再等待另一只的情况。

③仅当一个哲学家左右两支筷子都可用时才允许他们拿起筷子:

管程

死锁

死锁的预防

死锁的避免

死锁的检测和解除

🙃🙃🙃...

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

通信系统仿真:数字调制与解调技术_(31).信噪比SNR分析

信噪比SNR分析 1. 信噪比的定义和重要性 信噪比(Signal-to-Noise Ratio, SNR)是通信系统中一个非常重要的参数,用于衡量信号质量。信噪比定义为信号功率与噪声功率的比值,通常表示为分贝(dB)。 1.1 信噪比的…

作者头像 李华
网站建设 2026/7/11 10:15:02

Flutter image_picker 1.2.1 插件:图片与视频选择全攻略

image_picker 是 Flutter 生态中最常用的媒体选择插件,专注于实现“从相册选择”与“相机拍摄”两大核心场景,支持图片、视频的单选与多选,适配全平台设备。其 1.2.1 版本作为稳定迭代版,在权限处理、内存优化及桌面平台支持上均有…

作者头像 李华
网站建设 2026/7/12 22:56:40

9个开题报告神器,AI工具推荐让论文更高效!

9个开题报告神器,AI工具推荐让论文更高效! 论文路上的“三座大山”:时间、重复率与效率 对于大多数本科生而言,撰写开题报告和毕业论文是一段既紧张又充满挑战的旅程。从选题到资料搜集,从文献综述到框架搭建&#xff…

作者头像 李华
网站建设 2026/7/12 13:36:47

【ros2】告别重复代码:Xacro让URDF编写效率翻倍

文章目录 告别重复代码:Xacro让URDF编写效率翻倍 一、Xacro到底解决了什么问题? 二、Xacro基础语法:先掌握这5个核心 1. 第一步:声明Xacro命名空间(必写!) 2. 变量定义与引用:`<xacro:property>` (1)定义变量 (2)引用变量 3. 数学计算:直接在`${}`中写公式 …

作者头像 李华
网站建设 2026/7/12 20:32:56

8 个论文写作工具,本科生期末论文轻松搞定!

8 个论文写作工具&#xff0c;本科生期末论文轻松搞定&#xff01; 论文路上的“拦路虎”&#xff0c;你是否也经历过&#xff1f; 对于大多数本科生来说&#xff0c;期末论文写作从来不是一件轻松的事。从选题到查资料&#xff0c;从写大纲到撰写正文&#xff0c;每一个环节都…

作者头像 李华
网站建设 2026/7/11 22:17:03

网络安全怎么快速入门,新手也能少走半年弯路!

后台总收到私信&#xff1a;“学网安该先看 Linux 还是先学 Burp&#xff1f;”“找了一堆教程&#xff0c;越学越乱怎么办&#xff1f;”—— 其实不是你学得慢&#xff0c;是没找对循序渐进的路径。很多人一上来就跟风学工具、刷漏洞&#xff0c;结果基础不牢&#xff0c;后期…

作者头像 李华