【问题标题】:Why is the Common Language Runtime a virtual machine?为什么公共语言运行时是虚拟机?
【发布时间】:2016-11-24 10:04:25
【问题描述】:

在研究 C# 时,我在Wikipedia 上看到了以下声明:

公共语言运行时 (CLR) 是 Microsoft .NET 框架的虚拟机组件,用于管理 .NET 程序的执行。

这可能是一个新手问题,但据我所知,虚拟机只是操作系统的模拟。为什么 CLR 被视为虚拟机?

【问题讨论】:

  • VM 意味着太多东西。也许将其视为一个虚拟处理器会有所帮助,它可以执行一种称为 MSIL 的汇编语言,并且不需要像真正的处理器那样手动管理内存。

标签: c# virtual-machine clr


【解决方案1】:

您对此感到有些困惑是正确的。术语虚拟机可以有不同的含义,有时用于指代硬件设置的仿真。正如您所说,它们通常用于在一台机器上运行多个操作系统。

然而,令人困惑的是,虚拟机一词也指负责在运行时将字节码(人工的、更便携的机器指令)翻译成真正的本机机器码的软件。此外,它们还负责管理程序的运行时(例如通过自动释放内存,无需程序员参与,这称为垃圾回收)。

公共语言运行时是后一种意义上的虚拟机。

CLR 类似于 JVM(Java 虚拟机)。 JVM 是用于运行 Java 程序的虚拟机。 .Net 程序集(Dll 和 Exes)不直接由操作系统执行,而是由称为 CLR 的中间层执行,它将 .NET 程序集转换为本机可执行代码。这种架构的优点是 .NET 程序不需要为不同的操作系统(Linux、Unix)重新编译,如果在该操作系统上安装了虚拟机,那么 .NET 程序应该像它一样运行(在 Windows 上构建例子)。 .NET 的另一个虚拟机是 Mono。这是单声道:http://www.mono-project.com/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多