首页 > 代码库 > CLR执行模型
CLR执行模型
- 经过编译后,程序变为托管模块(=IL+元数据(描述数据信息)).
- 托管模块需要CLR才能运行.
- 然后,将若干个托管模块合并成Assembly.
- 若干个文件/资源的逻辑分组.
- 最小的可重用控制单元.
- 其含有清单来描述其含有的文件集.所以具有自描述性.
- 加载CLR:在\System32下有MSCoreEE.dll说明已经安装.
- 首次执行一方法:在执行Main之前,CLR创建一个内部DS来保存Code所引用的Type.调用方法时JIT Complier将IL编译为本地指令(在AM的元数据中收索方法IL,验证,变为本地CPU指令).并保存于动态内存中,把DS的引用换为内存块(方法的实现的地址),第二次,直接执行内存中的Code.再次执行,或一次创建两个APP实例,会再次JIT Complier.
- CLR直接与Assembly交互.先加载含清单的元数据文件之后,再利用清单加载Assembly中的其他文件.
清单的元数据:
定义表:ModuleDef,TypeDef,MethodDef,FieldDef,ParamDef,EventDef
引用表:AssemblyRef,ModuleRef,TypeRef,MemberRef.
清单表:AssemblyDef,FileDef,ManifestResourceDef,ExportedTypesDef.
- Assembly
- 两种部署模式
- 私有部署.部署到程序集目录或其一个子目录中.
- 全局部署.部署到一些已知位置上.
- 当Assembly需要被各个APP之间共享时,放在GAC中(WinRoot\Assembly).但是弱命名Assembly不可以.
- 安装Framework时,会安装同一程序集的两个副本.在/CLR目录(便于生成AM);在GAC(便于运行时加载).
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。