05 2024 档案

互斥量mutex的实现-07
摘要:1 mutex的内核结构体 mutex的定义及操作函数都在Linux内核文件include\linux\mutex.h中定义,如下: (count可以取值1(unlocked),0(locked),-1(locked 且有waiter)) 初始化mutex之后,就可以使用mutex_lock函数或其 阅读全文

posted @ 2024-05-05 16:18 拉风摊主 阅读(79) 评论(0) 推荐(0) 编辑

信号量 semaphore的实现 -06
摘要:1 semaphore的内核结构体 注意:这是信号量,不是信号。在前面学习异步通知时,驱动程序给应用程序发信号。现在我们讲的信号量是一种同步、互斥机制。 信号量的定义及操作函数都在Linux内核文件include\linux\semaphore.h中定义,如下: 初始化semaphore之后,就可以 阅读全文

posted @ 2024-05-05 16:10 拉风摊主 阅读(19) 评论(0) 推荐(0) 编辑

自旋锁spinlock的实现-05
摘要:自旋锁,顾名思义:自己在原地打转,等待资源可用,一旦可用就上锁霸占它。 问题来了,假设别人已经上锁了,你原地打转会占住CPU资源了,别的程序怎么运行?它没有CPU怎么解锁? 这个问题,有2个答案: ① 原地打转的是CPU x,以后CPU y会解锁:这涉及多个CPU,适用于SMP系统; ② 对于单CP 阅读全文

posted @ 2024-05-05 15:54 拉风摊主 阅读(188) 评论(0) 推荐(0) 编辑

linux锁的介绍和使用 -04
摘要:本节参考: https://www.kernel.org/doc/html/latest/locking/index.html https://mirrors.edge.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/ 锁的类型 Lin 阅读全文

posted @ 2024-05-03 16:11 拉风摊主 阅读(500) 评论(0) 推荐(0) 编辑

原子操作的实现原理与使用-03
摘要:所谓“原子操作”就是这个操作不会被打断。Linux有2种原子操作:原子变量、原子位。 原子变量的内核操作函数 原子变量的操作函数在Linux内核文件arch\arm\include\asm\atomic.h中。 原子变量类型如下,实际上就是一个结构体(内核文件include/linux/types. 阅读全文

posted @ 2024-05-03 15:18 拉风摊主 阅读(273) 评论(0) 推荐(0) 编辑

同步与互斥的失败例子-02
摘要:一句话理解同步与互斥:我等你用完厕所,我再用厕所。 什么叫同步?就是条件不允许,我要等等。 什么是互斥?你我早起都要用厕所,谁先抢到谁先用,中途不被打扰。 同步与互斥经常放在一起讲,是因为它们之的关系很大,“互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是用“同步”来实现“ 阅读全文

posted @ 2024-05-03 14:22 拉风摊主 阅读(23) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示