欢迎光临散文网 会员登陆 & 注册

4.1锁的状态

2022-08-09 21:58 作者:Tokiyi  | 我要投稿

要想理解到linux系统描述文件file的结构体中包含有一个与rcu相关的结构体,rcu_head。学习文件结构体的思路很简单,就是按图索骥,把一步一步把文件结构的依赖项以及依赖项的依赖项研究到位。先在遇到的问题是rcu的数据组成中包含有自旋锁的数据spinlock_t,而可以做的就是翻查源码和手册,尝试把这一块胜利拼图拼接好。

那先从一般的锁开始吧。

锁的功能的实现是和锁的检验器(validator)密不可分的,没有对锁的校验,锁就无所谓的意义。而校验的结果则是在校验真确的时候有条件触发函数服务,而在校验虚假的时候没有条件出发函数服务。而对锁的看法,往往是来源于校验器如何对锁产生观念和理解。

在linux中锁的状态的编码有4*2+2种。其中4*2的4则是指锁的四个状态:它们的编码分别为 ".""-""+""?"

=== ===================================================

'.' acquired while irqs disabled and not in irq context

##获得"."当中断未被使能而且不在中断条件中

'-' acquired in irq context

##获得"."处于中断环境

'+' acquired with irqs enabled

##获得"+"处于中断使能

'?' acquired in irq context with irqs enabled.

##获得"?"处于中断条件并有着中断使能

=== ===================================================

而4*2中的2则是指来自硬件的中断和来自软件的中断

LOCKDEP_STATE(HARDIRQ)

LOCKDEP_STATE(SOFTIRQ)

最后的两个2则为 USED和USED_READ

它们分别体现了两种来源的锁处于的各种不同状态的表述,这些都是校验器对锁的状态的阐述,虽然现在对校验器的具体机制没有任何信息,但是这对锁来说确实一个很好的内容扩充。


4.1锁的状态的评论 (共 条)

分享到微博请遵守国家法律