日期:2014-05-16  浏览次数:20680 次

LINUX-0.11 fork()问题??
小弟在学习0.11 看到了 fork.c 有个问题想不明白 
C/C++ code

fork.c-->int copy_process(.....)函数中
p = (struct task_struct *) get_free_page ();
...........................
p->tss.esp0 = PAGE_SIZE + (long) p;    // 堆栈指针(由于是给任务结构p 分配了1 页
                                    // 新内存,所以此时esp0 正好指向该页顶端)。
p->tss.ss0 = 0x10;        // 堆栈段选择符(内核数据段)[??]。



那第二句为什么要指向系统的数据段呢 想不明白 他自己有空间(分了一页) 为什么不指向自己的空间呢?

我看了网上的一个注解 也不太明白 



我也把这个图片放到我空间相册里了(200.JPG),因为这里总看不到图 

谢谢你的回复!!!

------解决方案--------------------
1、赵博不是有个论坛吗?0.11和0.12的 好像叫oldLinux论坛 
2、看看 Linux内核设计与实现,这本书入门简单点