亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

01.由淺入深學習.NET CLR 基礎系列之CLR 的執行模型

2019-11-17 02:46:43
字體:
來源:轉載
供稿:網友

01.由淺入深學習.NET CLR 基礎系列之CLR 的執行模型

.Net 從代碼生成到執行,這中間的一些列過程是一個有別于其他的新技術新概念,那么這是一個什么樣的過程呢,有什么樣的機制呢,清楚了這些基本的東西我們做.Net的東西方可心中有數。那么,CLR的執行模型是一個什么樣的過程呢?

將源代碼編譯成托管模塊 --> 將托管模塊合并成程序集 --> 加載公共語言運行時 --> 執行程序集的代碼

目錄
  • 將源代碼編譯成托管模塊
  • 將托管模塊合并成程序集
  • 加載公共語言運行時
  • 執行程序集的代碼
  • 本地代碼生成器:NGen.exe
  • Framwork類庫入門
  • 通用類型系統
  • 公共語言規范(CLS)
  • 與非托管代碼的互操作性

將源代碼編譯成托管模塊

首先.Net開發是支持多語言選擇或者混合語言編程的,代碼的編譯是采用編譯器面向CLR的機制,即,無論何種語言編寫的代碼,只要采用的編譯器是面向CLR的就可以了。

Common Language Runtime:公共語言運行時,可由多種編程語言使用的"運行時"。CLR的核心功能(比如內存管理,程序集加載,安全性,異常處理和線程同步)可由面向CLR的所有語言使用。

Managed module:托管模塊,即編譯器編譯的結果都是一個托管模塊。

IL:每個面向CLR的編譯器生成的都是IL(中間語言)代碼。也成為托管代碼,因為CLR要管理它的執行。

Native code compiler:本地代碼編譯器。生成的是面向特定CPU架構(X86、X64、IA64)的代碼。

Metadata:元數據。是一種數據表,其中一些數據描述了模塊中定義的內容,比如類型和成員;還有些數據描述了模塊引用的內容,比如導入的類型及其成員。元數據總是和包含IL代碼的文件關聯,永遠是同步的。

將托管模塊合并成程序集

上圖顯示了托管模塊合并成程序集的過程。

程序集(assembly)的理解:一個或者多個模塊/資源文件的邏輯性分組;程序集是重用、安全性、版本控制的最小單元。

從上圖顯示可看出程序集(assembly)包含一個名為"清單"(manifest)的數據塊,它是由元數據表構成的另一種集合,描述了構成程序集的文件。

另一個地方就是AL.exe:程序集連接器

加載公共語言運行時

Windows 檢查EXE文件頭:

PE32:需要32位地址空間,可在32位/64位地址空間中運行

PE32+:需要64位地址空間

CPU架構信息,確保當前CPU是符合要求的

創建32/64/WoW64位進程 :根據exe文件頭創建的

加載MSCorEE.dll: 該文件在C:/Windows/SysWow64 或 C:/Windwos/Sys

看上面的流程還是比較清晰的。

執行程序集的代碼

為了執行一個方法,首先必須把它的IL轉換成本地的CPU指令。這是CLR的JIT(just-in-time或者"即時")編譯器的職責。從示意圖來分析其過程是如何的。

  1. Mian()執行之前,CLR先檢測出Main的代碼所引用的所有類型.
  2. 分配內部數據結構,用于管理所引用類型的訪問,如圖Console類型,Console類型定義的每一個方法都有一個對應的entry(記錄項)。每個entry都容納了一個地址,根據此地址即可找到方法的實現.對這個結構進行初始化時,CLR將每個記錄項都設置成(指向)包含在CLR內部的一個未文檔化的函數,這個函數即為JITCompiler
  3. Main函數首次調用WriteLine時,JITCompiler函數會被調用。

    JITCompiler 函數調用時,JITCompiler在定義該類型的程序集的元數據中查找被調用方法的IL

    -->驗證IL

    -->編譯成本地CPU指令

    -->返回到剛才的記錄,并修改對JITCompiler的引用,指向剛才編譯的內存塊的地址

    -->JITCompiler函數跳轉到剛才的內存塊執行

    -->返回到Mian繼續執行

  4. Main函數第二次調用WriteLine時

本地代碼生成器:NGen.exe

NGen.exe:.NET Framework 提供的工具,可以在一個應用程序安裝到目標計算機上時,將IL代碼編譯成本地代碼。

NGen.exe終于作用:

  1. 加快應用程序的啟動速度
  2. 減少應用程序的工作集(working Set)

位置:類似C:/Windows/Microsoft.NET/Framework/v4.0.30319

命令語法:

ngen <action> [options]

ngen /? | /help

Framework類庫

FCL:Framework Class Library 是一組DLL程序集的統稱。

通用類型系統

CTS:Common Type System,它描述了類型的定義和行為。

公共語言規范

CLS:Common Language Specification

相信混合語言的編程才迫使微軟制定了CLS。CLS解決的問題是使用不同的語言創建的對象能夠相互通信。要創建很容易從其他語言中訪問的類型,只能從自己的編程語言中挑選其他語言都確定支持的那些功能。

這就要求任何編譯器生成的類型要想兼容于由其他"符合CLS、面向CLR的語言"所生成的組件,就必須支持這個最小功能集。

告訴編譯器需要檢查CLS兼容性的語法

[assembly:CLSCompliant(true)]

namespace SomeLibrary

{

}

與非托管代碼的互操作性

為了迎合之前的非托管代碼的用戶,微軟通過CLR提供了一些機制,允許應用程序中同時包含托管和非托管代碼。

  1. 托管代碼能調用DLL中的非托管函數
  2. 托管代碼可使用現有的COM組件(服務器)
  3. 非托管代碼可使用托管類型(服務器)

