文件IO與標準IO的區別

文件IO與標準IO的區別

文件I/O就是操作系統封裝了一系列函數接口供應用程序使用,通過這些接口可以實現對文件的讀寫操作,文件I/O是採用系統直接調用的方式,因此當使用這些接口對文件進行操作時,就會立刻觸發系統調用過程,即向系統內核發出請求之後,系統內核會收到執行相關代碼處理的請求,決定是否將操作硬件資源或返回結果給應用程序

標準I/O雖然也是使用一系列函數接口對文件進行讀寫操作,但函數出自C庫。因此,封裝了底層系統調用更多的調用函數接口。

標準I/O與文件I/O的本質區別在於:

  1. 標準I/O函數接口在對文件進行操作時,首先操作緩存區,等待熬緩存區滿足一定的條件時,然後再去執行系統調用,真正實現對文件的操作而文件I/O不操作任何緩存區,直接執行系統調用。
  2. 使用標準I/O可以減少系統調用的次數,提高系統效率。例如,將數據寫入文件中,每次寫入一個字符。採用文件I/O的函數接口,每調用一次函數寫入字符就會產生一次系統調用;而執行系統調用時,Linux必須從用戶態切換到內核態,處理相應的請求,然後再返回到用戶態,如果頻繁地執行系統調用會增加系統的開銷。
  3. 採用標準I/O的函數接口,每調用一次函數寫入字符,並不着急將字符寫入文件,而是放到緩存區保存,之後每一次寫入字符都放到緩存區保存。直到緩存區滿足刷新的條件(如寫滿)時,再一併將緩存區中的數據寫入文件,執行一次系統調用完成此過程,這樣便很大程度地減少了系統的調用次數,提高了執行效率

 

 

 

這種思想即是將一次一次操作變成批量一次性操作的

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