CLR的執行模型 上)

2022-09-12 12:24:14 字數 616 閱讀 2179

做了一段時間開發,最近重新看了一下c#底層的知識,記錄一下。

說明:全文不區分大小寫,以後不加額外注釋的都遵循這個規則。

公共語言執行時(common language runtime,clr)是多語言平台的執行時,核心功能:記憶體管理、程式集載入、安全性、異常處理和執行緒同步等。

將源**編譯成託管模組:c#源**檔案→c#編譯器→託管模組(中間語言和元素據)。

託管模組:

(1)pe32/pe32+。pe32可以在32或者64位系統執行,pe32+只能在64位系統執行,還標誌檔案型別(gui,cui,dll),包含生成時間。

(2)clr頭。主要是clr版本、flag、main方法的元素據token、模組元素據、資源等。

(3)元素據。

(4)il**。將il編譯成本機cpu指令。

clr與程式集(是乙個或多個模組/資源檔案的邏輯分組,是重用、安全性、版本控制的最小單元)工作,而不是模組。

託管模組(il、元素據)+資源檔案(.jpg…)→將多個託管模組和資源檔案合併成程式集的工具(c#編譯器)→程式集

程式集可以是可行性應用程式,也可以是dll,他們都由clr來管理(.net framework框架下,windows 7及以後系統都自動安裝了)。

CLR執行模型

clr common language runtime 公共語言執行時,是乙個可由多種程式語言使用的 執行時 在執行時,clr根本不關心開發人員用的是哪一種語言來變寫 它只關注語言是否是面向clr 面向執行時 的.記憶體管理 程式集載入 安全性 異常處理和執行緒同步。3 如圖 無論是用的是哪一種編譯...

CLR執行模型

然後,將若干個託管模組合併成assembly.載入clr 在 system32 下有mscoreee.dll 說明已經安裝.首次執行一方法 在執行 main 之前,clr 建立乙個內部 ds來儲存 code 所引用的 type.呼叫方法時 jit complier將il 編譯為本地指令 在 am的元...

CLR的執行模型

公共語言執行時 common language runtime,clr 是乙個可由多種程式語言使用的 執行時 它負責在執行時管理 提供記憶體管理 異常處理 執行緒管理等核心服務,同時又確保 的安全性和準確性。原始碼的編譯過程如圖所示,使用支援clr的語言建立源 檔案,然後通過相應的編譯器對原始碼進行...