我知道内核空间是操作系统核心执行和提供服务的内存部分,而用户空间是用户程序运行的地方。我还知道一个进程在其地址空间中有自己的堆栈、堆、数据和文本部分。但我对user stack和kernel stack的概念感到困惑。我的问题是:
- 我之前提到的进程栈是由用户栈和内核栈组成的吗?
- 内核堆栈是内核空间的一部分吗?
- 两个堆栈是否在进程的虚拟内存地址中分开?
- 代码段中:
void main(){user_mode_call(); system_call()}
两次调用的栈帧是否分别驻留在用户栈和内核栈中?
感谢您的宝贵时间,任何相关的文献和链接也会有所帮助!
(我的问题可能很幼稚,但一旦我知道如何以更专业的方式提出它们,我会继续更新它们)