- 博客(3)
- 收藏
- 关注
原创 【通俗易懂】详解 ioctl 函数是如何操控底层的
由于要制定具体是哪一盏LED亮或灭,因此必须要传递数据(比如1表示LED1,2表示LED2等)这边是往内核写数据,因此方向位写01(只写)由于要向内核传递是操作第几盏LED,因此这边可以传递一个无符号整型数据(unsigned int)因此数据传递大小位写(4)给 LED 设备类型取一个类型码,此处随意,可取为 ‘L’,它的 ascii 码为 76,因此设备类型码位写01001100(76)给具体功能取一个功能码,此处随意,可以用 10 表示亮灯功能,用 11 表示灭灯功能,因此功能码位写。
2023-06-01 08:20:42 3092 2
原创 【极速理解】内核中解决竞态的方法之 信号量、互斥体、原子操作
当一个进程获取到了信号量之后,信号量的值会减为 0 ,如果另外一个进程想获取信号量,会无法获取到值为 0 的信号量资源...
2023-05-31 13:14:44 128
原创 【清晰易懂】使用自旋锁解决Linux内核中的竞态问题分析
原因是:这两个函数被设计了一种机制:在执行这两个函数的时候,有可能会切换到其他进程进行执行任务(防止拷贝数据时间太长影响其他进程),而这个机制就与我们保护竞态资源的初衷冲突了;但是该思路犯了更低级的错误:在打开设备文件函数中进行解锁后,其他进程就开始可以获取到锁了,此时其他进程就也可以进入设备文件,对临界资源进行操作了,这与我们。原因是:自旋锁保护区间内,其他进程想要获取锁,会处于忙等状态,不断消耗 CPU 资源,因此要尽量压缩这个区间。状态,即:获取不到锁,就不断请求获取锁,直到获取到锁为止,因此。
2023-05-30 13:25:18 204 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人