qemu中的Hbitmap資料結構

2021-07-25 13:26:04 字數 587 閱讀 4898

儘管unsigned long已經能夠勝任bitmap的實現,但是這樣實現的bitmap,當bitmap比較大的時候,它的操作效率很低。典型的,像為blockdriver維持bitmap,磁碟檔案的每個塊都對應乙個bit位,那麼這張bitmap表是很大的。如果在熱遷移過程中,需要將映象檔案熱遷移到目標宿主機,每次查詢bitmap的效率很低。因此,qemu針對磁碟映象檔案設計了hbitmap資料結構。

hbitmap(hierarchical bitmap),正如其名,這種hbitmap是一種層次結構,hbitmap的底層就是我們原有的bitmap,而hbitmap其他層的定義是:在第n層中,第n+1層的第m個unsigned long型的整數為0,則第n層的第m個bit為0,否則第n層的第m個bit為1.

hbitmap的資料結構如下:

hbitmap對bitmap的訪問、set操作在util/hbitmap.c中實現。這種資料結構能夠實現,從乙個被設定為1的bit訪問到下乙個被設定為1 的bit的時間複雜度是logn,其中n是原有bitmap的bit數。

由RGB資料建立HBITMAP

久離vc現場,感覺手有點生疏,應了一句話 武功珍藏是要貶值的 何況現在又是牛氣沖天。在開發中要用到編個錄影功能,需要由rgb資料建立hbitmap,試了幾個函式,createbitmap,createdibitmap,得到的始終不是正確的結果,在網上找了這個兩個函式一些資訊,沒有針對性的解釋,索性換...

HBITMAP和CBitmap的互相轉換

hbitmap hbmp 方法 cpp view plain copy cbitmap pbmp cbitmap fromhandle hbmp 方法 cpp view plain copy cbitmap bmp bmp.attach hbmp 方法 轉換出來的臨時cbitmap物件似乎並不是可靠...

CBitmap和HBITMAP的區別及相互轉換方法

cbitmap和hbitmap的區別及相互轉換方法 2008 06 16 08 05 03 cbitmap和hbitmap的區別及相互轉換方法 hpen hpen,hpen2 cpen pen,pen2 pen.attach hpen hpen2 hpen pen cbitmap bmp bmp.l...