關於enqueue的一些認識

litterbaby發表於2007-04-01

的一些認識

[@more@]

的一些認識

我也談談自己的想法:請大家批評指正

1enqueue是實現lock的一個機制,之所以這樣說,是因為相對於latch

2、對於每一個資源就有一個Resource Structure相對應。而且每一個資源有且不只一個Resource Structure和它對應,因為同一個資源,會有不同的型別的鎖,例如表就有TMTX型別。

3Resource StructureLock Structures只是enqueue物理實現的形式,

4Lock Structures是和回話有關係,當一個會話發出訪問資源的請求的話,就會提出一個Lock Structures

5Resource StructureLock Structures之間的關係主要是在於當多個Lock Structures同時請求一個Resource的時候,就會根據lock之間的相容性來“排隊”,就是透過holdingwaitconvert來實現。

6、所有的Resource Structure組成一個Resource table,系統會根據資源名進行hash來確定這個Resource Structure存放的位置,並能夠快速索引。這時候會有一個叫做hash bucket一個存放空間的產生,在這個空間內部Resource Structure的存放是一直chain鏈式的存放。系統在查詢一個資源的時候,會透過根據資源名進行hash演算法找到應該存放在那個bucket中,然後在這個bucket鏈式上一個一個查詢資源(這裡是不是順序查詢???),如果到頭還沒有找到的話,就在這個bucket上新建一個Resource Structure。(是不是同一型別的,我搞不太清楚,我認為應該是所有型別的組成一個唯一的表,為什麼這樣說,因為這個表是透過hash來進行檢索的,而檢索的產生源頭是有資源名,這樣就可以將所有的資源放到一個表中,還有利於系統的管理。)

7、在訪問Resource table的時候,是透過一個latch來管理,因為這是序列的訪問機制,所有會產生latch等待事件。enqueue hash chains latch

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-907895/,如需轉載,請註明出處,否則將追究法律責任。

相關文章