Linux核心物件管理

2022-05-02 21:15:08 字數 1156 閱讀 8467

核心中很多地方都需要跟蹤記錄c語言中結構的例項。儘管這些物件的用法大不相同,但各個子系統的某些操作都非常類似,如引用計數,核心為了減少**複製,採用了一般性的方法來管理核心物件。所引入的框架並不只是為了減少**複製,同時也為核心不同部分管理的物件提供了一致的檢視。

一般性的核心物件機制可用於執行下列物件操作:

1.引用計數;

2.管理物件鍊錶;

3.集合加鎖;

4.將物件屬性匯出到使用者空間(通過sysfs檔案系統);

一般性的核心物件kobject

struct kobject ;

kobject

資料結構嵌入到其它結構中,用作核心物件的基礎。通過管理kobjcet即達到了對包含kobject的物件的管理。

核心提供了處理kobject的一套標準方法,包括:

kobject_get, kobject_put

對kobject的引用計數器加1或減1

kobject_(un)register

註冊或刪除物件,物件被新增到父物件現存的集合中,同時在sysfs中建立乙個對應項

kobjcet_init

初始化kobject物件

kobject_add

初始化核心物件,並使之顯示在sysfs中

kobject_cleanup

在不需要kobject(以及包含kobjcet的物件)時,釋放分配的資源

在很多情況下,必須將不同的核心物件歸類到集合中(相同型別的物件擁有公共的kobj_type),例如所有字元裝置集合,或所有基於pci的裝置集合,核心通過kset完成這一目標。

struct kset ;

kset

是核心物件應用的第乙個例子,kset中內嵌kobject結構,用於管理kset物件本身,與集合中包含的各個kobject物件並無關係。

引用計數用於檢測核心中有多少個地方使用了某個物件。每當核心的乙個部分需要某個物件所包含的資訊時,則增加該物件的引用計數;如果不再需要相應的資訊,則減少該物件的引用計數,當物件的引用計數為0時,核心知道不在需要該物件。

核心通過kref結構來管理引用計數

struct kref ;

在kref的設計中,將乙個值封裝在結構中,防止直接操縱該值,需使用輔助方法kref_init(初始化), kref_get(加1), kref_put(減1)進行操作。

複習 windows物件管理(1)核心物件組織結構

好久沒來了!最近在整理以前的一些筆記,也希望把以前學過但沒記下來的東西補全,於是這是新一輪複習的第一篇。一 一些概念 xp下核心物件的布局結構如下 由低到高 object quota info object handle info object name info object creater in...

《Windows核心情景分析》物件管理

物件的資料結構都是由物件頭和具體物件型別的資料結構兩部分組成。物件頭object header在下,它的上方是具體物件型別的資料結構本身。nt object header 0x000 pointercount int4b 0x004 handlecount int4b 0x004 nexttofre...

測試物件管理

1 uft中物件的概念 uft中的物件有兩個概念,乙個是測試物件,乙個是執行時物件 1 測試物件 test object,to 是uft定義的一些類,用它們代表被測應用的各種物件。2 執行時物件 runtime object,ro 是實際的被測應用物件,是測試執行過程中,to用來關聯的物件。2 uf...