您的位置:首页 > 其它

Common Language Runtime

2008-07-07 11:37 351 查看
引用自:http://www.qiuhao.com/dispbbs.asp?boardid=2&id=8997&star=1#37967

Common Language Runtime

通常将.NET Framework分为.NET Framework类库、CLR(Common Language Runtime)和ASP.NET,其中.NET Framework类库和ASP.NET会在本书后面的内容中进行详细介绍,这里对Common Language Runtime进行简要的介绍。
同Java虚拟机JVM(Java Virtual Machine)相似,CLR也是一个运行时环境。CLR负责内存分配和垃圾回收,也就是通常所说的资源分配,同时保证应用和底层系统的分离。总而言之,它负责.NET库所开发的所有应用程序的执行。
CLR所负责的应用程序在执行时是托管的,即技术资料中经常出现的managed一词。托管代码带来的好处即跨语言调用、内存管理、安全性处理等。CLR隐藏了一些与底层操作系统打交道的环节,使开发人员可以把注意力放在代码所实现的功能上。非CLR控制的代码即非托管(unmanaged)代码,如C++等。这些语言可以访问操作系统的低级功能。
垃圾回收(Garbage Collection)是.NET中一个很重要的功能,这种思想在其他的语言中也有实现。这个功能保证应用程序不再使用某些内存时,这些内存就会被.NET回收并释放。这种功能被实现以前,这些复杂的工作主要由开发人员来实现,而这正是导致程序不稳定的主要因素之一。
垃圾回收带来的负面影响就是.NET会频繁检查内存单元。虽然精确地得到监视程序运行的开销目前还不能实现,但由此带来的性能降低也得到了微软的承认。这种性能的降低总体来说还是可以忍受的,来自微软的消息也不断指出这种消耗的降低。
在托管的CLR环境中运行代码,其运行机制的示意图如图1.1所示。



[align=center]图1.1 CLR运行机制[/align]
一个典型的.NET程序的运行过程主要包括以下几个步骤:
(1)选择编译器。为获得公共语言运行库提供的优点,必须使用一个或多个针对运行库的语言编译器。
(2)将代码编译为Microsoft中间语言(MSIL)。编译将源代码翻译为MSIL并生成所需的元数据。
(3)将MSIL编译为本机代码。在执行时,实时(JIT)编译器将MSIL(微软中间语言)翻译为本机代码。在此编译过程中,代码必须通过验证过程,该过程检查MSIL和元数据以查看是否可以将代码确定为类型安全。
(4)运行代码。公共语言运行库提供使执行能够发生以及可在执行期间使用的各种服务的结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: