讀書筆記-深入linux內核架構-Chapter 1


《第一章》簡介和概述

實現策略:微內核、宏內核

命名空間:全局資源具有不同的分組

由於被中斷的進程與中斷原因沒有什么關系,因此內核無權訪問被中斷進程用戶空間的內容。

 

頁表

虛擬地址的分割:

clip_image002

頁表的一個特色在於:對虛擬地址空間中不需要的區域,不必創建中間頁目錄或者頁表,與直接使用一級頁表數組的方式相比,節省了大量的內存。

加速轉換:1.MMU硬件支持,2.TLB硬件緩存(有些架構下TLB運轉透明,有些需要內核專門處理)

內存映射:內存映射是一種重要的抽象手段,可以將任意來源的數據傳輸到進程的虛擬地址空間,映射到的這部分虛擬地址空間可以像內存一樣被操作,其上的修改會被內核自動傳輸到數據源。這樣就可以使用相同的函數處理不同的目標對象。

 

物理內存分配

伙伴系統:

clip_image004

伙伴系統一定程度上可以減少碎片,但不能完全消除。

 

slab緩存:

內核經常需要比一個頁幀小得多的一塊內存。內核使用slab機制。

 

伙伴系統、slab緩存、內核其他部分的聯系:

clip_image006

 

系統調用分類:

進程管理、信號、文件、目錄和文件系統、保護機制、定時器函數。

 

VFS

clip_image008

 

對象管理和引用計數:

內核采用了一般性的方法來管理(例如引用計數)內核對象。管理操作包括 引用計數、管理對象鏈表、集合加鎖、將對象屬性導出到用戶空間(via sysfs)。

struct kobject {

    constchar * k_name;

    struct kref kref;

    struct list_head entry;

    struct kobject * parent;

    struct kset * kset;

    struct kobj_type * ktype;

    struct sysfs_dirent * sd;

};

 

kobject嵌入到其他數據結構中

struct sample {

    … …

    struct kobject kobj;

    … …

};

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM