认识.NET平台(二)CLR公共语言运行时

一、程序集

  1. 程序集从上到下包含PE/COFF头、CLR头、清单、元数据、CIL代码、资源文件。
  2. 符合PE/COFF(windows可移植可执行/通用对象文件格式)的文件才是Windows可执行文件。Windows操作系统通过理解PE/COFF文件的格式能够加载并运行.dll和.exe。所有在windows操作系统上运行的程序都需要符合PE/COFF这个格式。PE/COFF头包含了供操作系统查看和利用的信息。
  3. CIL语言代码还需要在CLR环境中进行即时编译后才能给计算机直接执行。CLR头最重要的作用之一就是告诉操作系统这个PE/COFF文件是一个.NET程序集。
  4. 可以理解为CLR是一个软件层或者代理,它管理了.NET程序集的执行,主要包括:管理应用程序域、加载和运行程序集、安全检查、将CIL代码即时编译为机器代码、异常处理、对象析构和垃圾回收等。CLR也叫VES(虚拟执行系统),类似于java虚拟机
  5. 清单相当于一个目录,描述程序集本身的信息。
  6. 元数据描述程序集包含的内容:程序集包含的模块、类型、类型的成员、类型和类型成员的可见性。不包含类型的实现。元数据类似于C++的.h文件。查看元数据的过程就叫反射。
  7. CIL代码,包括方法体、字段等,类似于C++中的.cpp文件。
  8. 资源文件,例如.jpg文件。

二、运行程序集

  1. 操作系统在尝试打开一个托管程序集时,首先会检查PE头,根据PE头来创建合适的进程。
  2. 接下来进一步检查CLR头,如果存在,就会立即载入MsCorEE.dll。
  3. 加载MsCoreEE.dll之后,会调用其中的_CorExeMain()函数,该函数会加载合适版本的CLR。
posted @ 2018-05-09 09:03  liu_xh  阅读(244)  评论(0编辑  收藏  举报