<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 內存網(wǎng)格關(guān)鍵技術(shù)探析

內存網(wǎng)格關(guān)鍵技術(shù)探析

作者: 時(shí)間:2012-07-20 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:的出現主要借鑒了傳統的計算技術(shù)和集群共享技術(shù)。本文從動(dòng)態(tài)函數截獲,緩存數據組織與管理和異步緩存數據寫(xiě)入三方面探討了系統的。

本文引用地址:http://dyxdggzs.com/article/202242.htm

關(guān)鍵詞:內存網(wǎng)格;動(dòng)態(tài)函數截獲;異步緩存數據

一 引言

隨著(zhù)計算機技術(shù)的發(fā)展,CPU和系統主存的性能得到了極大的提高。然而由于IO設備的發(fā)展相對滯后,磁盤(pán)性能逐漸成為了影響計算機整體性能的瓶頸。對于具有頻繁、隨機磁盤(pán)10的數據密集型應用,如web服務(wù)器和數據庫系統,磁盤(pán)訪(fǎng)問(wèn)的巨大延遲將嚴重影響應用程序的性能。為了提高系統10性能,提出了內存網(wǎng)格的概念,為共享和利用互聯(lián)網(wǎng)中豐富的內存資源來(lái)解決內存密集型應用的性能問(wèn)題提供了理論支持。本文結合已有的內存網(wǎng)格理論,對其進(jìn)行了系統研究。

二 動(dòng)態(tài)函數截獲技術(shù)

(一)內核模塊

Linux內核是單一平面結構(monolithic),也就是說(shuō)它是一個(gè)獨立的大程序,所有的內核功能構件均可訪(fǎng)問(wèn)任一個(gè)內部數據結構和例程。為了方便使用同時(shí)又提供了模塊化的機制,這就是內核模塊。內核模塊是可以按照需要動(dòng)態(tài)載入內核和從內核中卸載的代碼。內核模塊可以不需要重起系統擴展內核的功能。對于Linux內核模塊,可以用insmod或rmmod命令顯式載入或卸載,或者由內核在需要時(shí)調用內核守護程序(kerneld)自動(dòng)載入和卸載。內核模塊運行在Linux內核空間,可以方便地使用內核提供的系統函數和變量。從模塊程序鏈接的方式來(lái)看,它并不能自由地使用用戶(hù)空間里定義的函數庫,只能使用內核空間中定義的、資源受到限制的函數。內核在內核符號表中維護了一個(gè)模塊的鏈表,每個(gè)符號表對應一個(gè)模塊,模塊加載進(jìn)內核時(shí)正確地對其進(jìn)行解釋?zhuān)⒛K作為內核的一部分來(lái)執行:加載進(jìn)內核的模塊具有所有的內核權限。模塊可以在系統啟動(dòng)時(shí)加載到系統中,也可以在系統運行時(shí)加載:在不需要時(shí),可以將模塊動(dòng)態(tài)卸載,這樣就不用每次修改系統的配置時(shí)都要重新編譯內核了。一般來(lái)說(shuō),內核模塊可以應用于設備驅動(dòng)、文件系統驅動(dòng)程序、網(wǎng)絡(luò )驅動(dòng)、可執行文件解釋器和系統調用等方面。

(二)函數截獲

內存網(wǎng)格系統中利用了函數截獲(APIHooking)的方法來(lái)動(dòng)態(tài)改變系統函數執行流程。所謂動(dòng)態(tài)改變,就是指在不修改程序源代碼和不覆蓋程序在磁盤(pán)的存儲映像前提下,對程序行為進(jìn)行修改。

函數截獲(API Hooking)是獲取指定執行代碼控制權的基本方法[44,45]。它提供了一種在不修改程序源代碼的前提下,動(dòng)態(tài)改變操作系統行為的便捷方法。在眾多現代操作系統中,使用函數截獲方法的間諜軟件(Spying Software)大量利用了系統中存在的窗口程序來(lái)部署自己的特殊應用。一般說(shuō)來(lái),使用函數截獲方法具有如下優(yōu)點(diǎn):

1、便于A(yíng)PI函數的監控

具備控制API函數調用的能力是非常有用的。它能夠使程序開(kāi)發(fā)者追蹤一些發(fā)生在A(yíng)PI調用過(guò)程中、通常對外部應用“不可見(jiàn)”的系統行為。這種方法主要用于特定環(huán)境下對函數參數的驗證和檢查。比如,在某些情況下,監控與內存相關(guān)的API調用可以有效的捕獲內存資源泄漏的問(wèn)題。

2、便于調試與逆向工程

