檔案讀寫基本流程

2021-08-27 08:13:50 字數 845 閱讀 7583

讀檔案

1、程序呼叫庫函式向核心發起讀檔案請求;

2、核心通過檢查程序的檔案描述符定位到虛擬檔案系統的已開啟檔案列表表項;

3、呼叫該檔案可用的系統呼叫函式read()

3、read()函式通過檔案表項鍊接到目錄項模組,根據傳入的檔案路徑,在目錄項模組中檢索,找到該檔案的inode;

4、在inode中,通過檔案內容偏移量計算出要讀取的頁;

5、通過inode找到檔案對應的address_space;

6、在address_space中訪問該檔案的頁快取樹,查詢對應的頁快取結點:

(1)如果頁快取命中,那麼直接返回檔案內容;

(2)如果頁快取缺失,那麼產生乙個頁缺失異常,建立乙個頁快取頁,同時通過inode找到檔案該頁的磁碟位址,讀取相應的頁填充該快取頁;重新進行第6步查詢頁快取;

7、檔案內容讀取成功。

寫檔案前5步和讀檔案一致,在address_space中查詢對應頁的頁快取是否存在:

6、如果頁快取命中,直接把檔案內容修改更新在頁快取的頁中。寫檔案就結束了。這時候檔案修改位於頁快取,並沒有寫回到磁碟檔案中去。

7、如果頁快取缺失,那麼產生乙個頁缺失異常,建立乙個頁快取頁,同時通過inode找到檔案該頁的磁碟位址,讀取相應的頁填充該快取頁。此時快取頁命中,進行第6步。

8、乙個頁快取中的頁如果被修改,那麼會被標記成髒頁。髒頁需要寫回到磁碟中的檔案塊。有兩種方式可以把髒頁寫回磁碟:

(1)手動呼叫sync()或者fsync()系統呼叫把髒頁寫回

(2)pdflush程序會定時把髒頁寫回到磁碟

同時注意,髒頁不能被置換出記憶體,如果髒頁正在被寫回,那麼會被設定寫回標記,這時候該頁就被上鎖,其他寫請求被阻塞直到鎖釋放。

hdfs讀寫流程 HDFS 檔案讀寫流程

開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...

HDFS檔案讀寫流程

詳細步驟解析 1 client發起檔案上傳請求,通過rpc與namenode建立通訊,namenode檢查目標檔案是否已存在,父目錄是否存在,返回是否可以上傳 2 client請求第乙個block該傳輸到哪些datanode伺服器上 3 namenode根據配置檔案中指定的備份數量及機架感知原理進行...

HDFS檔案讀寫流程

1.1 命令 hadoop fs put log user 1.2 流程圖 注意 檔案寫流程是 fsdataoutputstream 不是 fsdatainputstream。1.3 詳細過程 client 呼叫 filesystem.create filepath 方法,與 nn 進行 rpc 通...