[From 1.1~1.2]CLR的执行模型
程序集(assembly):
程序集是抽象概念
程序集是一个或多个模块/资源文件的逻辑性分组。其次,程序集是重用,安全性以及版本控制的最小单元。在CLR的世界中,程序集相当于“组件”。
公式表达:程序集 = 清单(manifest) + 托管模块(PE文件) + 资源文件(.jpeg,gif,html,数据文件等)
托管模块:
托管模块是标准的32位Microsoft Windows可移植执行体文件(PE32)或者是标准的64位Windows可移植执行体文件(PE32+),他们都需要CLR才能执行。
另:托管程序集总是利用Windows的数据执行保护(Data Excution Prevention,DEP)和地址空间布局随机化(Address Space Layout Randomization,ASLR),这两个功能旨在增强整个系统的安全性
公式表达:托管模块(PE文件) = PE32头或(PE32+)头 + CLR头 +元数据+IL(中间语言)代码
详细笔记: 托管PE文件的组成(from 2.3)
清单:清单是元数据表的集合。这些表描述了构成程序集的文件,程序集中的文件所实现的公开导除类型以及程序集关联的资源或数据文件。所以,当程序集没有资源文件时,他就相当于一个托管模块。
注:PE:Portable Executable(可移植执行体)