本文還是主要學習了一些.NET平臺設計的一些架構思想和概念,應該在整體上對.NET有一個基本的認識。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性生交大片免费| 狠狠做深爱婷婷久久综合一区| 中文字幕不卡在线视频极品| 最新国产精品亚洲| 欧美亚洲视频在线观看| 国产日韩欧美在线播放| 中文字幕精品www乱入免费视频| 日韩电影在线观看永久视频免费网站| 色播久久人人爽人人爽人人片视av| 国产精品视频网| 国产成人精品国内自产拍免费看| 久久久久久久久久久av| 欧美亚洲一区在线| 久久视频国产精品免费视频在线| 国产手机视频精品| 国产一区二区欧美日韩| 91在线网站视频| 亚洲国产天堂久久综合网| 亚洲成人久久久久| 久久久久久久电影一区| 日韩精品久久久久久福利| 国产精品综合不卡av| 俺去了亚洲欧美日韩| 久久久91精品国产一区不卡| 国产精品99久久久久久www| 精品中文视频在线| 国产精品第一页在线| 国产精品69久久| 亚洲欧洲高清在线| 成人伊人精品色xxxx视频| 欧美精品videossex88| 亚洲国产精品国自产拍av秋霞| 欧美一区亚洲一区| 精品久久久香蕉免费精品视频| 92福利视频午夜1000合集在线观看| 欧美成人剧情片在线观看| 精品国产依人香蕉在线精品| 久久99久久久久久久噜噜| 成人春色激情网| 久久国产加勒比精品无码| 日韩高清不卡av| 欧美日韩精品在线观看| 欧美精品做受xxx性少妇| 国产日韩中文字幕在线| 日韩在线一区二区三区免费视频| 欧美极品美女电影一区| 日韩视频在线免费观看| 亚洲第一国产精品| 91久热免费在线视频| 九九综合九九综合| 久久91超碰青草是什么| 国产精品免费视频久久久| 国产在线精品成人一区二区三区| 91香蕉嫩草神马影院在线观看| 一区二区在线视频播放| 亚洲男人天堂2019| 日韩av在线免费看| 亚洲a∨日韩av高清在线观看| 51精品国产黑色丝袜高跟鞋| 国产精品久久综合av爱欲tv| 国产在线观看精品一区二区三区| 欲色天天网综合久久| 狠狠做深爱婷婷久久综合一区| 亚洲黄色成人网| 国产91精品青草社区| 日韩国产欧美精品在线| 亚洲第一色中文字幕| 亚洲自拍av在线| 日韩国产欧美精品一区二区三区| 日本三级韩国三级久久| 亚洲最大av网| 久久精品2019中文字幕| 国产在线视频91| 国产精品欧美激情在线播放| 欧美日韩xxxxx| 午夜精品久久久久久久久久久久| 国产亚洲日本欧美韩国| 国产一级揄自揄精品视频| 国产精品专区一| 久青草国产97香蕉在线视频| 精品日韩美女的视频高清| 欧美在线欧美在线| 亚洲精选中文字幕| 欧美性猛交xxxx黑人猛交| 狠狠躁夜夜躁人人爽超碰91| 国产成人精品a视频一区www| 欧美人交a欧美精品| 在线精品视频视频中文字幕| 久久久亚洲成人| 一色桃子一区二区| 最好看的2019的中文字幕视频| 在线性视频日韩欧美| 久久伊人精品视频| 中文字幕在线亚洲| 久久久久北条麻妃免费看| 国产69精品99久久久久久宅男| 欧美怡春院一区二区三区| 亚洲综合国产精品| 91禁国产网站| 亚洲精品成a人在线观看| 岛国av一区二区| 久久影视电视剧免费网站清宫辞电视| 亚洲精品美女久久久久| 黑丝美女久久久| 久久久久日韩精品久久久男男| 亚洲天堂成人在线| 欧美日韩国产中文精品字幕自在自线| 国产日韩欧美中文在线播放| 午夜精品一区二区三区在线视| 日韩av电影手机在线观看| 亚洲女人天堂色在线7777| 欧美成人免费在线视频| 国产小视频国产精品| 国产午夜精品一区理论片飘花| 尤物yw午夜国产精品视频明星| 亚洲色图第三页| 亚洲美女性生活视频| 日韩女优人人人人射在线视频| 国模精品视频一区二区| 久久在线免费观看视频| 欧美第一黄色网| 欧美一级成年大片在线观看| 国产精品吴梦梦| 欧美一级视频一区二区| 日韩在线视频免费观看| 日韩av中文字幕在线| 日韩福利视频在线观看| 日韩精品久久久久久福利| 亚洲**2019国产| 久久久久国产精品一区| 欧美午夜激情在线| 亚洲精品成人免费| 青青草国产精品一区二区| 精品久久久国产| 91精品国产自产在线| 欧美成人亚洲成人日韩成人| 久久视频在线直播| 黑人巨大精品欧美一区二区| 川上优av一区二区线观看| 亚洲欧洲第一视频| 亚洲成色777777女色窝| 欧美人在线观看| 国产一区二区三区直播精品电影| 亚洲天堂免费观看| 亚洲人成77777在线观看网| 日韩免费中文字幕| 日本亚洲欧洲色| 亚洲三级黄色在线观看| 亚洲激情国产精品| 亚洲香蕉成人av网站在线观看| 欧美极品在线播放| 国产亚洲人成a一在线v站| 成人网欧美在线视频| 91美女福利视频高清| 国产精品91免费在线| 日韩电影免费在线观看| 欧美富婆性猛交| 亚洲经典中文字幕| 精品偷拍一区二区三区在线看| 国产亚洲一级高清| 91av视频在线免费观看| 成人一区二区电影| 成人国产精品免费视频| 亚洲成人网在线观看|