明明白白我的心 fs series 4

2021-05-23 07:31:33 字數 2392 閱讀 1543

作者:gtt

本文件歸屬

請提出寶貴意見mail:[email protected]

linux version:

2.6.33 提示

:本文是關於file system 實現的介紹

!再來看看linux 2.6.33中ext2的結構圖

super block的定義如下

struct ext2_super_block

; inode的定義如下

struct ext2_inode linux1;

struct

hurd1;

struct

masix1;

} osd1;

/* os dependent 1 */

__le32 i_block[ext2_n_blocks]

;/* pointers to blocks */

__le32 i_generation;

/* file version (for nfs) */

__le32 i_file_acl;

/* file acl */

__le32 i_dir_acl;

/* directory acl */

__le32 i_faddr;

/* fragment address */

union

linux2;

struct

hurd2;

struct

masix2;

} osd2;

/* os dependent 2 */};

而目錄項的定義如下

struct ext2_dir_entry_2

; 再來看看ext2fs是如何進行資料管理的

看上去只是比minixfs,多了乙個3次間接索引。這樣ext2fs的單個檔案的size可以更大。

上圖中b-no等我就是隨便起的名字,意思就是資料塊的內容是block number. 

追加一些內容,忘了寫了,就是在現在版本中對檔案的定義,因為不說這個隊vfs的實現就有點困難了。

定義如下

struct

file

f_u;

struct path f_path;

#define f_dentry f_path.dentry

#define f_vfsmnt f_path.mnt

const

struct file_operations *f_op;

spinlock_t f_lock;

/* f_ep_links, f_flags, no irq */

atomic_long_t f_count;

unsigned

int f_flags;

fmode_t f_mode;

loff_t f_pos;

struct fown_struct f_owner;

const

struct cred *f_cred;

struct file_ra_state f_ra;

u64 f_version;

#ifdef config_security

void

*f_security;

#endif

/* needed for tty driver, and maybe others */

void

*private_data;

#ifdef config_epoll

/* used by fs/eventpoll.c to link all the hooks to this file */

struct list_head f_ep_links;

#endif

/* #ifdef config_epoll */

#ifdef config_debug_writecount

unsigned

long f_mnt_write_state;

#endif

}其它field可以先不考慮,但是struct path f_path這項得關注。

他的定義如下

struct path

;為什麼要提這個呢,因為他包含了乙個dentry的指標,而dentry又有inode的指標。

這樣有和早期minixfs的實現基本對應上了,早期minixfs的檔案結構中直接放的inode指標。其實就是換湯不換藥。這樣對以後抽象出來vfs很關鍵的。

明明白白之搜尋演算法

1 定義 搜尋演算法是去搜尋每乙個可能,主要分以下幾種演算法 列舉法 暴力搜尋 深度優先搜尋 廣度優先搜尋 回溯2 深度優先搜尋 一條道走到黑 1 判斷邊界條件,向上回退 2 解決當前這一步需要做什麼 3 使用相同的邏輯處理下一步 3 廣度優先搜尋 為了便於進行搜尋,要設定乙個表儲存所有的結點。由於...

一些明明白白的句子

1,沒有乙個人會真的喜歡孤獨,可是對於優秀的人來說,他們明白能夠通向幸福的捷徑,從來不是合群,而是成為最優秀的自己。人只有在獨處的時候,才能夠真正的去學習一些東西,去思考一些東西,優秀的人喜歡的從來不是獨處,而是喜歡因為獨處而給自己帶來的收穫。2,我渴望有自己獨立的人格,我渴望自己內心的特立獨行和桀...

明明白白OSPF與EIGRP的區別

明明白白ospf與eigrp的區別 在網際網路飛速發展的今天,tcp ip協議已經成為資料網路互聯的主流協議。在各種網路上執行的大大小小各種型號路由器,承擔著控制本世紀或許最重要資訊的流量,而這成百上千臺路由器間的協同工作,離不開路由協議。ospf和eigrp都是近年來出現的比較好的動態路由協議,o...