易截截图软件、单文件、免安装、纯绿色、仅160KB

请问linux中的堆栈

请问linux中的堆栈是怎么样的?为什么我在书上看到这个?
kernel/fork.c,92行:

    p->tss.esp0 = PAGE_SIZE + (long)p;

    p->tss.ss0 = 0x10;

其中,p是新任务的任务数据结构指针,tss是任务状态段结构

为什么esp在 高地址,而ss=0x10=00010 0 00
我没找到 gdt的0x10,不过我在别的书上看到gdt 0x10 是kernel——cs
即开始于0位置?如果这样,那堆栈不是 成了向上延伸的了?
小弟初学,希望各位大哥不吝赐教

内核对进程有自己的内核模式栈,tss.esp0会在用户模式切换到内核模式时得到内核栈的位置。
对ss0,我的理解是内核基本不用段的概念,所以内核CS和DS段的起止位置是一样的。所以其实ss0的含义是DS段。
你看的代码是2.4的?2.6后期的内核DS和CS似乎是从0x0开始的

这个代码应该是linux0.11的吧?内核栈和进程struct还在一页以内呢,2.4以后的都是占用两页了
p->tss.esp0 = PAGE_SIZE + (long)p; 设置内核的堆栈在这一页的末端,然后向下生长


相关问答:

linux环境下gethostbyname函数问题 - C/C++ / C语言

写了个测试程序如下
   
  struct hostent *hp; 
char AlarmDevIP[20];  
  int x2;

hp = gethostbyname("www.google.com");
if (hp)
{ ......

嵌入式Linux缩减问题

大家好,本人目前刚刚接触Linux。现在公司的项目需要缩减Linux的Kernel和APP部分的Code Size。目前我们使用的是Linux2.6.22.15版本,应用于ADSL Modem(家庭网关)。

1.我们产品应用是ADSL Gateway,Kernel部 ......

Linux 目录问题

Linux新手,请大哥大姐不要见笑。

我用root用户登录到Linux系统。在根目录下面建了目录dir1,后用命令cd /dir1进入到dir1目录下,然后再用mkdir dir2建立了目录dir2 ,再后来用命令cd /dir2是,提示为:-bush ......

有关linux安装脚本kickstart的编写

我之前制作的linux自动安装iso已经成功了,现在想对其进行一些定制修改,比如,更改grub图片等。
我在ks.cfg的%post段里面是这样写的:
%post --nochroot
# Move the contents of the tar into their new locati ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号