- 论坛徽章:
- 0
|
原帖由 snail_314 于 2009-6-9 12:37 发表
你说的"清空"和cucer_2的"清空"不一样,cucer_2说的"清空"是指针对kernel space的栈要不要回收这个意思,就是roll back栈指针的"清空".而估计你说的memset(0)这种清空一般是对栈进行一个初识话的清空,一般是在一个 ...
>>还有,kernel space是不能被抢占的,除了中断和自己主动让出cpu.而icer_2说的"抢占"这里指的是被另一个进程给抢占,所以可以说kernel不可抢占
还是那个建议,看书。不然翻精华帖也可以。
>>你说的"清空"和cucer_2的"清空"不一样,cucer_2说的"清空"是指针对kernel space的栈要不要回收这个意思,就是roll back栈指针的"清空".而估计你说的memset(0)这种清空一般是对栈进行一个初识话的清空,一般是在一个函数的>>开始而不是结束.
“roll back栈指针”,如果你们把这个理解为“清空”的话,那你们对x86下进程切换栈指针寄存器esp的值是从哪里来,怎么来的还不清楚。不会roll back栈指针,所有运行在x86上的操作系统都不会roll back栈指针,因为这是个多余的操作。可以参考ULK之类的内核书籍看看内核栈切换的过程,看了后这个问题就清楚了。
“清空”,特别是在涉及到内核页面时,指的就是用类似memset方法把物理页面清0。这多是出于安全目的的考虑。所以“清空”和栈指针的变化没有关系。
[ 本帖最后由 zx_wing 于 2009-6-9 12:53 编辑 ] |
|