代码改变世界

一线开发读CLR --- 第一章:CLR的执行模型

2013-02-25 10:31  秋日愚夫  阅读(214)  评论(2编辑  收藏  举报

 
CLR的执行单位是程序集(Assembly)。其是由一个或多个托管模块(编译后扩展为 .netModule 文件)组成。
一个托管模块由PE头,CLR头,元数据,IL组成。 元数据的存在使期有了自描述的特性,使得在开发过程中可以使用智能感知,也使得程序的运行尽可能的摆脱了注册表。
 
 
加载CLR
1,windows 检查 程序集 的PE头,决定用哪个版本的.NET,在进程里加载MSCoreEE.dll ,并执行某个方法运行CLR。
2,将程序集加载,执行其入口方法Main。
 
执行程序集的过程:
1,完成方法的前置操作。如果是第一次执行,则将当前方法内部需要用到的方法等进行即时编译成本机CPU指令。
2 、执行方法。
 
CTS(通用类型系统)的理解
C#,VB等托管语言都是其具体的一个实现。他只是一个规范,接口而已。也可以自己去实现这个规范。
C#是用internal实现assembly的。其约束的被修饰的方法只能在程序集内使用。
protected实现的family。
 
CLS(公共语言规范)的理解
是所的托管语言的最小公共子集。
如果希望定义的类对外“可见”,能够让任何一种符合CLS的编程语言中访问,就必须遵守CLS。
 
IL的理解
IL是由若干 字段及方法 构成的。属性,事件等在IL中,都将拆分成字段及方法。可以把他们理解成语法糖。