深入計算機系統基礎 系統級I O技術日誌

2021-10-13 05:36:22 字數 855 閱讀 8427

概念:所有的i/o裝置都被模型化為檔案,而所有的輸人作對相應檔案的讀和寫來執行。這種將裝置優雅地對映為檔案的方式,允許linux核心出乙個簡單、低階的應用介面,稱為unix 1/o。(**於《深入計算機系統基礎 第三版》)

分別呼叫read和write函式來執行輸入和輸出

觀察以下**:

what would this program point for file containing 「abcde」

#include

intmain

(int argc,

char

*ar**)

輸出結果

/*

$ ./ffiles1 abcde.txtc1 = a, c2 = a, c3 = b

*/

原因分析:

最初fd1,fd2,fd3都在不同的程序中開啟fname檔案,dup2函式的作用是可以複製乙個函式描述符,等價於close(oldfd);fcntl(oldfd, f_dupfd, newfd);。dup2(fd2, fd3); 的作用即為使fd2的指令賦給fd3,即fd3原來的指令不再起作用,而是跟在fd2的指令之後再次執行fd2指令。因此fd1指令執行的c1=a;fd2重新開啟乙個新的檔案,因此讀取的第乙個字元為c2=a;由於呼叫dup2函式的原因,fd3跟在fd2後執行,由於第乙個字元a已經被fd2指令讀取,因此fd3讀取的字元c3=b。

此次的技術日誌的概念部分有**於《深入計算機系統基礎 第三版》以及自己對系統i/o的理解。

**分析部分的****於課上ppt,**分析純原創,花了一定時間用心去理解了「讀和寫檔案」的部分。碼字不易,如果有不正確的地方希望指出包涵。

《深入理解計算機系統》 系統級I O

關於i o可以先參考這些文章,但是這裡可能還是有所不同。分析系統級別的i o有什麼不一樣的地方。檔案i o 高階i o 標準庫i o 開篇介紹了三個級別的i o的區別之處。所有語言的執行時系統都提供執行i o的較高階別的工具。例如,標準i o庫 在unix系統中,是通過使用由核心提供的系統級i o函...

26 深入理解計算機系統筆記,系統級I O

1 乙個 unix 檔案就是乙個 m位元組的序列 b0b1b2.bm 1 所有的 io裝置,如網路,磁碟,終端,都被模型化為檔案,而所有的輸入和輸出都被當作對相應檔案的讀和寫來執行。2 所有的輸入和輸出都被當作統一的方式來處理 1 開啟檔案。乙個應用程式通過要求核心開啟相應的檔案,來宣告它想要訪問乙...

26 深入理解計算機系統筆記,系統級I O

1 乙個 unix 檔案就是乙個 m位元組的序列 b0 b1b2 b m 1 所有的 io裝置,如網路,磁碟,終端,都被模型化為檔案,而所有的輸入和輸出都被當作對相應檔案的讀和寫來執行。2 所有的輸入和輸出都被當作統一的方式來處理 1 開啟檔案。乙個應用程式通過要求核心開啟相應的檔案,來宣告它想要訪...