对不起,这是一个简单的问题,但当我谈到操作系统理论时,这个问题总是让我感到困惑。
我的书声称,通过使用“栈”,可重入性成为可能--这是否意味着存在一个“栈”,它以某种方式在所有例程之间共享,或者“栈”指的是栈的抽象概念,每次调用某个子例程时,都会创建一个栈并将其存储在主内存中?(假设需要)。
在这种情况下,CPU中的堆栈指针又如何呢?在这两种情况下,这是如何发挥作用的?
很抱歉我的描述含糊不清,整个想法对我来说只是一种相互矛盾的想法!
发布于 2011-02-05 22:44:29
这是特定于平台的(取决于所使用的硬件和软件)。
x86/x64上的Windows为每个线程准备了一个用于系统堆栈的内存。每当您在该线程中执行系统调用时,它都会被重用。
当多个独立的进程或线程可以同时调用系统例程时,系统是可重入的。在这种情况下,每个线程都使用自己的系统堆栈。系统堆栈(技术上是环0堆栈)独立于用户模式(环3)堆栈。
我也可以提供更多的信息,只要问你是否想知道更具体的事情。
堆栈指针:
https://stackoverflow.com/questions/4907423
复制相似问题