1. 程式人生 > >.net程式執行原理

.net程式執行原理

程式設計師用.net開發的程式要在計算機上執行,首先程式經過編譯後,會生成機器指令,一般以一個檔案的形式儲存,這個檔案在外儲存器上(儲存器分外存與記憶體。外存:硬碟,U盤等;)

然後cpu會把硬碟上的檔案讀到記憶體中,會在記憶體中分配一個記憶體區域,專門存放檔案內容,會有個唯一的地址,cpu就會讀到這個地址,取出內容,執行機器指令。

但是生成的程式卻不能放到別的機器上和不同作業系統的計算機上進行執行,因為編譯程式生成的檔案包含了特定的cpu的機器指令,所以必須對程式碼加以修改,去適應不同計算機和不同作業系統的,這樣的程式碼稱為非託管程式碼。

這樣的程式碼侷限性太大,會給程式設計師帶來很大重複性工作。因此後來在.net中出現了中間語言,這個就是程式經過編譯以後就會轉化為中間語言,但是中間語言不能被cpu所認識,必須轉為為機器指令,這時就需要把中間語言翻譯成機器語言,這時就出現了這樣一個軟體系統,叫著VM(虛擬機器),虛擬機器可以讓不同計算機和不同作業系統執行程式,.net的這個虛擬機器便是.net framework。執行在虛擬機器上的程式碼成為託管程式碼。所以計算機要想執行.net程式,那麼必須先安裝.net framework 。

.net framework包含兩個主要的元件:一是CLR(公共語言執行時),它是.net程式碼所必須的執行環境,CLR負責記憶體管理及分配與垃圾回收等工作,其選擇編譯器,將程式碼編譯為IL(中間語言),並將IL和元資料載入到可執行檔案中(dll或exe),第二次編譯是使用JIT編譯器將IL編譯成機器語言(二進位制程式碼),從而使計算機識別並加以執行。二是.net framework類庫,這是.net開發的所需要的基本類庫。託管程式碼就是以CLR為基礎的可執行的程式碼,非託管程式碼反之。