15 訪問檔案

2021-05-25 20:07:51 字數 851 閱讀 5848

訪問檔案較複雜,涉及

vfs、塊裝置處理、磁碟快取記憶體。有規範模式、同步模式、記憶體對映、直接

i/o、非同步。

read

、write

系統呼叫會最終呼叫相應的服務例程,在其中呼叫檔案物件的

read

、write

方法,確定資料的物理位置,啟用驅動程式傳輸資料。普通檔案以相鄰扇區成組存放在磁碟上,因此很少移動磁頭即可快速檢索檔案。預讀技術會在實際請求前讀普通檔案幾個相鄰資料頁。預讀對隨機訪問的檔案無用,它浪費了頁快取記憶體空間。如果請求的第一頁緊隨上次訪問請求的末頁,核心則將此次訪問視作順序訪問。預讀演算法使用兩個頁面集,叫「當前窗」與「預讀窗」。前者包含請求及預讀到的頁,後者包含正在預讀的頁。程序第一次訪問一檔案時,且第一次請求頁偏移為

0時,則假定要順序訪問,從第一頁建立乙個新的當前窗並初始化,順序讀則建立預讀窗,隨機則刪掉預讀窗。

寫檔案是把資料從使用者態位址空間移到核心資料結構,再移至磁碟。

mmap

系統呼叫完成記憶體對映。記憶體對映的資料結構由

inode

物件其中的

address_space

物件、檔案物件、頁框的頁描述符及

address_space

中的pst

表示。pst

用於從address_space

回找檔案物件。記憶體對映建立後,並未直接分頁框,而是推遲到缺頁異常,也可非線性地對映記憶體。

非常複雜的程式如高效能資料庫伺服器它更偏向於直接控制

i/o傳送機制,此時,核心提供的頁快取記憶體毫無意義,甚至有害。

linux

提供了繞過頁快取記憶體的方法,直接

i/o,在應用程式中按需要實現快取。

Solidity學習 (15)getter訪問器

作用 對於所有public的狀態變數,solidity語言編譯器,提供了自動為狀態變數生成對應的getter 訪問器 的特性 在合約內,我們可以直接操作及訪問data狀態變數,但在合約外我們只能用data 的方式來訪問。另外,在合約內,我們不能直接訪問data 因為訪問器函式的可見性是externa...

hbase 檔案訪問

hmaster沒有單點問題,hbase中可以啟動多個hmaster,通過zookeeper的master election機制保證總有乙個master執行,hmaster在功能上主要負責table和region的管理工作 1.管理使用者對table的增 刪 改 查操作 2.管理hregionserv...

訪問檔案方式

訪問基於磁碟的檔案很複雜,既牽涉到塊裝置的處理,也涉及到磁碟快取記憶體的處理。訪問檔案的方式有一下幾種 1.規範模式 系統呼叫read 和 write 來訪問。系統呼叫read 將阻塞呼叫程序,直到資料被拷貝到使用者態位址空間。但系統呼叫write 不同,它在資料被拷貝到頁快取記憶體 延遲寫 後馬上...