精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

.NET CRL程序載入原理大揭秘

開發(fā) 后端
本文介紹了.NET CRL程序載入原理分析,在一個.NET CRL下的可執(zhí)行程序的啟動過程可以分為三個步驟,哪三個步驟本文給出全面的解析。

.NET這個詞語對我們不陌生吧,而.Net平臺下CLR程序程序怎么載入呢?這個有有些人就步知道了,在這里給大家分析以下原理。與傳統(tǒng)的Win32可執(zhí)行程序中的本機(jī)代碼(Native Code)不同,微軟推出的.Net架構(gòu)中,可執(zhí)行程序的代碼是以類似Java Byte Code的 IL (Intermediate Language)偽代碼形式存在的。在.Net可執(zhí)行程序載入后,IL代碼由CLR (Common Language Runtime)從可執(zhí)行文件中取出, 交由JIT (Just-In-Time)編譯器,根據(jù)相應(yīng)的元數(shù)據(jù)(Metadata),實時編譯成本機(jī)代碼后執(zhí)行。
 
因此,一個.NET CRL下的可執(zhí)行程序的啟動過程可以分為三個步驟。
首先,Windows的可執(zhí)行程序載入器(OS Loader)載入 PE (Portable Executable)結(jié)構(gòu)的可執(zhí)行文件映像(PE Image),將執(zhí)行權(quán)傳遞給CLR的支持庫中的Unmanaged Code。
其次,啟動或使用現(xiàn)有的CLR引擎,建立新的應(yīng)用域(Application Domain),將配件(Assembly)載入到此應(yīng)用域中。
最后,將執(zhí)行權(quán)從Unmanaged Code傳遞給Managed Code,執(zhí)行配件的代碼。

下面我將詳細(xì)說明以上步驟。
 
自從Win95發(fā)布以來,可執(zhí)行程序的PE結(jié)構(gòu)就沒有發(fā)生大的改動。此次.Net平臺發(fā)布,也只是利用了PE結(jié)構(gòu)中現(xiàn)有的預(yù)留空間,以保持PE結(jié)構(gòu)的穩(wěn)定,最大程度保持向后兼容。CLR程序在編譯后,將可執(zhí)行程序入口直接以一個間接跳轉(zhuǎn)指令 ,指向mscoree.lib中的_CorExeMain函數(shù)(DLL將入口指向_CorDllMain函數(shù))。因此CLR可執(zhí)行程序在被OS Loader載入后,將_CorExeMain函數(shù)處理CLR引擎 ,啟動事宜。此函數(shù)將啟動或使用一個現(xiàn)有的CLR Host來加載IL代碼。常見的CLR Host有ASP.Net、IE、Shell、數(shù)據(jù)庫引擎等等,他們的作用是啟動一個CLR實例,管理在此CLR實例中運(yùn)行的CLR程序。我們接著來看一看一個CLR Host是如何實際運(yùn)作的。

CLR作為一個引擎,在同一臺計算機(jī)上是可以存在多個版本的,不同版本之間可以通過配置良好共存。在 %windir%\Microsoft.NET\Framework (%windir%表示W(wǎng)indows系統(tǒng)目錄所在位置)目錄下我們可以看到以版本號為目錄名的多個CLR版本, 如%windir%\Microsoft.NET\Framework\v1.0.3705等等,也可以在注冊表的

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.0  

鍵下查看詳細(xì)的版本兼容性.Name是Build號,Value是兼容的Build號. 而每一個CLR版本又分為Server和Workstation兩類運(yùn)行庫, 我們等會講創(chuàng)建.NET CLR時會詳細(xì)談到. CLR Host在啟動CLR之前,必須通過一個startup shim的庫進(jìn)行操作, 實際上就是mscoree.dll,他提供了版本無關(guān)的操作函數(shù),以及啟動CLR所需 的支持,如CorBindToRuntimeEx函數(shù). CLR Host通過shim的支持庫,將CLR引擎載入到進(jìn)程中.具體函數(shù)如下

  1. STDAPI CorBindToRuntimeEx(LPCWSTR pwszVersion,   
  2. LPCWSTR pwszBuildFlavor, DWORD startupFlags,   
  3. REFCLSID rclsid, REFIID riid, LPVOID FAR *ppv);  

參數(shù)pwszVersion指定要載入的CLR版本號,注意必須在前面帶一個小寫的"v", 如"v1.0.3705",可以通過查閱前面提到的注冊表鍵,獲取當(dāng)前系統(tǒng)安裝的不同CLR 版本情況,或指定固定的CLR版本.也可以遞NULL給這個參數(shù),系統(tǒng)將自動選擇最新版本的CLR載入. 參數(shù)pwszBuildFlavor則指定載入的CLR類型,"srv"和"wks". 前者適用于多處理器的計算機(jī),能夠利用多CPU提高并行性能.對單CPU系統(tǒng)而言,無論指定哪種類型都會載入"wks",傳遞NULL也是如此. 參數(shù)startupFlags是一個組合參數(shù).由多個標(biāo)志位組成. STARTUP_CONCURRENT_GC標(biāo)志指定是否使用并發(fā)的GC(Garbage Collection) 機(jī)制,使用并發(fā)GC能夠提高系統(tǒng)的用戶界面相應(yīng)效率,適合窗口界面使用較多的程序. 但并發(fā)GC會因為無謂的線程上下文(Thread Context)切換損失效率.

以下三個參數(shù)用于指定配件載入優(yōu)化策略.我們等會詳細(xì)討論.

  1. STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN = 0x1 << 1,   
  2. STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN  = 0x2 << 1,   
  3. STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOST = 0x3 << 1,  

接著的三個參數(shù)用于獲取ICorRuntimeHost接口.

實際調(diào)用實例如下.

  1. CComPtr<ICorRuntimeHost> spHost;   
  2. CHECK(CorBindToRuntimeEx(NULL, L"wks",   
  3. STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN | STARTUP_CONCURRENT_GC,   
  4. CLSID_CorRuntimeHost, IID_ICorRuntimeHost, (void **)&spHost)); 

這行代碼載入最高版本CLR的wks類型運(yùn)行庫,為單應(yīng)用域進(jìn)行優(yōu)化并使用并發(fā)GC機(jī)制. 前面提到了配件載入優(yōu)化策略,要理解這個概念,我們必須先了解應(yīng)用域的概念. 傳統(tǒng)Win程序中,資源的分配管理單位是進(jìn)程,操作系統(tǒng)以進(jìn)程邊界將應(yīng)用程序?qū)嵗綦x開, 單個進(jìn)程的崩潰不會對其他進(jìn)程產(chǎn)生直接影響,進(jìn)程也不能直接使用其他進(jìn)程的資源. 進(jìn)程很好,但使用進(jìn)程的代價太大,為此Win32引入了線程的概念.同一進(jìn)程中的線程能夠共享資源,線程管理和切換的代價也遠(yuǎn)遠(yuǎn)小于進(jìn)程.但因為在同一進(jìn)程中,線程的崩潰會直接影響到其他線程的運(yùn)行,也無法約束線程間數(shù)據(jù)的直接訪問等等. 為此,CLR Application Domain應(yīng)用域的概念.應(yīng)用域是介于進(jìn)程和線程之間的一種邏輯上的概念.他既有線程輕巧,管理切換快捷的優(yōu)點,也有進(jìn)程在穩(wěn)定性方面的優(yōu)點,單個應(yīng)用域的崩潰不會直接影響到同一進(jìn)程中的其他應(yīng)用域,應(yīng)用域也無法直接訪問同一進(jìn)程中的其他應(yīng)用域的資源,這方面和進(jìn)程完全相同. 而.NET CLR的管理就是完全面向應(yīng)用域一級.CLR不能卸載(Unload)某個類型或配件, 必須以應(yīng)用域為單位啟動/停止代碼,獲取/釋放資源.

