- 论坛徽章:
- 0
|
学习LINUX内核的教材--linux内核情景分析
既然是我的建议我先发一贴:
1.传统的UNIX在内核设置一个当前进程变量,LINUX不设置这样的变量,而是即用即算:
static inline struct task_struct * get_current(void)
{
struct task_struct * current;
__asm__("andl %%esp,%0;":"=r"(cureent):"0"(~8191UL));
return current;
}
#define current get_current()
我不同意该书的观点,因为get_current()是涵数,而且即使LINUX作优化,变成两条指令,而需要六个时钟周期,而从内存到寄存器的时钟周期只有四个.再加上保存到内存的时钟周器,也只有两个.基本上是持平.但是这个变量要是用N次的话,总的时间是2+N*4,而LINUX的算法时间是:6*N.
2.关于本书的线程问题:我觉得LINUX的task_struct的线程不是内核线程,而是相当于UW7,SALORIS的LWP,从应用的观点来看,应该是属于用户空间的,只是由内核管理,当然同纯用户线程(pthread)不是同一个概念.合适的称呼应该是内核支持的用户线程. |
|