由unix檔案I O引出的原子操作

2021-07-10 14:03:11 字數 481 閱讀 2950

第二遍看apue,打算把知識點總結一下。

下面介紹一下原子操作:

對於多處理器原子操作

x86架構處理器原子操作

arm架構下原子操作

unix系統針對檔案i/o還有其他原子操作,例如函式pread和pwrite,呼叫pread相當於呼叫lseek後呼叫read,但是又實現了原子操作,其特點為:

另外還有open函式中的o_creat和o_excl引數,同時使用這兩個引數時,如果檔案已經存在,則出錯,因此可以用來檢查檔案是否存在。如果不存在,則建立它,這使得建立和測試成為乙個原子操作。如果沒有該原子操作的話,下面這段程式可以實現其功能,但是當兩個程序同時操作時,還是會出現問題。

if((fd = open(pathname,o_wronly))

< 0)else

err_sys("open error");

}

參考資料:

apue

Unix 標準I O總結和與檔案I O的比較

我們可以將檔案i o視為系統呼叫,核心要執行i o操作,這裡涉及到頁快取 快取記憶體區 的概念,檔案i o執不執行與快取區有關。而標準i o是對系統i o呼叫的封裝,標準i o也有快取區 行快取的概念。正是由於這二級的快取模式。導致標準i o的效率很低。當開啟乙個流時,標準i o函式fopen返回乙...

Unix中的不帶緩衝的檔案IO

unix中的一切都是檔案 這是乙個相當經典的定義,在unix以及unix的衍生系統中這一概念都是成立的。說一切都是檔案,指的是在unix中任何東西都是用檔案來表示的。在unix中裝置是檔案,socket是檔案,fifo是檔案,管道.也是檔案。其實個人理解說unix中的一切都是檔案其實是說在unix中...

基礎IO Linux與標準庫下的檔案IO操作

在進行linux的學習過程中,我們會接觸到一系列與io操作相關的函式。一般而言,我們將其分為三類,分別是 檔案io 標準io和庫函式。其中,檔案io顧名思義便是對檔案進行操作的函式,再加上在linux系統中,一切皆檔案,所以當我們在之後的時間內進行更加深入的學習之後,檔案io的操作函式將會使用的越來...