freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

linux環(huán)境下虛擬文件系統(tǒng)分析研究(編輯修改稿)

2024-09-26 13:43 本頁面
 

【文章內容簡介】 中一個最重要的概念就是超級塊。總的來看,超級塊包含所有關于一個文件系統(tǒng)的關鍵信息。當某個文件系統(tǒng)被掛載時,超級塊將被讀(通過一個系統(tǒng)調用 filesystem_read_super)并且,超級塊包含訪問文件系統(tǒng)其他部分的必要的信息 [10]。有些文件系統(tǒng) (例如 MSDOS FAT)沒有超級塊,這時, VFS 將為他們創(chuàng)建一個“虛擬”超級塊。 同時,由于在一個計算機系統(tǒng)中可能存在多 個文件系統(tǒng),在虛擬文件系統(tǒng)中也就對應有多個超級塊,為了便于管理,系統(tǒng)用一個雙向鏈表存儲它們 。 Super_block 結構體定義在 linux/。出來包含關于所有文件系統(tǒng)的通用信息外,它還包含一個聯(lián)合體,這個聯(lián)合體中存放一些與某特定文件系統(tǒng)具體相關信息的結構體。 struct super_block { struct list_head s_list。 kdev_t s_dev。 unsigned long s_blocksize。 unsigned char s_blocksize_bits。 unsigned char s_lock。 unsigned char s_rd_only。 Linux 環(huán)境下虛擬文件系統(tǒng)分析研究 第三章 虛擬文件系統(tǒng) 9 unsigned char s_dirty。 struct file_system_type * s_type。 struct super_operations * s_op。 struct dquot_operations * dq_op。 unsigned long s_flags。 unsigned long s_magic。 unsigned long s_time。 struct dentry * s_root。 struct wait_queue * s_wait。 struct inode * s_ibasket。 short int s_ibasket_count。 short int s_ibasket_max。 struct list_head s_dirty。 union { struct minix_sb_info minix_sb。 struct ext2_sb_info ext2_sb。 void *generic_sbp。 }u。 }。 s_list:這個成員被用來維持一個超級塊雙向鏈表,它包含 next,previous 指針。 s_dev:這是該文件系統(tǒng)的實際物理設備,有些文件系統(tǒng) (最著名的就是 pro文件系統(tǒng) )不需要物理設備。對于那樣的文件系統(tǒng),這個成員將被忽略。 s_blocksize:這個成員包含該文件系統(tǒng)的塊大小 (以 byte 為單位 )。 s_blocksize_bits:與前一成員具有相同的值,只是它是一 bit 為單位。 s_lock:這個成員被用來給超級塊加鎖,從而保證對超級塊的順序訪問。 s_rd_only:這個成員目前沒有用。 s_dirty:這是一個標志,用來指示該超級塊是否變臟,超級塊是臟的如果從它最后一次寫入磁盤后已經發(fā)生了內容改變。 s_type:這是一個指針指向這個文件系統(tǒng)的 file_system_type 目錄項。 s_op:這是一個指向該文件系統(tǒng)超級塊操 作集結構體的指針 。 dq_op:這是一個指向磁盤配額結構體的指針。 s_flags:這個成員包含該文件系統(tǒng)的掛載標志,這些信息包含一些信息,比如:這個文件系統(tǒng)是否需要一個設備,或者這個文件系統(tǒng)是否以只讀方式掛載。 Linux 環(huán)境下虛擬文件系統(tǒng)分析研究 第三章 虛擬文件系統(tǒng) 10 s_magic:這是一個魔數(shù)用來標識呈現(xiàn)在設備上的文件系統(tǒng)的類型。 s_time:標示超級塊最后一個被修改的時間。 s_root:這是一個指向該文件系統(tǒng)跟目錄的指針。 s_wait:這是一個包含當前正在等待訪問超級塊的任務的等待隊列。 s_ibasket:這個成員暫時沒有用到。 s_ibasket_count: 這個成員暫時沒有用到。 s_ibaskte_max: 這個成員暫時沒有用到。 s_dirty:這是該文件系統(tǒng)當前所有臟 I 節(jié)點所組成的鏈表。 super_operartions 結構體是放在 linux/中,它實際上是一個虛擬函數(shù)表,該表包含所有用來操作超級塊的函數(shù)。每個特定的文件系統(tǒng)都希望覆蓋這些函數(shù)并提供它們自己的函數(shù)指針集。 struct super_operations { void (* read_inode) {struct inode *}。 void (* write_inode) {struct inode *}。 void (* put_inode) {struct inode *}。 void (* delete_inode) {struct inode *}。 int (*notify_change) {struct dentry*,struct iaddr *}。 void (*put_super) {struct super_block *}。 void (*write_super) {struct super_block *}。 int (*statfs) { struct super_block *,struct statfs *,int}。 int (*remount_fs) { struct super_block *,int,char *}。 void (*clear_inode) {struct inode *}。 void (*umout_begin) {struct super_block *}。 }。 read_inode:當一個 索引 節(jié)點從文件系統(tǒng)被讀入時這個函數(shù)被調用。這個函數(shù)負責填充 索引 節(jié)點結構體大多數(shù)成員 (包括 inode_operation 指針 )。 write_inode:這個函數(shù)用來將一個 索引 節(jié)點寫出到磁盤中。 put_inode:將 索引 節(jié)點從 索引 節(jié)點高速緩存中移出。 delete_inode:當某個文件被刪除時,這個函數(shù)將被調用。它將釋放文件的索引 節(jié)點和數(shù)據(jù)塊并將空間歸還給內存。 notify_change:當一個 索引 節(jié)點的屬性改變時,這個函數(shù)將被調用。 put_super:當卸載一個文件系統(tǒng) 釋放超級塊給內存時,這個函數(shù)將被調用。 write_super:這個函數(shù)將超級快寫出到磁盤中。 statfs:這個函數(shù)用來統(tǒng)計該文件系統(tǒng)的有關信息。 remount_fs:當一個文件系統(tǒng)被重新掛載時 (為了改變掛載標志 )將被調用。 Linux 環(huán)境下虛擬文件系統(tǒng)分析研究 第三章 虛擬文件系統(tǒng) 11 clear_inode:這個函數(shù)與 delete_inode 類似,但是它是在 索引 節(jié)點被反散列后并且所有對它的引用被清除了后調用的。 umount_begin:當 VFS 開始卸載一個文件系統(tǒng)時,這個函數(shù)將被調用。 索引 節(jié)點 VFS 中另外一個重要概念就是 索引 節(jié)點。一個 索引 節(jié)點代 表一個獨立的文件系統(tǒng)實體 [11],例如一個文件,目錄,管道,套接字。文件系統(tǒng)中的每一個實體有一個唯一的 索引 節(jié)點,但是通過使用硬鏈接和符號鏈接,使得通過多個名字訪問同一個實體成為現(xiàn)實。 索引 節(jié)點結構體也存放在 linux/中。它包含很多信息,這些信息被多種類型的文件系統(tǒng)的不同 I 節(jié)點使用。與 super_block 結構體一樣,它也包含一個聯(lián)合體 (成員由與特定文件系統(tǒng)相關,類型相關的結構體 )。 struct inode { struct list_head i_hash。 struct list_head i_list。 struct list_head i_dentry。 unsigned long i_ino。 unsigned int i_count。 kedv_t i_dev。 umode_t i_mode。 nlink_t i_nlink。 uid_t i_uid。 gid_t i_gid。 kdev_t i_rdev。 off_t i_size。 time_t i_atime。 time_t i_mtime。 time_t i_ctime。 unsigned long i_blksize。 unsigned long i_blocks。 unsigned long i_version。 unsigned long i_nrpages。 struct semaphore i_sem。 struct semaphore i_atomic_write。 struct inode_operation * i_op。 Linux 環(huán)境下虛擬文件系統(tǒng)分析研究 第三章 虛擬文件系統(tǒng) 12 struct super_block * i_sb。 struct wait_queue * i_wait。 struct file_lock * i_flock。 struct vm_area_struct * i_mmap。 struct page * i_pages。 struct dquot * i_dquot[MAXQUOTAS]。 unsigned long i_state。 unsigned int i_flags。 unsigned char i_pipe。 unsigned char i_sock。 int i_writecount。 unsigned int i_attr_flags。 __u32 i_generation。 union { struct pipe_inode_info pipe_i。 struct minix_inode_info minix_i。 void *generic_ip。 }u。 }。 i_hash:這個成員用來維持一個雙向隊列以解決因為散列沖突。 i_list:這個用來將 索引 節(jié)點放到三個雙向隊列中。 i_dentry:這是一個與該 索引 節(jié)點對應的目錄項鏈表。 i_no:這是一個用來標示該 索引 節(jié)點的數(shù)字,它在同一個文件系統(tǒng)中保持唯一。 i_count: 該 索引 節(jié)點的引用數(shù),當它變成 0 時,我們可以將它從內存中移出。 i_dev:這是該 索引 節(jié)點所屬文件系統(tǒng)的物理設備標示。 i_mode:這個成員包含文件類型和訪問權限。 i_nlink:這是該 索引 節(jié)點的硬鏈接數(shù),如果它為 0,該 索引 節(jié)點可以刪除了。 i_uid:該 索引 節(jié)點的主人的 User ID。 i_gid: 該 索引 節(jié)點的主人的 Group ID。 i_rdev:如果該 索引 節(jié)點是一個設備文件對應的 I 節(jié)點,它就是該設備標示。 i_size:該 索引 節(jié)點對應的文件的字節(jié)數(shù)。 Linux 環(huán)境下虛擬文件系統(tǒng)分析研究 第三章 虛擬文件系統(tǒng) 13 i_atime:上次訪問的時間。 i_mtime:上次修改的時間。 i_ctime:文件創(chuàng)建的時間。 i_blksize:文件系統(tǒng)每個塊的字節(jié)數(shù)。 i_blocks:文件所含有塊數(shù)。 i_version:用來檢查失效信息,當 索引 節(jié)點出現(xiàn)相關變化時,它將被更新。 i_nrpages:當前實際用來映射該文 件的內存頁數(shù)。 i_sem:這是一個信號量,它用來控制對 索引 節(jié)點的訪問,阻止在讀的時候對 I 節(jié)點進行修改。 i_atomic_write:它用來標記一個對管道的原子性寫操作正在被請求。它必須在獲得其他通用 索引 節(jié)點信號量前完成。 i_op:這是一個指向該 索引 節(jié)點操作集的指針。 i_sb:指向該 索引 節(jié)點所屬文件系統(tǒng)的超級塊的指針。 i_wait:這是一個等待隊列,該隊列包含所有因訪問該 索引 節(jié)點而等待的任務,當該 I 節(jié)點變的可用時,這些任務將會被通知。 i_flock:這是一個文件鎖鏈表,文件鎖被同時保存在每個 索引 節(jié) 點的單向鏈表和系統(tǒng)為所有文件鎖所設立的雙向鏈表中。 i_mmap:指向用來映射該文件的內存區(qū)域。 i_pages:該文件所對
點擊復制文檔內容
法律信息相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1