想谈恋爱的鱼
想起记忆深处的一首歌。
想谈恋爱的鱼。
跟大家分享下
在linux/param.h中定义HZ值,表示每秒发生时钟中断的频率。
内核时钟计数器:jiffies_64。
内核使用jiffies变量是unsigned log类型。
可能是jiffies_64的值也可能是其底32位。
头文件:linux/jiffies.h
jiffies变量被声明为volatile防止编译时优化。
[阅读全文] »
ioctl是用于控制设备的公共接口,设备除了需要处理读取写入之外还需要一些相关控制信息。这些控制信息就是由ioctl调用来完成
用户空间的ioctl原型为
1 | int ioctl(int fd,unsigned long cmd,...); |
后面的“…“表示函数的参数个数是可变的(如printf)。
内核空间的ioctl原型
1 2 | int (*ioctl)(struct inode *inode,struct file *filp. unsigned int cmd,unsigned long arg); |
cmd 为指令编号,后面讲述。
arg 为参数。可以是整数也可以是指针,但是内核会以unsigned long形式传送导函数里。
[阅读全文] »
不明确的规则:每个线程不能第二次尝试获得该锁。
锁的顺序规则:保证每个线程都以相同的顺序获得锁。
锁的粒度对比:粗粒度锁会导致竞争严重,细粒度锁会导致额外的开销和给维造成副作用
大量的读取者,只有一个写入者可以使用免锁算法。
免锁算法类似于循环队列(个人理解)。
原子变量执行速度非常块。
只要有可能编译器会把对原子变量的操作编译成单条指令。
[阅读全文] »