Linux内核分析与应用7-内核同步

本文围绕Linux内核分析,探讨了竞态条件、临界区、原子操作、多核系统中的原子性、死锁及其避免策略,介绍了自旋锁、信号量和P/V操作,以及生产者-消费者并发实例。内容涵盖了内核同步机制和调度问题,参考了《Linux内核分析与应用》和《内核中的调度与同步》。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系列是对 陈莉君 老师 Linux 内核分析与应用[1] 的学习与记录。讲的非常之好,推荐观看

留此记录,蜻蜓点水,可作抛砖引玉


alt

7.1 Linux同步概述


竞态条件,也称竞争条件,race condition

临界区

alt
alt

原子操作,Linux专门有一个atomic_t结构体

alt

问题:

在多核系统中遇到原子操作,在系统层面上原子操作还是原子的吗?在核级还是原子的吗?

alt

死锁:所有的任务都在相互等待,但他们永远不会释放已占有的资源,于是任何任务都无法继续执行

死锁的避免: 加锁的顺序是关键

alt

思考:

死锁是一种小概率事件还是大概率事件?如果内核出现死锁,该如何应对?



7.2 内核同步机制


alt

原子操作已经讲过.

中断屏蔽:

alt

自旋锁:(spin lock)

专为多处理器并发而引入的一种锁,在内核中大量应用于中断处理部分

在短期时间内,进行轻量级的锁定

同一时刻,只能为一个处理器所持有, 防止多处理器并发访问临界区,防止内核抢占造成的竞争


信号量:

alt
alt

P/V操作

alt
alt
alt

经典实例: 生产者-消费者并发实例


参考:

内核中的调度与同步[2]


参考资料

[1]

Linux 内核分析与应用: https://next.xuetangx.com/course/XIYOU08091001441/1516763

[2]

内核中的调度与同步: http://wwww.kerneltravel.net/journal/vi/syn.htm

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值