每天看三页《深入Linux内核架构》——第七天

第19-21页

1.引用计数用于检测内核中有多少地方使用该对象。

2.kref结构用于管理引用计数。kref结构将一个原子数据类型封装在结构中防止直接操纵该值。“原子”意味着对该变量的加减1操作在多处理器系统上也是安全的。

3.必须使用kref_init初始化kref。如果要使用某个对象,首先调用kref_get对引用计数器加一。当对象不再使用,调用kref_put将计数器减一。

4.内核代码的Documentation/kobject.txt中包含了与内核对象有关的文档。

5.内核使用typedef定义各种变量类型,以避免依赖于体系结构相关的特性。若某个变量的类型是typedef来的,则不能直接访问,需要通过辅助函数。

6._s8和_u8分别是有符号和无符号的八位整数。_s16、_u16、_s32、_u32、_s64、_u42类似.

7. 大端序、小端序表示用何种顺序存储多字节数据类型。大端序,最高有效字节在低地址。小端序,最低有效字节在低地址。

内核提供了函数用于CPU使用格式与上述特定表示法的转换。对64、32、16位数据,所有小端序、大端序之间的转换例程均可用。

8.per-cpu变量在有若干CPU的SMP系统上,会为每个CPU分别创建变量的一个实例。所需数据很可能存在于某个处理器的缓存中,因此可更快访问。若在多处理器系统中使用可能被所有CPU同时访问的变量,可能存在通信方面的问题。此时可以通过下述方法绕过上述问题,用于某个特定CPU的实例可以用get_cpu(name,cpu)获得,其中smp_processor_id()可以返回当前活动处理器的ID,用作前述的cpu参数。

你可能感兴趣的:(linux)