讀書筆記:《深入理解計算機系統》第十章 系統級I/O

在Linux系統中,文件是一個多字節的序列。

打開文件即內核會訪問一個描述符,用來在後續操作中標識這個文件。內核記錄這個文件的所有信息,而應用程序只需要記住這個標識符。

讀文件則是從文件中複製n個字節到內存中,而寫操作就是從內存中複製n個字節到文件。

關閉文件則會將描述符恢復到可用的描述符池中。

 

文件常見的類型有普通文件(文本文件和二進制文件),目錄,套接字等。

父子進程共享相同的打開文件表集合,因此共享相同的文件位置.一個很重要的結果就是.在刪除相應文件表表項之前,父子進程必須都關閉了它們的描述符.

 

談到文件就必然談到輸入和輸出函數

I/O函數有三種,分別爲標準I/O函數,RIO函數,Unix I/O函數。

Unix I/O函數是在操作系統內核中實現的。

RIO函數和標準I/O函數都是基於Unix I/O函數實現的。

 

那什麼情況下使用這三種函數呢?

對於大多數程序,標準I/O函數更簡單,是優於Unix I/O的選擇,然而,因爲標準I/O和網絡文件的一些互相不兼容的限制,Unix I/O比之標準I/O更適用於網絡應用程序。

對於網絡套接字的I/O適用RIO函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章