CLR执行模型与常见的几个概念
2013-08-14 23:48
274 查看
一、CLR执行模型
1.1从代码到程序集
CLR执行的模型是从代码开始,经过编译器生成托管模块,默认情况下可以让多个托管模块和资源生成程序集。下图为其大致过程。1.2执行程序集
当系统运行托管模块时会检查文件头,判断启用一个32位的进程还是64位的,然后会在其进程中加载对应的MsCorEE.dll,里面有个初始化CLR的一个方法,初始完CLR,加载程序集,进入程序入口方法。在执行Main方法之前,为了能让电脑运行程序,CLR必须让IL程序集转化成指令。首先CLR会建立一个内部的数据结构,用于管理IL方法对CLR的访问,如果函数是第一次对其CLR的访问,那么对应的JIT会让程序集的对应的IL方法通过CLR转化成了指令,然后JIT把指令的地址告诉指向自己的方法,以便以后IL方法可以直接指到电脑上的指令,从而减少像第一次的通过JIT得到指令的过程。大致的图如下当应用程序终止时,再次启动还需要jit的转化过程。
二、CLR常见的几个概念
下面主要介绍几个与CLR有关的常见概念:主要包括程序集,托管模块,CLR,FCL,CLS,CTS。2.1托管模块:主要由PE32(+)头,CLR头,元数据,IL代码组成
其中PE32(+)头主要标模块的文件类型,生成时间等。还包括了与cpu代码中的信息,如生成代码时适用于32还是64的cpu以及任何的cpu。CLR头主要包含了需要的CLR版本,托管程序入口的方法(Main方法)MethodDef元数据标识,以及自身的元数据、资源、强名称等。
元数据主要包括托管模块的元数据表,主要是自身的类型定义信息,引用类型信息,如果是一个是单独程序集,还包括程序集的信息,下一篇会着重介绍。
IL代码当源代码通过编译后,就会生成IL代码。IL代码通过CLR中的JIT才能转化成CPU指令。
2.2程序集
程序集:可能是多个托管模块和资源组成,当然也可以是单个模块组成。其他的几个就用下面的比喻类解释
菜谱:它是基于通用语言基础架构(Common Language Infrastructure,CLI)。它就像一本江湖上失传已久的菜谱。
厨师:通用语言运行平台(Common Language Runtime,CLR),是对CLI这个架构在Windows平台的实现。简单地理解就是CLR这个厨师,让CLI这本菜谱发挥了其真正的作用。
下面我们来尝尝这些佳肴:
食物:类库(Framework Class Library,FCL),所有在.NET能够使用的类库。分为两部分,一部分为原料,另一部分为成品菜。
原料:基类库Base Class Library(BCL),顾名思义,其中包含一些基础的类,如:IO,String,Net等等。它们是做菜所必需的原料,当然也可以直接吃。
成品菜:FCL中的其他类。这些类库基本上都是引用BCL,在这些类库的基础上做的扩充。如:ADO.NET,ASP.NET,Windows.Forms等等,它们是我们编写程序更加方便,专一。
餐具:公共语言规范Common Language Specification (CLS) 和公共类型系统Common Type System (CTS) ,是CLI的一部分内容,它们的目的是保证各种语言与.NET Framework的兼容性的。就好像有的食客习惯用筷子,有的则喜欢用叉子,像八戒就用九齿钉耙。有了CLS和CTS,各路食客就能使用自己喜欢用的餐具吃上可口的食物了。例如:把C#中的int和VB中的Integer统一映射到System.Int32。
食客:各种语言,C#,VB,等等。
三、总结
C#项目->编译成->程序集(IL)——>CLR中的及时语言编辑器->为cup的指令。本文主要介绍了CLR执行模型和常用的几个概念。希望能从总体上认识一下.net。菜鸟如果有不对的地方,希望大家多多指教!
四、参考资料
/article/5075066.html《CLR via C#》
/article/4671557.html
相关文章推荐
- CLR执行模型与常见的几个概念
- 【.NET 学习笔记】Chapter.01 CLR的执行模型
- 一点一点学ASP.NET之基础概念——HTTP运行期与页面执行模型
- [CLR via C#读后整理]-1.CLR的执行模型
- 深度学习中常见的几个基础概念
- DB2中更新执行计划的几个常见的方法
- 01.由浅入深学习.NET CLR 基础系列之CLR 的执行模型
- CLR via C# 3 读书笔记(8):第1章 CLR执行模型 — 1.8 通用语言规范
- IM模型的几个概念
- CLR_Via_C#学习笔记之CLR的执行模型
- 第一章 CLR 的执行模型
- 第一章 CLR的执行模型
- 密码学常见基本概念-序列密码的概念及模型
- 《CLR via C#》读书笔记1 之 CLR的执行模型
- 从头学起-CLR的执行模型
- CLR 的执行模型(2)
- 《CLR via C#》笔记——CLR的执行模型
- CLR的执行模型
- CLR via C# 3 读书笔记(1):第1章 CLR执行模型 — 1.1 将源代码编译为托管模块
- 机器学习中的几个常见概念(持续更新中......)