關於Linux系統中“目錄項”的解釋
dentry 的定義在include/linux/dcache.h中:
struct dentry { atomic_t d_count; /* 目錄項引用計數器 */ unsigned int d_flags; /* 目錄項標誌 */ struct inode * d_inode; /* 與檔名關聯的索引節點 */ struct dentry * d_parent; /* 父目錄的目錄項 */ struct list_head d_hash; /* 目錄項形成的雜湊表 */ struct list_head d_lru; /*未使用的 LRU 連結串列 */ struct list_head d_child; /*父目錄的子目錄項所形成的連結串列 */ struct list_head d_subdirs; /* 該目錄項的子目錄所形成的連結串列*/ struct list_head d_alias; /* 索引節點別名的連結串列*/ int d_mounted; /* 目錄項的安裝點 */ struct qstr d_name; /* 目錄項名(可快速查詢) */ unsigned long d_time; /* 由 d_revalidate函式使用 */ struct dentry_operations *d_op; /* 目錄項的函式集*/ struct super_block * d_sb; /* 目錄項樹的根 (即檔案的超級塊)*/ unsigned long d_vfs_flags; void * d_fsdata; /* 具體檔案系統的資料 */ unsigned char d_iname[DNAME_INLINE_LEN]; /* 短檔名 */ };
下面對dentry結構給出進一步的解釋。
一個有效的dentry結構必定有一個inode結構,這是因為一個目錄項要麼代表著一個檔案,要麼代表著一個目錄,而目錄實際上也是檔案。所以,只要dentry結構是有效的,則其指標d_inode必定指向一個inode結構。可是,反過來則不然,一個inode卻可能對應著不止一個dentry結構;也就是說,一個檔案可以有不止一個檔名或路徑名。這是因為一個已經建立的檔案可以被連線(link)到其他檔名。所以在inode結構中有一個佇列i_dentry,凡是代表著同一個檔案的所有目錄項都通過其dentry結構中的d_alias域掛入相應inode結構中的i_dentry佇列。
在核心中有一個雜湊表dentry_hashtable ,是一個list_head的指標陣列。一旦在記憶體中建立起一個目錄節點的dentry 結構,該dentry結構就通過其d_hash域鏈入雜湊表中的某個佇列中。
核心中還有一個佇列dentry_unused,凡是已經沒有使用者(count域為0)使用的dentry結構就通過其d_lru域掛入這個佇列。
Dentry結構中除了d_alias 、d_hash、d_lru三個佇列外,還有d_vfsmnt、d_child及d_subdir三個佇列。其中d_vfsmnt僅在該dentry為一個安裝點時才使用。另外,當該目錄節點有父目錄時,則其dentry結構就通過d_child掛入其父節點的d_subdirs佇列中,同時又通過指標d_parent指向其父目錄的dentry結構,而它自己各個子目錄的dentry結構則掛在其d_subdirs域指向的佇列中。
從上面的敘述可以看出,一個檔案系統中所有目錄項結構或組織為一個雜湊表,或組織為一顆樹,或按照某種需要組織為一個連結串列,這將為檔案訪問和檔案路徑搜尋奠定下良好的基礎。
相關推薦
關於Linux系統中“目錄項”的解釋
每個檔案除了有一個索引節點inode資料結構外,還有一個目錄項dentry(directory enrty)資料結構。dentry 結構中有個d_inode指標指向相應的inode結構。讀者也許會問,既然inode結構和dentry結構都是對檔案各方面屬性的
linux系統中部署項目,驗證碼不能正常顯示,而windows下面的tomcat下運行,驗證碼能正常顯示,之解決辦法
windows 解決辦法 ali -a 修改 不能 項目 clas bsp linux下驗證碼功能不能正常顯示 步驟方法:1、修改${TOMCAT_HOME}/bin/catalina.sh (windows修改catalina.bat)。2、查找到-Djava.io.tm
Linux系統中目錄詳解
1、Linux檔案系統的層次結構 在Linux或Unix作業系統中,所有的檔案和目錄都被組織成以一個根節點開始的倒置的樹狀結構。 檔案系統的最頂層是由根目錄開始的,系統使用”/“來表示根目錄。在根目錄之下的既可以是目錄,也可以是檔案,而每一個目錄
linux 系統中的 /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin 目錄的區別
。。 process pre this 用戶 unix table mount sent 先來段英文的: /bin This directory contains executable programs which are needed in single user
Linux系統中/opt 和 /usr目錄
manual test 文件 data AI folder and 適合 ogre 重點:usr是Unix Software Resource的縮寫,即“UNIX操作系統軟件資源”所放置的目錄。 下面是個人找到的適合類似我這種從Windows轉向Linux小白的文章。 Re
Linux系統中各種系統日誌檔案主要存放在系統中哪個目錄
/var/log/message 系統啟動後的資訊和錯誤日誌,是Red Hat Linux中最常用的日誌之一 /var/log/secure 與安全相關的日誌資訊 /var/log/maillog 與郵件相關的日誌資訊 /var/log/cron 與定時任務相關的日誌資訊 /va
linux系統中交換區間(swap file)的解釋
Swap的調整對Linux伺服器,特別是Web伺服器的效能至關重要。通過調整Swap,有時可以越過系統性能瓶頸,節省系統升級費用。Swap空間的作用可簡單描述為:當系統的實體記憶體不夠用的時候,就需要將實體記憶體中的一部分空間釋放出來,以供當前執行的程式使用。這裡的s
Linux下/usr/bin與/usr/local/bin/區別總結 linux 系統中的 /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin 目錄的區別 linux 系統中的 /bin /sbin /usr/bin /usr/s
Linux下/usr/bin與/usr/local/bin/區別總結 2017年10月13日 12:30:17 2puT 閱讀數:15930 一.
VMware下的Linux系統中Windows的共享目錄,不支援建立軟連線
【問題】 在編譯VMware下的Linux系統對從Windows中共享過來的檔案,進行編譯的時候,遇到: ln: creating symbolic link XXXXXX : Operation not supported 【環境】 VmWare的Linux + Windows XP + vmhgf
Linux系統中 查詢目錄下的所有檔案中是否含有某個字串
查詢目錄下的所有檔案中是否含有某個字串 find .|xargs grep -ri "IBM" 查詢目錄下的所有檔案中是否含有某個字串,並且只打印出檔名 find .|xargs grep -ri "IBM" -l 1.正則表示式 (1)正則表示式一般用來描述文字模式
Linux系統中常見的目錄名稱以及相應內容
share align root table ext 共享文件 開機過程 ali 數據文件 目錄名稱 應放置文件的內容 /boot 開機所需文件——內核、開機菜單以及所需配置文件等等 /dev 以文件形式存放任何
老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?
邏輯卷管理 磁盤 每日一題 1.題目老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?2.參考答案01:將一個或多個物理分區創建為一個PV# pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" success
linux系統中定時任務
linu tab 一次 腳本 lin edi 路徑 執行 表示 1、查看所有定時任務:命令:“crontab -l” 數字意思解釋如下:從左到右,依次是:分、時、日、月、星期。 2、編輯定時執行計劃:命令:"crontab -e" ,e表示edit修改的意思。 3、修
Linux 系統中這樣修復 SambaCry 漏洞
windows 服務器 解決方案 linux 非官方 導讀Samba 很久以來一直是為 linux 系統上的 Windows 客戶端提供共享文件和打印服務的標準。家庭用戶,中型企業和大型公司都在使用它,它作為最佳解決方案在多種操作系統共存的環境中脫穎而出,由於廣泛使用的工具很可能發生這種情
linux 系統統計目錄下文件夾的大小
with des 但是 from cif pac 文件占用 解釋 and du -ah --max-depth=1 這個是我想要的結果 a表示顯示目錄下所有的文件和文件夾(不含子目錄),h表示以人類能看懂的方式,max-depth表示目錄的深度。 du命令用來查看
Linux 系統中安裝Mysql_5.6
上傳 粘貼 啟動mysql grant ont linu chm cli char Linux 系統中安裝Mysql_5.6 安裝包下載地址(http://pan.baidu.com/s/1o8G5q
在Linux系統中安裝vmTools
cdr cdrom linu 是否 壓縮 進入 span pan tin 以下是,會用到的命令、遇到的問題及解釋: 在虛擬機中安裝centOS系統,因為後續安裝服務或者其他的東西,因此需要安裝vmTools,方便將文件從宿主電腦拖進虛擬機內。(我的是tar壓縮包的vmToo
Linux系統中有關/dev/null和/dev/zero文件說明及實踐
linux /dev/null 特殊文件 /dev/zero Linux系統中有關/dev/null和/dev/zero文件說明提示:這個題目完全可以作為一個面試題考考運維的應聘者:面試題:請解釋Linux中/dev/null和/dev/zero兩個文件的作用和區別。在類Unix操作系統中,
運維學習之Linux系統中的文件傳輸、歸檔、壓縮
linux不同系統之間的文件傳輸1.文件歸檔1.文件歸檔,就是把多個文件變成一個歸檔文件2.tar c ##創建 f ##指定歸檔文件名稱 t ##顯示歸檔文件中的內容 r ##向歸檔文件中添加文件 --get ##取出單個文件 --delete ##刪除單個文件 x ##取出歸檔文件中的所有內容
Linux系統中如何查看日誌信息
日誌文件 系統日誌 楊書凡 日誌文件是用於記錄Linux系統中各種運行消息的文件,不同的日誌文件記載了不同類型的信息,對於診斷和解決系統中的問題很有幫助分析日誌文件 日誌數據主要包括三種類型:內核及系統日誌、用戶日誌、程序日誌 #對於大多數的文本格式的日誌文件,使用tail、more、l