原创 塊設備的基本概述

  什麼是塊設備,塊設備將信息存儲在固定大小的塊中,每個塊都有自己的地址。數據塊的大小通常在512字節到32768字節之間。塊設備的基本特徵是每個塊

原创 sysfs之platform總線初始化簡單分析

int __init platform_bus_init(void) { 01 int error; 02 03 early_platform_cleanup(); 04 05 error = device_register(&platf

原创 linux 內核的啓動構架

 內核爲2.6.30.4,平臺爲S3C2440,友善之臂。 內核的啓動代碼,但一般情況下,是兩部分,爲了容易理解,可以這樣分成三部分。 內核啓動的第

原创 linux VFS數據結構(二)

目錄項對象 存放目錄項與對應文件進行鏈接的有關信息。每個磁盤文件系統都以自己特有的方式將該類信息存在磁盤上。 VFS把目錄項當作目錄文件來對待,路徑中的每個組成部分有一個索引結點表示,雖然它們可以由索引結點表示,但VFS經常需要執行目錄相

原创 linux 啓動之setup_arch函數(二)

01static void __init alloc_init_section(pgd_t *pgd, unsigned long addr, 02 unsigned long end, unsigned long ph

原创 linux 啓動之setup_arch函數(一)

01void __init setup_arch(char **cmdline_p) 02{ 03 struct tag *tags = (struct tag *)&init_tags; 04 struct machine_desc *

原创 頁高速緩存(一)

 一、 頁高速緩存 頁高速緩存是Linux內核使用的主要磁盤高速緩存。在大多數情況下,內核在讀寫磁盤的時候都會引用頁高速緩存。如果頁不在高速緩存中,新的頁就會回到高速緩存中,然後從磁盤中讀出數據來填充它。如果內存有足夠的空閒空間,會讓該頁

原创 rootfs文件系統的簡單分析

rootfs文件系統是基於內存的文件系統,也是虛擬的文件系統,在系統啓動之後,隱藏在真正的根文件系統後面,不能被卸載。 在開始介紹rootfs之前,先介紹一下,rootfs的數據結構,然後再看一下rootfs中的函數rootfs_get_

原创 sysfs 文件系統簡單分析

01int __init sysfs_init(void) 02{ 03 int err = -ENOMEM; 04 05 sysfs_dir_cachep = kmem_cache_create("sysfs_dir_cache", 0

原创 linux 根文件系統的掛載分析(一)

在介紹根文件系統掛載之前先介紹一些基礎知識 initramfs 當linux內核啓動後,會找到並執行第一個用戶程序,一般是init。這個程序存在於文件系統當中,文件系統存在於設備上,但不知道init存在哪個設備上,於是有了內核命令列選項r

原创 linux 根文件系統掛載分析(二)

第三部分解壓initramfs文件系統中的內容到rootfs 01static int __init populate_rootfs(void) 02{ 03 char *err = unpack_to_rootfs(__initramf

原创 linux VFS數據結構(一)

VFS的數據結構 超級塊對象 記錄已安裝文件系統的整體信息,由於具體的文件系統來實現,它對應於具體文件系統的超級塊或控制塊,存儲在磁盤的特定扇區上,如果不是基於磁盤的文件系統,比如sysfs,會生成臨時的超級塊,保存在內存當中。 01st

原创 頁高速緩存(二)

五. 把塊放在頁高速緩存中 在舊的Linux內核版本中,有兩種不同的磁盤高速緩存,分別是頁高速緩存和緩衝區高速緩存,前者用來存放訪問磁盤文件內容時生成的磁盤數據頁,後者把通過VFS訪問的塊的內容保留在內存中。從2.4.10版本開始,緩衝區

原创 sys之device初始化簡單

01int __init devices_init(void) 02{ 03 devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL); 04 if (

原创 linux 驅動模型的數據結構

sysfs文件系統 sysfs文件系統是一種特殊的文件系統,在系統啓動時,被安裝在/sys目錄,目標主要是展現設備驅動程序模型組件間的層次關係。所包含的目錄如下: block  塊設備,它們獨立於所連接的總線 devices  所有被內核