第一章、 CLR的执行模型

1. 概述

   本章主要是介绍从源代码到可执行程序的过程中,CLR所做的工作。

2. 名词解释

  ① 公共语言运行时(Common Language Runtime, CLR),是一个可由多种语言使用的 运行时,核心功能(内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。

  ② PE32:32位 Microsoft Windows 可移植执行体。

      PE32+:64位 Microsoft Windows 可移植执行体。

  ③ 元数据 是一组数据表,这些数据表描述了 模块中定义的内容 或者 托管模块引用的内容。

  ④ 托管模块 是一个标准的PE32或者PE32+文件,他们都需要CLR才能执行。由 PE32(+)头、CLR头、元数据 及 IL中间代码 组成。

  ⑤ 程序集 是一个或多个模块/资源文件的逻辑性分组,是重用、安全性以及版本控制的最小单元。

  ⑥ 清单(manifest) 是由 元数据表 构成的另一种集合,描述了构成程序集的文件。

  ⑦ 本地代码生成器(NGen.exe),将IL代码编译成本地代码。

  ⑧ Framework类库(FCL),Microsoft发布的一组DLL程序集的统称。

  ⑨ 通用类型系统(Common Type System, CTS):Microsoft制定的,描述类型定义和行为的规范。

  ⑩ 公共语言规范(Common Language Specification, CLS): 定义了一个最小功能集。任何编译器生成的类型要想兼容于由其他“符合CLS、面向CLR“的语言所生成的组件,就必须支持这个功能集。

3. 执行过程

  ① 将源代码编译成托管模块。

  ② 将托管模块合并成程序集。(程序集链接器AL.exe)

  ③ 加载公共语言运行时。

  ④ 执行程序集的代码。

    CLR的JIT(just-in-time)编译器将IL转换成本地cpu指令。

    一次编译,多次运行。期间进行代码优化。

  ⑤ 与非托管代码的互操作性。

4. 总结

  介绍CLR相关的各个部分,概述CLR的执行逻辑。

原文地址:https://www.cnblogs.com/stone_lv/p/4288343.html