CLR在執(zhí)行一個配件時,會新建一個應(yīng)用域,將此配件放入新的應(yīng)用域.如果多個應(yīng)用域同時使用到一個配件,就要涉及到前面提到的配件載入優(yōu)化策略了.最簡單的方法是使用

STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN標(biāo)志,每個應(yīng)用域擁有一份獨立的配件的鏡像,這樣速度最快,管理最方便,但占用內(nèi)存較多.相對的是所有應(yīng)用域共享一份配件的鏡像,(使用STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN標(biāo)志) 這樣節(jié)約內(nèi)存,但在此配件中存在靜態(tài)變量等數(shù)據(jù)時,因為要保證每個應(yīng)用域有獨立的數(shù) 據(jù), 所以會一定程度上影響效率.折中的方案是使用 (使用STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOST標(biāo)志) 此時,只有那些有Strong Name的配件才會被多個應(yīng)用域共享.

這里又涉及到一個概念Strong Name.他是一個配件的身份證明,他由配件的 名字/版本/culture以及數(shù)字簽名等組成.在配件發(fā)布時用以區(qū)別不同版本. 也在安全/版本控制等方面起到重要作用,以后有機(jī)會會專門講解.暫且跳過. 獲取了ICorRuntimeHost接口的指針后,我們可以以此指針取得當(dāng)前/缺省應(yīng)用域,
并可枚舉CLR引擎實例中所有的應(yīng)用域.

【編輯推薦】

  1. SQL SERVER 2005 CLR集成之簡單SQL函數(shù)講解
  2. 代碼演示CLR Via C#如何調(diào)用靜態(tài)構(gòu)造函數(shù)
  3. 概述講解SQL Server 2005 CLR集成執(zhí)行功能
  4. 簡單概述SQLCLR CAS權(quán)限集
  5. 全面講解CLR安全性
責(zé)任編輯:田樹 來源: 教程在線
相關(guān)推薦

2010-02-02 18:34:00

Python

2009-11-04 13:51:46

ADO.NET性能

2009-10-29 10:34:31

ADO.NET使用技巧

2023-06-26 18:03:26

btrace 2.0開源

2010-01-22 14:53:21

2021-01-18 18:15:00

GitHub 技術(shù)開發(fā)

2018-09-18 15:57:44

機(jī)器學(xué)習(xí)ML神經(jīng)網(wǎng)絡(luò)

2009-11-10 11:01:05

VB.NET事件

2021-05-13 23:30:17

JavaScript 原理揭秘

2009-05-28 10:12:04

2017-08-24 09:19:20

分解技術(shù)揭秘

2017-07-06 08:21:27

VSAN加密虛擬機(jī)

2017-07-05 16:43:52

VSAN加密虛擬化

2016-02-29 16:54:10

OpenStack混合云應(yīng)用軟件定義基礎(chǔ)設(shè)施

2025-07-03 09:47:52

2019-11-15 15:12:19

Windows激活KMS

2013-04-22 11:13:06

程序員編程誤區(qū)

2009-11-03 17:25:59

ADO.NET編程技巧

2009-12-17 16:53:13

.NET Framew

2010-05-20 18:52:06

Eclipse使用SV
點贊
收藏

51CTO技術(shù)棧公眾號

