快取沖洗函式

2021-09-02 20:32:17 字數 724 閱讀 4585

傳統的 unix 系統實現在核心中都設有緩衝區快取記憶體或頁快取記憶體,大多數磁碟 i/o 都通過緩衝區進行。當向檔案寫入資料時,核心通常首先將資料複製到緩衝區中,然後排入佇列,晚些時候再寫入磁碟。這種方式被稱為「延遲寫(delayed write)」。

通常,當核心需要重用緩衝區來存放其他磁碟塊資料時,它會把所有延遲寫資料塊寫入磁碟。為了保證磁碟上實際檔案系統與緩衝區中內容的一致性,unix 系統提供了 sync、fsync 和fdatasync 三個函式。

#include

int fsync(int fd);

int fdatasync(int fd);

/* 返回值:若成功,返回0;否則,返回 -1 */

void sync(void);

sync 只是將所有修改過的塊緩衝區排入寫佇列,然後就返回,並不等待實際寫磁碟操作結束。通常,稱為 update 的系統守護程序周期性地呼叫(一般每隔 30 秒)sync 函式,這就保證了定期沖洗(flush)核心的塊緩衝區。unix 命令 sync(1) 也呼叫 sync 函式。

fsync 函式只對由檔案描述符 fd 指定的乙個檔案起作用,並且等待寫磁碟操作結束才返回。fsync 可用於資料庫這樣的應用程式,這種程式需要確保修改過的塊立即寫到磁碟上。

fdatasync 類似於 fsync,但它只影響檔案的資料部分。而除資料外,fsync 還會同步更新檔案的屬性。

純函式,快取函式

不純的函式具有 下面以之前的計稅函式以例進行說明 var percentvalue 5 var calculatetax value 複製 這個函式不是純函式,主要因為它以來外部環境計算其邏輯,當外部環境改變時,它會影響結果。因此,純函式的主要特徵就是不依賴於任何外部變數,也不應該改變任何外部變數。...

vue函式快取

vue.js原始碼函式快取 create a cached version of a pure function.function cached fn capitalize a string.var capitalize cached function str 函式使用了閉包特性,儲存區域性變數ca...

memoize快取函式

快取函式是指將上次的計算結果快取起來,當下次呼叫時,如果遇到相同的引數,就直接返回快取中的資料 用斐波那契數枚舉例子,不用快取函式,count被呼叫453次 var count 0 var fibonacci function n for let i 0 i 10 i console.log cou...