📜  公共语言运行时(CLR)的体系结构

📅  最后修改于: 2021-05-29 23:20:31             🧑  作者: Mango

.NET Framework中的公共语言运行时是虚拟机组件,它处理各种语言(例如C#,F#,Visual Basic .NET等)的程序执行。通过提供各种服务(如内存管理,安全性)来提供托管执行环境。处理,异常处理,垃圾回收,线程管理等。
公共语言运行时实现了VES(虚拟执行系统),这是一个运行时系统,提供托管代码执行环境。 VES是在Microsoft的CLI(通用语言基础结构)的实现中定义的。

通用语言运行时的体系结构

给出了演示公共语言运行时体系结构的图表,如下所示:

公共语言运行时体系结构中包含多个组件。有关这些的详细信息如下:

  • 基类库支持:公共语言运行库提供对基类库的支持。 BCL包含多个库,这些库为多种.NET编程语言提供各种功能,例如CollectionsI / OXMLDataType定义等。
  • 线程支持: CLR提供线程支持,用于管理多个线程的并行执行。 System.Threading类用作此的基类。
  • COM Marshaller:使用COM Marshaller提供与.NET应用程序中的COM(组件对象模型)组件的通信。这提供了COM互操作性支持。
  • 类型检查器:类型检查器通过使用CLR中提供的通用类型系统(CTS)和通用语言规范(CLS)来验证应用程序中使用的类型,从而提供类型安全性。
  • 异常管理器: CLR中的异常管理器处理异常,而不管创建它们的.NET语言如何。对于特定的应用程序,如果发生异常,则执行异常的catch块;如果没有catch块,则终止该应用程序。
  • 安全引擎: CLR中的安全引擎处理各种级别的安全权限,例如代码级别,文件夹级别和计算机级别。这是使用.NET框架中提供的各种工具完成的。
  • 调试引擎:可以在运行时使用调试引擎对应用程序进行调试。有各种ICorDebug接口,用于跟踪正在调试的应用程序的托管代码。
  • JIT编译器: CLR中的JIT编译器将Microsoft中间语言(MSIL)转换为特定于JIT编译器运行所在的计算机环境的机器代码。存储已编译的MSIL,以便在需要时可用于后续调用。
  • 代码管理器: CLR中的代码管理器管理在.NET框架中开发的代码,即托管代码。通过特定于语言的编译器将托管代码转换为中间语言,然后通过即时(JIT)编译器将中间语言转换为机器代码。
  • 垃圾收集器:使用CLR中的垃圾收集器可以实现自动内存管理。不再需要时,垃圾收集器会自动释放内存空间,以便可以对其进行重新分配。
  • CLR加载程序:CLR加载程序加载了各种模块,资源,程序集等。另外,如果实际需要模块,此加载程序将按需加载模块,以使程序初始化时间更快,而消耗的资源更少。