LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3078|回复: 10

弱弱的问: 为什么要分内核栈和用户栈?

[复制链接]
发表于 2006-3-16 16:41:39 | 显示全部楼层 |阅读模式
1. 为什么要分内核栈和用户栈? 不能用一个么?
2. 为什么内核栈的大小是有限的,固定的?

谢谢!
发表于 2006-3-16 17:52:57 | 显示全部楼层
我觉得这样做逻辑清晰,两个栈各有各的用处,而且是同一时间两个栈中都是有数据的,你怎么把他们堆到一起?内核空间只有3~4G这一块地址空间,而且有一些固定的开销,然后所有的进程的内核栈都在这里面,这就决定了栈的大小不能太大;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-16 18:05:58 | 显示全部楼层
to xieweiyi:
1. 内核栈和用户栈不可能同时使用吧?  多个处理器的不知道.
2. 我听说, 只要是32位的,内核栈就是8K;64位的,内核栈就是16K. 跟内核虚拟地址空间在3-4G没什么关系吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-16 18:06:03 | 显示全部楼层
to xieweiyi:
1. 内核栈和用户栈不可能同时使用吧?  多个处理器的不知道.
2. 我听说, 只要是32位的,内核栈就是8K;64位的,内核栈就是16K. 跟内核虚拟地址空间在3-4G没什么关系吧?
回复 支持 反对

使用道具 举报

发表于 2006-3-16 22:40:06 | 显示全部楼层
为什么说 linux 稳定,两个堆栈分开是原因之一。当应用程序崩溃时不会影响到系统内核。

Post by pavin

2. 为什么内核栈的大小是有限的,固定的?
谢谢!


没研究过内核,不知道为什么。不过这也有点儿烦,比如 ndiswrapper 驱动有时会引起内核栈溢出。ndiswrapper 的开发者也解决不了这个问题。
回复 支持 反对

使用道具 举报

发表于 2006-3-17 09:40:09 | 显示全部楼层
1 硬件要求必须
别忘了,内核的代码和数据实际上是对所有进程共享的,如果不为每个进程保留
对应的内核栈,内核就没法为不同的进程执行不同的代码。
2 安全
如果用户栈和内核栈共享,用户就可以修改栈内容来突破内核安全保护。
回复 支持 反对

使用道具 举报

发表于 2006-3-17 10:43:57 | 显示全部楼层
to pavin:
我是说两个栈里面同时有数据,而且是有效的数据,你不能因为一个去破坏另外一个
虚拟地址空间,我只是想说内核的很有限,64位的虚拟地址空间是多大?

to 刻苦猫:
应该为每个进程保留栈,但是这个栈我觉得放在用户空间也是可以实现的,简单的说
现在的内核栈底为了节省空间,并没有存放整个task_struct而是放置了一个指针,
那么我们只要把一些必要的信息存放在内核空间,而运行时的堆栈放在用户空间,应该
也是可行的;
安全是一个不错的理由,我觉得这是关键;
回复 支持 反对

使用道具 举报

发表于 2006-3-17 11:09:35 | 显示全部楼层
Post by xieweiyi

to 刻苦猫:
应该为每个进程保留栈,但是这个栈我觉得放在用户空间也是可以实现的,

应用程序的栈本来就在用户空间,不是吗?
回复 支持 反对

使用道具 举报

发表于 2006-3-17 15:26:27 | 显示全部楼层
Post by xieweiyi

应该为每个进程保留栈,但是这个栈我觉得放在用户空间也是可以实现的,简单的说
现在的内核栈底为了节省空间,并没有存放整个task_struct而是放置了一个指针,
那么我们只要把一些必要的信息存放在内核空间,而运行时的堆栈放在用户空间,应该
也是可行的;
安全是一个不错的理由,我觉得这是关键;


如果用户栈和内核栈在一块,马上下面两个非常严重的问题会出现
1 本地线程,内核要保存额外的信息来判断切换线程后使用那个线程栈,与其如此
    ,还不如直接用内核栈,因为内核栈本来与本地线程就是1,1对应的。
2 内核抢占, 内核抢占要么放弃,要么就非常沉重,因为不论抢占是否需要执行,
    内核都要切换页表,为了一句if切换整个地址空间太累了。
回复 支持 反对

使用道具 举报

发表于 2006-3-18 00:02:43 | 显示全部楼层
纵观所有的操作系统大致可以非常单栈内核和双栈内核。单栈内核有单栈内核的好处,一个常见的嵌入式实时操作系统使用的就是单栈内核,我们公司将Linux移植到一个没有MMU的CPU上,就将Linux更改成单栈内核,这是出于对整个系统可靠性和实时性的考虑。现在它工作非常正常,当然双栈内核也有其好处。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表