一、核心物件
1.可以理解為作業系統使用和管理的控制塊,例如嵌入式作業系統裡的任務控制塊,郵箱控制塊等。
2.核心物件中有少數的靜態成員(全域性可見)。
3.只有通過呼叫windows api 才能使用核心物件。
4.核心物件的作用域是基於程序的,這樣做處於安全和健壯型考慮。
5.核心物件有乙個靜態成員用來計數,當核心物件被建立時計數值為1,如果有其他程序訪問此核心物件(通過特殊的程序共享核心物件的方式)則計數值加1,程序結束,計數值減1,如果計數為0,則系統核心會釋放此核心物件。
6.建立核心物件時需要指定核心物件的安全級別。
7.每個程序都有乙個核心物件的列表,列表由記憶體塊指標,訪問掩碼,和一些標誌位組成。
8.核心物件的建立:在程序的核心物件列表中,找到乙個空白位置,建立核心物件,控制代碼值/4(後兩位windows系統用)就是核心物件在列表中的索引。所以說核心物件的控制代碼不是物件的首位址,只是核心物件在核心物件列表中的索引值。
9.核心物件的關閉:計數值減1,如果為0,則釋放物件。
二、使用者物件/gdi物件
使用者建立的物件,使用者具有使用權。
gdi物件要選入windows裝置描述表後才能使用;用畢,要恢復裝置描述表的原gdi物件,並刪除該gdi物件。
gdi是圖形裝置介面(graphics device inte***ce, 或graphical device inte***ce)的簡稱,它是微軟公司的視窗作業系統(microsoft windows)的三大核心部件(也稱「子系統」)之一。gdi是微軟視窗系統(microsoft windows)表徵圖形物件及將其傳送給諸如顯示器、印表機之類輸出裝置的標準。
三、程序間共享核心物件有以下三種方式:
1.繼承物件控制代碼,首先要在建立物件時在引數安全結構體(security_attibutes)中指明控制代碼是可繼承的。
當指明物件的控制代碼是可繼承時,那麼在程序的核心物件列表中,標誌位中關於可繼承的位就會被置1.
那麼在父程序建立子程序的時候,子程序就會繼承父程序核心列表中所有的可繼承的控制代碼,只繼承一次。
但是子程序無法通過某種手段獲知自己繼承了哪些核心物件控制代碼,只能從程式文件中獲知。
2.繼承有名字的物件
如果程序a建立了乙個名字「good」的核心物件,程序b可以建立相同型別相同名字的物件,那麼就會有訪問權了。
也可以直接open特定名字的核心物件。
3.還有一種方式是複製乙個程序的核心物件列表dupilatehandle,很少用。
作業系統核心物件與GDI物件
核心物件 kernel object 表現為handle,它由kernel32.dll管理。核心物件可以有乙個以上的擁有者,甚至可以是跨程序的擁有者。每乙個核心物件內部都有乙個引用記數 refenrence count 當引用記數為0時,作業系統將銷毀該核心物件 cleans up操作 closeh...
核心物件執行緒同步 信標核心物件
信標核心物件用於對資源進行計數。乙個使用數量 乙個是最大資源數量 用於標識信標能夠控制的資源的最大數量 乙個是當前資源數量 用於標識當前可以使用的資源的數量 如果當前資源的數量大於0,則發出信標訊號。如果當前資源數量是0,則不發出信標訊號。系統決不允許當前資源的數量為負值。當前資源數量決不能大於最大...
RTT核心物件 核心物件的派生
核心物件的派生 2019年2月23日 16 27 下圖則顯示了 rt thread 中各類核心物件的派生和繼承關係。對於每一種具體核心物件和物件控制塊,除了基本結構外,還有自己的擴充套件屬性 私有屬性 例如,對於執行緒控制塊,在基類物件基礎上進行擴充套件,增加了執行緒狀態 優先順序等屬性。這些屬性在...