檔案描述符

2021-07-16 08:00:41 字數 1839 閱讀 5403

1.每個檔案程序控制塊中都有乙份檔案描述符表(可以把它看成是乙個陣列,裡面的元素是指向file

結構體指標型別),這個陣列的下標就是檔案描述符。

2.file結構體中有開啟檔案的許可權,當前讀寫位置,引用計數等屬性。每個file結構體都指向乙個file_operations結構體,這個結構體的成員都是函式指標,指向實現各種檔案操作的核心函式。

3.每個file結構體都有乙個指向dentry

結構體的指標。為了減少讀盤次數,核心快取了目錄的樹狀結構,稱為dentry cache,其中每個節點是乙個dentry結構體

4.每個dentry結構體都有乙個指標指向inode

結構體。

5.inode結構體中儲存著從磁碟分割槽的inode讀上來資訊,例如所有者、檔案大小、檔案型別和許可權位等。

6.每個inode結構體都有乙個指向inode_operations

結構體的指標。

7.inode_operations是一組函式指標指向一些完成檔案目錄操作的核心函式。屬於同一檔案系統的各inode結構體可以指向同乙個inode_operations結構體。

8.inode結構體有乙個指向super_block

結構體的指標。

9.super_block結構體儲存著從磁碟分割槽的超級塊讀上來的資訊。

名稱**實現

struct file

file結構體

struct file f_u;

struct path f_path; 包含dentry和mnt兩個成員,用於確定檔案路徑

#define f_dentry f_path.dentry f_path的成員之一,當前檔案的dentry結構

#define f_vfsmnt f_path.mnt 表示當前檔案所在檔案系統的掛載根目錄

const struct file_operations *f_op;

與該檔案相關聯的操作函式

atomic_t f_count;

檔案的引用計數(有多少程序開啟該檔案)

unsigned int f_flags;

對應於open時指定的flag

mode_t f_mode; 讀寫模式:open的mod_t mode引數

off_t f_pos; 該檔案在當前程序中的檔案偏移量

struct fown_struct f_owner; 該結構的作用是通過訊號進行i/o時間通知的資料。

unsigned int f_uid, f_gid; 檔案所有者id,所有者組id

struct file_ra_state f_ra; 在linux/include/linux/fs.h中定義,檔案預讀相關

unsigned long 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;

spinlock_t f_ep_lock;

#endif /* #ifdef config_epoll */

struct dentry

dentry結構體

struct dentry u;

mysql 檔案描述符 檔案描述符

toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...

檔案描述符

檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...

檔案描述符

作業系統程序表中存放各個檔案進行檔案描述 核心 kernel 利用檔案描述符 file descriptor 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。目錄檔案描述符概述 如何建立檔案描述符 使用的好處 缺點...