首页
社区
课程
招聘
[求助]各个线程的内核栈是共享的还是分开的?
发表于: 2011-2-25 12:32 6056

[求助]各个线程的内核栈是共享的还是分开的?

2011-2-25 12:32
6056
驱动模块属于系统模块,在每个进程的高2GB空间内。
每次某个进程进行到相应的驱动调用,就切换了堆栈,进入到该进程的内核栈。
这样驱动中涉及的局部变量都存到了该内核栈上。
假设此时进行了线程切换,切换了线程,那么另一个线程的内核栈与此内核栈是共享的么?

我感觉应该不是。。。都使用一个物理内存,线程切换时页表必然切换了,内核栈地址的映射部分应该也是改变了吧?
我现在有点混乱,内核的空间映射和用户态的空间映射是一张页表维护的吧?内核模块应该是被固定加载在一块内存的,而该内存被同时映射到各个进程中。。
请教。。。。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 230
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
内核模块应该是被固定加载在一块内存的,而该内存被同时映射到各个进程中。

答案你都说出来了。

映射到a线程,加载到a线程分配空间
映射到b线程,加载到b线程分配空间
发生改变也是a线程分配空间。
2011-2-25 12:55
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
1、NT内核为保持移植性,并非完全充分利用X86保护模式的机制。所以,不要搞混了。
2、关于你要的细节,参考WRK和NT SRC的如下相关代码即可,花不了1个小时。这里能回答你问题的人基本上都没空或者懒得回答你。
2011-2-26 11:51
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
1、NT内核为保持移植性,并非完全充分利用X86保护模式的机制。所以,不要搞混了。
2、关于你要的细节,参考WRK和NT SRC的如下相关代码即可,花不了1个小时。这里能回答你问题的人基本上都没空或者懒得回答你。
2011-2-26 11:52
0
游客
登录 | 注册 方可回帖
返回
//