你懂的在线视频| 久久精品视频日本| 成人综合网站| 亚洲欧美日韩国产一区二区三区| 91色视频在线观看| 国产女人18水真多毛片18精品| 亚洲精品视频一二三区| 疯狂做受xxxx高潮欧美日本| 午夜视频久久久| www.97av.com| 日韩精品一级二级| 欧美成人精品激情在线观看 | 久久婷婷久久| 久久亚洲电影天堂| 国产精品九九九九九| 国产91在线播放精品| 亚洲小说欧美激情另类| 天堂资源在线亚洲视频| 亚洲欧美另类日韩| 久久99精品一区二区三区| 欧美色综合网| 亚洲一区二区三区四区在线观看| 日韩av电影免费在线| 亚洲第一大网站| 美女性感视频久久| 日本欧美一级片| 久久久久久久久久久久国产| 成人国产精品一级毛片视频| 视频精品一区二区| 久久精品中文字幕免费mv| 日韩aaaaa| 日韩不卡在线视频| 欧美日韩久久久久久| 欧美啪啪免费视频| 在线heyzo| 欧美国产亚洲另类动漫| 九色91在线视频| 午夜精品在线播放| 韩国视频一区二区| 国产精品美女在线| 高清乱码免费看污| 午夜在线精品偷拍| 97久久超碰福利国产精品…| 青青草手机在线视频| 久久精品国产68国产精品亚洲| 亚洲精品suv精品一区二区| 香蕉网在线视频| 韩国三级大全久久网站| 欧美日韩成人高清| 天天综合网日韩| 日韩网站中文字幕| 色综合天天性综合| 日批视频在线免费看| 忘忧草在线影院两性视频| 亚洲va韩国va欧美va精品| 17c丨国产丨精品视频| 永久免费网站在线| 亚洲黄色免费电影| 男人添女人下部视频免费| 国产精品麻豆一区二区三区| 9人人澡人人爽人人精品| 91视频99| 日韩在线观看视频网站| av亚洲精华国产精华精| 国产伦视频一区二区三区| 色欲av伊人久久大香线蕉影院| 成人激情动漫在线观看| 精品婷婷色一区二区三区蜜桃| 日韩在线视频免费| av成人老司机| 欧美久久在线| 午夜在线视频| 亚洲激情综合网| 亚洲一区二区三区av无码| 17videosex性欧美| 色婷婷综合久色| 在线能看的av网站| 亚洲一区二区三区四区电影| 精品国产成人系列| 国产国语性生话播放| 欧美在线电影| 久国内精品在线| 成人精品在线看| 日本美女视频一区二区| 国产精品国产三级国产普通话99 | 欧美aaaaaaa| 午夜精品福利一区二区蜜股av| 国产老熟妇精品观看| 欧美影视资讯| 日韩欧美一二三区| 9.1成人看片| 欧美a级成人淫片免费看| 欧美日韩不卡合集视频| 亚洲AV无码成人精品区东京热| 蜜桃视频一区二区| 国产美女99p| 黄色视屏网站在线免费观看| 亚洲欧美国产77777| 成熟丰满熟妇高潮xxxxx视频| 国产69精品久久久久按摩| 精品日韩一区二区三区免费视频| 五月天综合视频| 欧美aa国产视频| 日本在线观看天堂男亚洲| 国产精品人人妻人人爽| 91亚洲精品乱码久久久久久蜜桃| 亚洲一区二区三区免费观看| 男女在线观看视频| 欧美午夜在线观看| 国产 xxxx| 日韩三级视频在线| 成人av资源电影网站| 欧美激情视频一区二区三区不卡| 性色av免费观看| 国产69精品久久久久777| 日韩精品久久一区二区三区| 丁香花在线影院| 欧美日韩成人高清| 18禁裸乳无遮挡啪啪无码免费| 911精品美国片911久久久| 欧美做爰性生交视频| 亚洲精品911| 国产精品二三区| www.亚洲天堂网| 国产精品毛片久久久| 久久久精品999| 国产a∨精品一区二区三区不卡| 国产特黄大片aaaa毛片| 狠狠色狠狠色综合日日91app| 欧美日韩三区四区| a毛片不卡免费看片| 69久久夜色精品国产69蝌蚪网| 瑟瑟视频在线观看| 亚洲欧洲一区| 国产精品免费观看高清| av免费在线观看网址| 欧美日韩精品免费观看视频| 一级黄色性视频| 在线综合亚洲| 国产欧美韩日| 激情影院在线观看| 大伊人狠狠躁夜夜躁av一区| 亚洲妇熟xx妇色黄蜜桃| 日韩成人综合| 国产精品午夜国产小视频| 成人精品一区二区三区免费| 色婷婷久久久综合中文字幕| 泷泽萝拉在线播放| 久久婷婷影院| 日韩影院一区| 国产精品无码久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 黄色在线视频网址| 久久综合av免费| 韩国一区二区av| 欧美一级淫片| 成人疯狂猛交xxx| 国产在线激情视频| 日韩一二三区视频| 国产一级在线观看视频| www.亚洲国产| 妞干网在线免费视频| 任我爽精品视频在线播放| 欧美孕妇性xx| av影片在线看| 欧美一区二区三区性视频| 欧美卡一卡二卡三| 成人免费av资源| www.爱色av.com| 国产成人精品999在线观看| 国产精品福利久久久| 免费黄色在线观看| 精品日韩一区二区| 国产精品21p| 国产精品大尺度| 97免费公开视频| 国产亚洲欧洲| 亚洲bbw性色大片| 精品国产不卡一区二区| 97色在线播放视频| 成人欧美亚洲| 精品国产污污免费网站入口 | 欧洲一区二区三区免费视频| 精品在线观看一区| 岛国一区二区在线观看| 18岁视频在线观看| 午夜激情久久| 国产一区福利视频| 国产成人精选| 久久久在线免费观看| 国产一二三在线观看| 制服丝袜亚洲色图| 免费观看成人毛片| 国产精品护士白丝一区av| 亚洲一区和二区| 亚洲在线观看| 国产精品美女在线播放| 九色丨蝌蚪丨成人| 国产日韩欧美日韩| 免费一二一二在线视频| 久久精品最新地址| 青青草在线视频免费观看| 91精品国产综合久久福利软件 | 另类国产ts人妖高潮视频| 中文字幕不卡每日更新1区2区| 麻豆精品少妇| 亚洲一区二区在线| 欧洲成人一区| 久久免费高清视频| а√天堂在线官网| 亚洲视频在线观看网站| 噜噜噜久久,亚洲精品国产品| 欧美三级日韩三级国产三级| 日本熟女一区二区| 亚洲欧美在线高清| 性高潮久久久久久久| 成人av在线观| 少妇性l交大片7724com| 日本亚洲视频在线| 国产中文字幕视频在线观看| 自拍偷拍欧美专区| 亚洲一区二区三区午夜| 亚洲成a人片77777在线播放| julia一区二区中文久久94| 久久av影院| 国产精品久久久久久久午夜| 成人性生活视频| 97视频网站入口| 美女精品导航| 欧美激情videoshd| av网站在线看| 另类少妇人与禽zozz0性伦| 最新电影电视剧在线观看免费观看| 日韩精品一区二区视频| 黄色a在线观看| 精品精品国产高清一毛片一天堂| 国产欧美一区二区三区视频在线观看| 欧美怡红院视频| 无码日韩精品一区二区| 欧美日韩国产页| 天堂网av手机版| 亚洲成人你懂的| 黄色激情视频在线观看| 亚洲va天堂va国产va久| 国产午夜免费视频| 亚洲午夜激情网站| 日韩美女一级片| 精品久久久中文| 中文字幕一区二区人妻电影| 欧美性猛交xxxx乱大交极品| 91精品国产乱码久久久张津瑜 | 久久在精品线影院精品国产| 欧美激情二区| 不卡毛片在线看| 欧美女同一区| 欧美精品激情视频| 欧美gv在线观看| 91po在线观看91精品国产性色| 成人av影院在线观看| 久久久久中文字幕| 日韩脚交footjobhd| 日韩暖暖在线视频| 岛国一区二区| 999视频在线免费观看| 99精品国产高清一区二区麻豆| 国产精品乱码视频| 久久93精品国产91久久综合| 色综合影院在线观看| 久久国产成人午夜av影院宅| 久久久无码中文字幕久...| 影音先锋亚洲精品| 欧美黄色一级片视频| 久久福利视频一区二区| 国产成人精品一区二区三区在线观看 | 97香蕉久久超级碰碰高清版 | 一区二区日韩欧美| 国产精品69久久久| 销魂美女一区二区三区视频在线| 日本在线观看免费视频| 韩国精品在线观看| 人妻无码中文久久久久专区| 欧美国产激情二区三区| 暗呦丨小u女国产精品| 亚洲成人免费视| 国产真人无遮挡作爱免费视频| 7777精品伊人久久久大香线蕉超级流畅| 朝桐光av在线一区二区三区| 亚洲免费av电影| a级网站在线播放| 欧美一区深夜视频| 4438五月综合| 久久精品国产一区二区三区日韩 | 久久久999成人| 漫画在线观看av| 成人福利网站在线观看| 欧美变态网站| 六月婷婷激情网| 美女黄网久久| 初高中福利视频网站| 国产日产欧美一区二区视频| 久久久久久久国产视频| 在线亚洲+欧美+日本专区| 草逼视频免费看| 中文字幕日韩电影| 日韩电影免费看| av一区二区三区免费| 日韩欧美1区| 欧美黄网站在线观看| 国产成人欧美日韩在线电影| 黄免费在线观看| 五月激情六月综合| 国产av一区二区三区| 国产一区二区三区直播精品电影| 超黄网站在线观看| 91色精品视频在线| 久久精品播放| 久草福利视频在线| 91网页版在线| 精品无码av在线| 在线综合+亚洲+欧美中文字幕| 国产大片在线免费观看| 欧美有码在线观看| 精品亚洲精品| 男人添女荫道口女人有什么感觉| 精彩视频一区二区三区| 免费看91的网站| 欧美日韩免费网站| 神马久久久久久久久久| 欧美精品在线第一页| av日韩在线免费观看| 亚洲激情一区二区| 日韩av在线发布| 亚洲做受高潮无遮挡| 午夜精品123| 神马久久久久久久久久| 久久久视频免费观看| 亚洲日本视频在线| 久久www视频| 国产91综合一区在线观看| av激情在线观看| 欧美一区二区黄色| a篇片在线观看网站| 91探花福利精品国产自产在线| 久久大综合网| 国产永久免费网站| 日韩美女啊v在线免费观看| 亚洲综合精品国产一区二区三区| 自拍偷拍亚洲欧美| 91丨精品丨国产| 91麻豆天美传媒在线| 国产成人精品亚洲午夜麻豆| 久操视频免费在线观看| 欧美成人精品二区三区99精品| 色呦呦网站在线观看| 国产成人亚洲欧美| 99国产精品视频免费观看一公开| 一区二区免费在线观看视频 | 91av久久久| 麻豆乱码国产一区二区三区| 日本一区二区三区视频在线看| www.xxx麻豆| 91丝袜美腿高跟国产极品老师| 超碰中文字幕在线| 国产一区二区三区网站| 欧美黄色网络| 国产女教师bbwbbwbbw| 成人av网站免费观看| 91丝袜一区二区三区| 少妇高潮 亚洲精品| 国产亚洲字幕| 欧美大片在线播放| 欧美国产日韩一二三区| 国产丝袜视频在线观看| 国自在线精品视频| sdde在线播放一区二区| theporn国产精品| 亚洲高清不卡在线观看| 福利在线视频导航| 97免费资源站| 久久综合导航| 极品久久久久久| 日韩久久免费电影| 久久精品97| 少妇av一区二区三区无码| 国产亲近乱来精品视频| 精品久久久久中文慕人妻 | 国产不卡精品| av高清在线免费观看| 国产日产欧美一区二区三区 | 日本在线一区二区| 日韩精品在线中文字幕| 欧美经典一区二区| 亚洲精品无遮挡| 国产精品免费观看在线| 激情综合亚洲| 国产精品suv一区二区88| 亚洲加勒比久久88色综合| 日韩黄色碟片| 成年网站在线免费观看| 亚洲免费观看视频|