【问题标题】:Understanding Memory Layouts of an Interpreter (JVM/JS)理解解释器的内存布局 (JVM/JS)
【发布时间】:2018-04-28 13:43:39
【问题描述】:

我试图了解操作系统级别的进程的内存布局,我们已经习惯了这个图表。

忘记图中的多线程部分,但现在出于一般目的,我们假设上图中显示的“代码”块是我们程序的二进制指令。这假设代码已经编译为现在可以以二进制形式使用。但是解释语言呢?由 JVM 解释器执行的字节码。当我在这里选择 JVM 解释器时,我的问题是针对任何解释语言,以及它如何适合上图。我的理解是解释器本身是一个程序,因此必须位于上图所示的代码块中,如果是 Java,则 .class 程序或在 Javascript 解释器的情况下是 .js 文件是“论据”,因此说这个解释器致力于将它们翻译成操作系统/机器可理解的代码,然后执行。询问您对此的看法。

【问题讨论】:

    标签: memory memory-management operating-system interpreter memory-layout


    【解决方案1】:

    您是否会考虑字节码“代码”是一个角度问题。术语有点模糊。

    图中的“代码”是本机可执行代码,即您的解释器。就 CPU 和操作系统而言,这是唯一可以运行的代码。对于操作系统来说,被解释的字节码只是实际的本机代码操作的数据。

    在这种情况下,数据恰好是一种指令形式,也是 CPU 不知道也不关心的细节。

    【讨论】:

    • 这正是我的理解。所以在解释过程中,CPU 不知道本机代码(解释器代码)正在处理数据,而该数据是另一组指令是正在解释的程序。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 2013-10-13
    • 2016-04-11
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多