CLR执行模型《CLR via c#》第一章

这是我看《CLR via c#》第四版的一些小笔记和总结,如有不对的地方,欢迎指出。

《CLR via c#》第一章CLR的执行模型讲的是如何将源代码生成为一个应用程序,或者生成为一组可重新分发的组件(文件)- 这些组件(文件)包含类型(类和结构等),解释了应用程序如何执行。

CLR(common language runtime ,公共语言运行时),顾名思义,它是一个可以支持多种语言的“运行时”。

通常我们c#程序的执行过程是

CLR的JIT(即时编译器)把IL代码编译成机器指令。

NGen.exe工具将程序集的IL代码编译成本机代码,并将这些代码保存到一个磁盘中。在运行加载程序集时,CLR自动判断是否存在运行该程序集的预编译版本。使用NGen.exe工具虽然表面性能比较好,但因为它没有像JIT一样优化代码,所以在选择使用时,应该注意。

CTS(common type system ,通用类型系统)是用来描述类型的定义和行为。CTS是定义类的一种规范,它规定了一个类型可以包含零个或者多个成员,同时还指定了类型可见性规则以及类型成员的访问规则,除此之外,CTS还为类型继承,虚方法,对象生存期等定义了相应的规则。

面向CLR的语言无论是用哪种“代码的语言”最后的“代码的行为”都是一样的,因为最终都是由CLR的CTS来定义类型的行为。

CLS(common language specification,公共语言规范)详细定义了一个面向CLR语言的共有的最小功能集。一般来说,你的代码只要符合了CLS就能实现跨语言访问。

时间: 2024-11-03 21:55:26

CLR执行模型《CLR via c#》第一章的相关文章

CLR执行模型

1:首先先明确CLR的概念: 1:首先先明确CLR的概念:  CLR(Common Language Runtime):公共语言运行时,是一个可由多种编程语言使用的"运行时"; 在运行时,CLR根本不关心开发人员用的是哪一种语言来变写代码,它只关注语言是否是面向CLR(面向运行时)的. 2:CLR的核心功能包括: 内存管理.程序集加载.安全性.异常处理和线程同步. 3:如图: 无论是用的是哪一种编译器,结果都是一个托管模块(managed module),托管代码时一个标准的32位/6

CLR执行模型简介

1:首先先明确CLR的概念: CLR(Common Language Runtime):公共语言运行时,是一个可由多种编程语言使用的"运行时"; 在运行时,CLR根本不关心开发人员用的是哪一种语言来变写代码,它只关注语言是否是面向CLR(面向运行时)的. 2:CLR的核心功能包括: 内存管理.程序集加载.安全性.异常处理和线程同步. 3:如图: 无论是用的是哪一种编译器,结果都是一个托管模块(managed module),托管代码时一个标准的32位/64位Microsoft Wind

1.CLR执行模型

1.1 释义 CLR 公共语音运行时 Common Language Runtime CTS 通用类型系统 Common Type System CTS.CLS是CLR的核心 CLS 通用语言规范 Common Language Specification CLS是CTS的子集 IL 托管代码 栈 COM 类型库 Type Library IDL 接口定义语音 Interface Definition Language FCL FrameWork类库 Framework Class Librar

第一章 CLR的执行模型

概念篇 CLR(Common Language Runtime)[公共语言运行时] 可由多种编程语言使用的运行环境,提供内存管理.程序集加载.安全性.异常处理和线程同步等支持. CTS(Common Type System)[通用类型系统] 规范化的类型定义和管理,比如:字段.方法等, 又比如继承等特性. CLS(Common Language Specification)[公共语言规范] 针对CLR/CTS定义的最基本的组建. Manuged Module[托管模块] 标准的32位Mircor

初入 CLR - 阅读《CLR via C#》笔记

最近买了一本书<CLR via C#>阅读了第一章 - CLR 的执行模型,对 .NET 一直提到的 CLR 和 .NET Framework 有了一个大致的了解.我理解主要体现在: ■ 各种术语有了一个大致的体会:CTS CLS 和 CLI .CLR 与 .NET Framework. IL(Intermediate Language) .CIL(Common Intermediate Language)和 托管代码(Managed Code). ■ 用 C# 写完一个程序被编译成应用程序后

CLR的执行模型(4):执行程序集的代码

一直觉得,一本书的第一章是一定要读通的,这样子才知道这本书适不适合自己.所以,对于第一章的内容,我就啰嗦一些了. 托管程序集同时包含元数据和IL.IL是和CPU无关的机器语言,并且比大多数CPU语言都高级.IL能访问和操作对象类型,并且提供了创建和初始化对象的指令.调用对象上的虚方法以及直接操作数组元素.甚至实现了抛出和捕捉异常的指令,所以可将IL看成一种机器语言. 为了执行方法,首先必须吧方法的IL转换成本机CPU指令.这是CLR的JIT的职责. 下图展示了一个方法首次调用时候发生的事情: 在

01.由浅入深学习.NET CLR 基础系列之CLR 的执行模型

.Net 从代码生成到执行,这中间的一些列过程是一个有别于其他的新技术新概念,那么这是一个什么样的过程呢,有什么样的机制呢,清楚了这些基本的东西我们做.Net的东西方可心中有数.那么,CLR的执行模型是一个什么样的过程呢? 将源代码编译成托管模块 --> 将托管模块合并成程序集 --> 加载公共语言运行时 --> 执行程序集的代码 目录 将源代码编译成托管模块 将托管模块合并成程序集 加载公共语言运行时 执行程序集的代码 本地代码生成器:NGen.exe Framwork类库入门 通用类

CLR Via第一 章 知识点整理(4) FCL、CTS、CLI和CLS

FCL(Framework Class Library) Framework 类库: FCL是 .net Framework 包含的一组DLL程序集的统称,FCL包含了提供了很多功能,关于这一部分没有什么好说的,只需要了解大致你需要的功能由什么类提供以及类型在那个命名空间,接着在查询接口文档即可.以下是FCL常用的命名空间 CTS(Common Type System)公共类型系统CTS 是是微软制定的一套类的定义规则,如果存在与CTS不符合的定义或者功能则会出错,但是不使用则会通过CTS规范规

CLR的执行模型(3):加载

加载: 生成的每一个程序集,既可以是可执行应用程序,也可以是DLL.当然,最终是由CLR管理这些程序集中的代码执行.是否能执行,检查本机中是否安装.net Framework即可. 可执行文件在运行时,Windows检查文件头,判断需要32位还是64位地址空间.Windows还会检查头中嵌入的CPU架构信息,确保当前CPU架构符合要求. WIndows检查EXE文件头,决定创建32位还是64位进程之后,会在进程空间加载MSCorEE.dll的x86,x64或者AMR版本.然后.进程的主线程调用M