- 主题:为什么要专门有内核栈呢?内核直接使用进程的用户栈不可以吗?
反正内核能访问所有的用户空间?
--
FROM 120.245.118.*
至少不会被用户态其他线程写飞吧, 而且内核空间地址只有一个, 总不能读写栈时用进程地址空间或地址变换到该进程地址空间, 访问其他的又使用内核自己的地址空间, 这种分裂的事情在入口处做一次就好
--
修改:zylthinking2 FROM 114.246.99.*
FROM 114.246.99.*
那再问一个,进程的所有线程,是不是都可以随意访问到本进程内别的线程的栈空间?
【 在 zylthinking2 的大作中提到: 】
: 至少不会被用户态其他线程写飞吧, 而且内核空间地址只有一个, 总不能读写栈时用进程地址空间或地址变换到该进程地址空间, 访问其他的又使用内核自己的地址空间, 这种分裂的事情在入口处做一次就好
--
FROM 107.182.31.*
这是常识啊
【 在 wjhtingerx 的大作中提到: 】
: 那再问一个,进程的所有线程,是不是都可以随意访问到本进程内别的线程的栈空间?
:
--
FROM 223.104.38.*
【 在 wjhtingerx 的大作中提到: 】
: 反正内核能访问所有的用户空间?
内核的虚拟地址空间有更高的优先级和安全级别,
换句话说,你在用户空间, 虚拟地址换页中断,缺页中断之类的都可以打断执行。
一个好处就是, 用户的虚拟地址纯粹是虚的,如果你在内核里面运行,
有可能这种高优先级直接高过了缺页中断服务, 那么用户空间这种虚拟的访问,
则要出问题。
--
FROM 124.126.2.*
一个词:isolation
--
FROM 114.240.244.*
同一个进程知道地址就可以访问,但是一般避免跨线程传递栈地址
【 在 wjhtingerx 的大作中提到: 】
: 那再问一个,进程的所有线程,是不是都可以随意访问到本进程内别的线程的栈空间?
发自「快看水母 于 SM-S9010」
--
FROM 114.254.0.*
上一贴回答了,知道地址可以访问。
但是不同线程的栈指针应该是来回切的。
除非故意把一个线程的栈指针(或者栈内的某个局部变量地址)传给另外的线程。
我没想出来这么做在什么场景下有好处。
【 在 wjhtingerx 的大作中提到: 】
: 那再问一个,进程的所有线程,是不是都可以随意访问到本进程内别的线程的栈空间?
:
--
FROM 59.66.113.*
高效,减少内存复制的cpu消耗。如果是性能的核心瓶颈,这么做就值的。
【 在 ameng 的大作中提到: 】
:
: 上一贴回答了,知道地址可以访问。
: 但是不同线程的栈指针应该是来回切的。
: 除非故意把一个线程的栈指针(或者栈内的某个局部变量地址)传给另外的线程。
: 我没想出来这么做在什么场景下有好处。
#发自zSMTH@如有雷同 纯属巧合
--
FROM 123.122.163.*