日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

[文件系统]文件系统学习笔记(一)---基本概念以及inode

發布時間:2025/5/22 windows 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [文件系统]文件系统学习笔记(一)---基本概念以及inode 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,文件系統基本概念

文件系統是一種用來存儲和組織計算機文件、目錄及其包含的數據的方法,它使文件、目錄以及數據的查找和訪問得到簡化。

2,硬鏈接和軟鏈接的區別

硬鏈接和軟鏈接的區別

–????????符號鏈接

–????????ln –s file1 file2

????????目錄項,內容為指向文件名的指針,并不存在其他數據。目標文件刪除時,符號鏈接仍然繼續保持。使用了一個獨立的inode。Inode的數據段包含了一個字符串,給出了鏈接目錄的路徑。(相當于windows中的快捷鍵)

–????????硬鏈接

–????????ln file1 file2

????????與原文件共用一個inode,增加引用計數。新建或者刪除硬鏈接,則相應的增加或減小該引用計數。為0時,刪除源文件;

????????dentry還是不一樣,inode是一樣

?

3,struct inode結構體

這里虛擬文件系統里的inode節點是指內存里的inode節點,包含了一些實際硬盤上的inode節點所沒有的信息。

?

[cpp]?view plaincopy
  • <pre?name="code"?class="cpp"><fs.h>??
  • struct?inode?{??
  • ????struct?hlist_node?i_hash;??
  • ????struct?list_head?i_list;??
  • ????struct?list_head?i_sb_list;??
  • ????struct?list_head?i_dentry;??
  • ????unsigned?long?i_ino;????//每個inode的唯一編號??
  • ????atomic_t?i_count;<span?style="white-space:pre">???</span>//記錄使用該inode的進程的個數??
  • ????unsigned?int?i_nlink;<span?style="white-space:pre">???</span>//使用該inode的硬連接的個數??
  • ????uid_t?i_uid;<span?style="white-space:pre">????????</span>//文件的user??
  • ????gid_t?i_gid;<span?style="white-space:pre">????????</span>//文件的group??
  • ????dev_t?i_rdev;<span?style="white-space:pre">???????</span>//當該inode表示設備文件的時候表示與哪個設備文件通信,只是一個數字??
  • ????unsigned?long?i_version;??
  • ????loff_t?i_size;???<span?style="white-space:pre">???????</span>//文件的長度,以字節大小表示??
  • ????struct?timespec?i_atime;?????//文件最后訪問時間??
  • ????struct?timespec?i_mtime;<span?style="white-space:pre">????</span>//文件最后修改時間??
  • ????struct?timespec?i_ctime;?????????//最后修改inode結構本身的時間??
  • ????unsigned?int?i_blkbits;??
  • ????blkcnt_t?i_blocks;<span?style="white-space:pre">??????</span>//文件按塊計算的長度??
  • ????umode_t?i_mode;<span?style="white-space:pre">?????????</span>//文件的權限??
  • ????struct?inode_operations?*i_op;<span?style="white-space:pre">??</span>//inode操作,創建連接,文件重命名,在目錄下創建文件,刪除文件??
  • ????const?struct?file_operations?*i_fop;?/*?former?->i_op->default_file_ops?*/???//文件內容的操作,設置文件位置指針等等??
  • ????struct?super_block?*i_sb;??
  • ????struct?address_space?*i_mapping;??
  • ????struct?address_space?i_data;??
  • ????struct?dquot?*i_dquot[MAXQUOTAS];??
  • ????struct?list_head?i_devices;??
  • ????union?{??
  • ????struct?pipe_inode_info?*i_pipe;??//管道??
  • ????struct?block_device?*i_bdev;<span?style="white-space:pre">????</span>//塊設備??
  • ????struct?cdev?*i_cdev;<span?style="white-space:pre">????????</span>//字符設備??
  • ????};??
  • ????int?i_cindex;??
  • ????__u32?i_generation;??
  • ????unsigned?long?i_state;??
  • ????unsigned?long?dirtied_when;?/*?jiffies?of?first?dirtying?*/??
  • ????unsigned?int?i_flags;??
  • ????atomic_t?i_writecount;??
  • ????void?*i_security;??
  • };??


  • i_mapping成員指向該文件所在的內存空間,要訪問該文件的實際內容則通過該成員訪問,address_space用于管理文件映射到內存的頁面。

    inode結構中的i_mapping成員的目的是緩存文件的內容,對文件的讀寫操作首先在i_mapping包含的緩存里尋找文件的內容,如果有緩存,對文件讀寫操作可以直接從緩存中獲取,而不用再去物理硬盤讀取,寫操作也是首先寫到緩存,然后在合適時機由緩存寫到磁盤。

    每個inode有一個i_list成員,用于將inode存儲在一個鏈表中,根據inode狀態,它有三種主要情況
    (1)inode在內存中,未關聯到任何文件,處于非活動狀態
    (2)inode在內存中,正在由一個或者多個進程使用,通常表示一個文件,此時i_count和i_nlink都大于0。
    文件內容和底層元數據都于底層磁盤上的信息相同,
    (3)inode處于活動使用狀態,其數據內容已經改變,與存儲介質上的內容不一樣,這種狀態的inode節點為臟的。


    superblock是用于管理該文件系統中所有的inode相關信息的,比如增加inode,每個inode的起始地址等等。

    如果一個分區大小為1GB,每個block為4KB,一個inode為128B,并假設平均每個文件占用2個block。那么inode的數量為1GB/(8KB+128B)=129055.5,即129055。那么inode table的大小為129055*128B=15.75MB。所以按照這樣的規劃,如果一個1GB的磁盤,那么格式化后,就已經有15.75MB被使用了。

    3,查看文件inode信息的命令

    stat命令

    轉載于:https://www.cnblogs.com/zhiliao112/p/4067833.html

    總結

    以上是生活随笔為你收集整理的[文件系统]文件系统学习笔记(一)---基本概念以及inode的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。