对不起,简单的问题,但在谈到操作系统理论时,这总是让我感到困惑。
我的书声称通过使用“堆栈”可以实现重入 - 这是否意味着有一个'堆栈'并且它以某种方式在所有例程之间共享,或者“堆栈”是指抽象概念每次调用某个子程序时,堆栈是否都会创建并存储在主存储器中? (假设需要)。
在这种情况下,CPU中的堆栈指针怎么样?在这两种情况下,它的功能如何?
对于我的描述含糊不清的道歉,整个想法只是为我提供了相互矛盾的想法!
答案 0 :(得分:2)
这是特定于平台的(取决于使用的硬件和软件)。
x86 / x64上的Windows有一个内存,可以为每个线程准备好系统堆栈。它可以在该线程中进行系统调用时重复使用。
当多个独立进程或线程可以一次调用系统例程时,系统是可重入的。在这种情况下,每个线程都使用自己的系统堆栈。系统堆栈(技术上为0堆栈)独立于用户模式(环3)堆栈。
我还可以提供更多信息,只要询问您是否希望了解更具体的信息。
堆栈指针: