linux中,每个进程的内核栈,在内核空间中是如何存放的?

如题,有些地方不太明白。
linux中每个进程的内核栈是8 KB,但为什么说所有进程共享内核空间,每个进程的内核栈与整个内核空间有什么关系?
感谢!!

阅读 3.4k
1 个回答

每个进程的内核栈是独立的,存放在每个task上,记录该进程陷入内核时的内核栈,但它们在地址空间上是共享的!

打个比方 进程A的内核栈(虚拟或物理)地址 0x4000 - 0x6000,进程B的内核栈(虚拟或物理) 0x8000 - 0x10000

它们是不重叠的!

用户栈就不一样的,它们的用户栈 虚拟地址空间完全可以是重叠的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题