基于函數截獲的調試方法一直在調試技術(shù)中占據重要的地位。許多程序開(kāi)發(fā)者使用函數截獲方法來(lái)確定程序部件的實(shí)現和相互關(guān)聯(lián)。API截獲(APlinterception是獲取二進(jìn)制執行文件信息的重要方法。

3、便于窺視系統內部實(shí)現

許多程序開(kāi)發(fā)者希望對非開(kāi)源操作系統有深層次的了解。函數截獲方法是一種有效的探索API內部細節的方法。

4、便于擴展函數的功能

為了能夠改變或擴展模塊功能,通常使用函數截獲的方法對程序的正常執行流進(jìn)行重新定向。比如,許多第三方軟件產(chǎn)品有時(shí)候無(wú)法滿(mǎn)足具體的安全要求,因此不得不對其進(jìn)行一些調整。為了解決這種問(wèn)題,應用程序開(kāi)發(fā)者可以利用函數截獲方法對原函數添加一些額外的前置和后置處理過(guò)程。這種方法對改變一些已經(jīng)編譯后的代碼行為極為有用。

對于一個(gè)需要利用函數截獲的系統來(lái)說(shuō),通常需要依據函數截獲的目標和使用環(huán)境來(lái)決定具體采用何種函數截獲方法。首先,我們需要考慮設計目標是只針對單一應用進(jìn)行截獲還是需要構建一個(gè)系統級的截獲方案。比如,如果只需要監控一個(gè)特定應用,那么就不需要對一個(gè)系統級的函數進(jìn)行截獲。

一個(gè)截獲系統(Hook System)通常由至少兩個(gè)部分組成,即一個(gè)截獲服務(wù)器

CHook Server)和一個(gè)截獲驅動(dòng)器(HookDriver)。截獲驅動(dòng)器主要完成實(shí)際的截獲功能,截獲服務(wù)器則負責將截獲驅動(dòng)器在特定時(shí)刻注入(inject到目標進(jìn)程。截獲服務(wù)器同時(shí)管理驅動(dòng)器并且選擇性的接受來(lái)自驅動(dòng)器的信息。

三 緩存數據組織與管理

(一)模型設計

內存網(wǎng)格系統擴展了傳統的系統存儲層次結構,在主存和磁盤(pán)之間添加了內存網(wǎng)格層。內存網(wǎng)格層主要由內存服務(wù)節點(diǎn)提供的空閑內存空間構成,內存客戶(hù)節點(diǎn)通過(guò)利用這些空閑內存作為本地磁疵緩存的擴展,從而加速系統磁盤(pán)10的性能。但是對于內存服務(wù)節點(diǎn)提供的空閑內存空間,如何有效的對其進(jìn)行組織和管理就成為了一個(gè)關(guān)鍵問(wèn)題。

在基于協(xié)作緩存的改進(jìn)模型中,內存網(wǎng)格的內存客戶(hù)節點(diǎn)和提供其服務(wù)的內存服務(wù)節點(diǎn)比例為1:n。因此我們采用了基數樹(shù)和LRU鏈相結合的方式來(lái)解決查找和定位的問(wèn)題,基數樹(shù)用于解決緩存數據的定位問(wèn)題而存在于內存客戶(hù)節點(diǎn)中,LRU鏈用于對緩存數據的更新和替換存在于內存服務(wù)節點(diǎn)中。

在RAM Grid原型系統的最初設計過(guò)程中,為了簡(jiǎn)化管理過(guò)程,我們規定一個(gè)內存客戶(hù)節點(diǎn)在某一時(shí)刻有且盡可能使用一個(gè)內存服務(wù)節點(diǎn)的服務(wù)。為了能夠對內存服務(wù)節點(diǎn)中的空閑內存資源進(jìn)行有效管理,內存網(wǎng)格系統選擇在內存客戶(hù)節點(diǎn)中實(shí)現了緩存數據組織和管理模塊。緩存數據組織和管理模塊對緩存數據進(jìn)行本地管理,管理信息包括內存客戶(hù)節點(diǎn)所使用的內存服務(wù)節點(diǎn)上數據頁(yè)幀的狀態(tài)信息、存儲位置等。為了能夠達到這些目標,我們改變了模型中的緩存方案,使用了基于LRU和Hash雙鏈的數據組織和管理方法。

LRU鏈和Hash鏈的雙鏈管理結構在操作系統設計中由來(lái)已久。在開(kāi)源操作系統Linux的早期版本中,對于數據結構的管理與組織就大量的使用了這種經(jīng)典的雙鏈結構。其中,LRU鏈主要對數據結構進(jìn)行更新和替換:Hash鏈主要用于數據結構的快速查找和定位。通過(guò)雙鏈結構的管理和組織,當內存客戶(hù)節點(diǎn)通過(guò)本地文件系統進(jìn)行磁盤(pán)10操作時(shí),則可以利用遠地內存服務(wù)節點(diǎn)的內存來(lái)獲取數據,從而減小內存客戶(hù)節點(diǎn)磁盤(pán)開(kāi)銷(xiāo),提升系統性能。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>