虛擬執(zhí)行系統(tǒng)實現(xiàn)了虛擬對象系統(tǒng)。通過實現(xiàn)一個負(fù)責(zé)NGWS runtime的執(zhí)行引擎(execution engine,縮寫EE)創(chuàng)建VES。這個執(zhí)行引擎執(zhí)行由C#編寫和編譯的應(yīng)用程序。
下列組件為VES的一部分。
1、中間語言(IL)——被設(shè)計為很容易被各種各樣的編譯器所兼容 。在該框架之外,C++、VB和C#編譯器都能夠生成IL。
2、裝入受管代碼——包括解決內(nèi)存中的名字、 表層類,并且創(chuàng)建JIT編譯所必需的存根。通過執(zhí)行經(jīng)常性校驗,包括加強一些訪問規(guī)則,類裝載器同樣也增強了安全性。
3、用JIT轉(zhuǎn)換IL成原始代碼——IL代碼并不是設(shè)計成為一種傳統(tǒng)的解釋字節(jié)代碼或樹型代碼,IL轉(zhuǎn)換是真正的編譯。
4、裝入元數(shù)據(jù)、校驗類型安全和方法的完整性
5、垃圾收集(GC)和異常處理——兩者都是基于堆棧格式的服務(wù)。受管代碼允許你動態(tài)地跟蹤堆棧。要動態(tài)地識別各個堆??蚣?,JITter或其它編譯器必須提供一個代碼管理器。
6、描繪和查錯服務(wù)——兩者都取決于由源語言編譯器所生成的信息。必須發(fā)出兩個映射:一個映射從源語言結(jié)構(gòu)發(fā)到指令流中的地址,一個映射從地址發(fā)到堆??蚣苤械奈恢?。當(dāng)執(zhí)行從IL到原始代碼的轉(zhuǎn)換時,這些映射被重新計算。
7、管理線程和上下文,還有遠(yuǎn)程管理——VES為受管代碼提供這些服務(wù)。
雖然這個清單并不完整,但它足以讓你理解運行時基于的由VES提供的低層架構(gòu)??隙▽袑iT討論運行時的書,而這本書只稍為深入地挖掘各種話題。
新聞熱點
疑難解答
圖片精選