天天看點

《CSAPP》系統級I/O

前言:

     這一部分基本就是檔案的讀取與寫入的介紹,然後講訴了檔案描述符表與檔案打開表,以及健壯的RIO讀寫檔案程式。這一部分與APUE以及UNP中的部分内容是很相似的,是以會介紹的比較簡單。

我的github:

我實作的代碼全部貼在我的github中,歡迎大家去參觀。

https://github.com/YinWenAtBIT

第十章:系統級I/O

定義:

輸入/輸出是在主存和外部裝置之間拷貝資料的過程,輸入操作時外部裝置拷貝到記憶體,輸出是記憶體拷貝到外部的I/O裝置

一、RIO包健壯的讀寫:

1. RIO包的靈感:

來自《UNIX網絡程式設計》中的readn與writen函數已經readline函數。不過原本的readline函數不是線程安全的。這個RIO版本的改進了這個問題。

共享檔案:

一、描述符表:

每個程序都有自己的描述符表,它的表項是由程序打開的檔案描述符來索引的。每個打開描述符都指向檔案表中的一個表項。

二、檔案表:

打開檔案的集合由檔案表來表示,所有的程序共享這張表,每個檔案表的表項,包括目前的檔案位置,引用計數,以及一個指向v-node表中對應表項的指針。關閉一個描述符會減少相應的檔案表表項的引用計數。核心會在計數為0 時删除這個表項。

《CSAPP》系統級I/O

I/O重定向:

使用dup2函數,将描述符指向想要指向的檔案表項,即可實作IO重定向。

總結:

這一部分内容沒有太多要注意的,已經在UNP中學習過。不再是問題。

繼續閱讀