【发布时间】:2013-01-20 10:36:47
【问题描述】:
我找到了这个链接:
one quick question about stack of thread and process
我理解为什么线程有单独的堆栈,但我读到进程可能有两个堆栈。为什么是这样?会不会是因为我们统计了进程栈+线程栈?
【问题讨论】:
-
您从哪里了解到一个进程有两个堆栈?进程的堆栈数与线程数相同。
-
@joachim。它在我的一个课程中得到的一些教程材料中提到,但我不完全理解原因,是什么意思,所以我在看到另一个问题后在这里问。
-
@dexter Joachim 是对的:进程只是线程的容器,线程有一个堆栈。还是您指的是特定的特定案例、操作系统或架构?
-
某些 CPU 可能以两种模式之一运行:用户模式和超级用户模式。 supervisor模式基本上只针对中断(软件或硬件),每种模式都有单独的堆栈。然而,它仍然是每个执行线程。更复杂的是,许多旧操作系统(以及许多现代嵌入式操作系统)没有“线程”只有进程。但在这些情况下,您可以将每个进程视为单个线程,这意味着每个线程仍有一个(或两个取决于 CPU)堆栈。
-
对于这样一个奇怪的陈述,唯一可能的解释是它实际上意味着 heap 而不是堆栈。堆由进程而不是线程拥有。而且 Windows 程序确实通常至少有两个堆。
标签: multithreading process stack