请问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 安全性高,只是因为用的人少,所以那些黑客不愿意去攻击,所以病毒之类的就少,是不是这样?而且linux是开源的,攻击起来 比较容易所以 懒的去攻击
这种说法对么
linux 怎么就安全高 ......
现在我有两台机 一个在家 一个在学校 在学校的那台机子不能上网 我把家里的那台机子更新到最新了 然后把 /var/cache/apt/archives 下的所有Deb包复制到学校那台没联网的机子上了&nbs ......
一直用svn来做资源的管理,
现在发现windows下取svn 要10个小时左右(资源大约有20G,全是小文件)
linux下取仅用40分钟,
请问linux的文件系统在哪儿比windows文件系统强力?
svn 可够慢的。
在 ......