
Linux Kernel 0.11
littlehedgehog
软件就像性,还是免费的比较好.....
展开
-
求余不用模
求余不用模刺猬@http://blog.youkuaiyun.com/littlehedgehog 我们先来看看这个问题如果要求 9除以4余数是多少? 可能大部分人都会直接用 6%4 这样的C语言表达式吧?平时用也倒是无妨,但是在系统内核这种对速度要求极为严格的地方,这种除法运算的花销可能就有点不太值得了。注意看下面的数学式子:9%4=2原创 2008-05-01 15:48:00 · 3028 阅读 · 0 评论 -
回车与换行
回车与换行 刺猬@http://blog.youkuaiyun.com/littlehedgehog 就当一个科普读物吧,这几天看字符设备还对这个回车和换行还真有点儿搞不清楚。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符原创 2008-06-29 20:03:00 · 1040 阅读 · 1 评论 -
cool! 用sourcesight实现内核源码级调试
cool! 用sourcesight实现内核源码级调试刺猬@http://blog.youkuaiyun.com/littlehedgehog 无意间看到这么好的东西,不敢独享,稍微调整了下文字,另外把我遇到问题说下,免得后来的又来摸索。原帖:http://www.oldlinux.org/oldlinux/viewthread.php?tid=11074&extr原创 2008-06-30 20:28:00 · 2655 阅读 · 0 评论 -
schedule浪子何时回头?
schedule浪子何时回头?刺猬@http://blog.youkuaiyun.com/littlehedgehog schedule.c 给人最大的疑惑就是一旦把进程调度完成后切换到其他进程时,什么时候再返回执行呢? void schedule (void)...{ int i, next, c; struct task_struct **p; for (原创 2008-05-25 11:56:00 · 1470 阅读 · 1 评论 -
Fork——分道扬镳的开始
Fork——分道扬镳的开始刺猬@http://blog.youkuaiyun.com/littlehedgehog在copy_process的函数中有这样一段代码:p->tss.eax = 0; 赵博注释道: 这就是当fork()返回时新进程会返回0的原因所在! 呃,很多人不明白这段注释含义,fork返回0?我怎么没看见fork在新进程返回了? 这里我介绍下我的看法权当是抛砖引玉原创 2008-05-24 21:32:00 · 1117 阅读 · 2 评论 -
左右法则
左右法则刺猬@http://blog.youkuaiyun.com/littlehedgehog关于Linux内核中有一个关于signal函数的声明,如下: void (*signal(int, void (*_func)(int)))(int); c语言声明繁杂一直被人认为是C的诟病,大家从这个函数可见一斑。还好有前辈专门针对此提出了个“左右法则”。大家不妨读读:原创 2008-05-18 15:26:00 · 1219 阅读 · 3 评论 -
电梯算法(1)
电梯算法(1)刺猬@http://blog.youkuaiyun.com/littlehedgehog 电梯算法主要用于磁盘寻道的优化。第一种是我们最为原始的先到先服务(first come first served)的算法,这个对于我们去下馆子撮一顿比较合适,先来就先吃,不然顾客有意见。不过对于磁盘寻道就不太合适了。如下图:注意这张图并不是解释的先到先服务算法,我们只是借用下而已原创 2008-05-12 21:46:00 · 8516 阅读 · 1 评论 -
管中窥道——我看Linux内核管道
管中窥道——记录Linux内核管道(2)刺猬@http://blog.youkuaiyun.com/littlehedgehog 上节说了我对Linux管道的一点儿小见解,这节来看看内核中关于管道的实现代码。 以下代码摘自 Linux/include/fs.h #define PIPE_HEAD(inode) ((inode).i_zone[0]) //这里定义了管道头原创 2008-05-11 10:05:00 · 1938 阅读 · 0 评论 -
权衡利弊——记录内核buffer
权衡利弊刺猬@http://blog.youkuaiyun.com/littlehedgehog老规矩,先看代码:#define BADNESS(bh) (((bh)->b_dirtb_lock) (该宏)用户同时判断缓冲区的修改标志和锁定标志,并且定义修改标志的权重 要比锁定标志大 (摘自《剖析》P.531)我一直没读懂这句话究竟想要表达一个什么意思。还好,在赵博的oldlinux原创 2008-05-06 20:17:00 · 1072 阅读 · 0 评论 -
Linux 内核小bug
Linux内核小bug刺猬@http://blog.youkuaiyun.com/littlehedgehog 今天读着读着代码,竟然无意中发现Linux 0.11内核有个小bug,呵呵,人非圣贤孰能无过。 // 在目录项数据块中搜索匹配指定文件名的目录项,首先让de 指向数据块,并在不超过目录中目录项数// 的条件下,循环执行搜索。 i = 0; de = (struct原创 2008-05-04 19:54:00 · 1243 阅读 · 0 评论 -
C数组另类表达
C数组另类表达刺猬@http://blog.youkuaiyun.com/littlehedgehog 直接来看代码:#define ACC_MODE(x) ("/000/004/002/006"[(x)&O_ACCMODE]) (摘自 Linux/fs/namei.c )这是个比较令人郁闷的宏,我初一看曾质疑过C里面有这种写法么?呵呵,说实话还真有,C里面数组还真有这样的写法,原创 2008-05-04 17:06:00 · 1485 阅读 · 0 评论 -
未雨绸缪——临界区中断处理
未雨绸缪——临界区中断处理刺猬@http://blog.youkuaiyun.com/littlehedgehog 为什么Linux 内核里面很多代码为了处理race condition(竞争条件),都加上了诸如cli sti这样的开关中断指令,这个问题貌似很不值得一提。在wait_on_buffer函数(如下代码所示)中,开关中断仅仅就是为了避免竞争条件和中断对临界代码的原创 2008-07-07 22:01:00 · 3872 阅读 · 9 评论