Linux下訪問文件的基本模式

發表于:2013-10-09來源:IT博客大學習作者:edsionte點擊數: 標簽:linux
訪問文件的操作主要是指讀文件和寫文件,下文簡單說明內核中幾種常見的訪問文件的方式。

  訪問文件的操作主要是指讀文件和寫文件,下文簡單說明內核中幾種常見的訪問文件的方式。

  普通模式

  讀寫系統調用的默認方式。以讀系統調用為例,默認情況下讀函數以阻塞的形式訪問數據,并且使用了內核的頁高速緩存機制。而寫函數則直接將修改后的數據寫入頁高速緩存就返回。此時O_SYNC和O_DIRECT兩個標志均被置0。

  同步模式

  同步模式主要是指進程將阻塞到數據請求完成為止,但是讀操作默認情況下即為阻塞方式,因此該模式主要針對寫函數,此時O_SYNC標志被置1,寫函數并不是將頁高速緩存中的數據修改后就立馬返回,而是直到相應數據被寫入磁盤后才返回。

  直接I/O模式

  該模式下的讀寫操作并不會使用內核中的頁高速緩存機制,而是在用戶地址空間和磁盤之間直接進行數據傳送。此時O_DIRECT標志被置1。

  異步模式

  異步模式需要使用特定的系統調用來完成,比如aio_read和aio_write。異步模式是指進程在發出數據請求后并不需要以阻塞的方式等待數據,而是立即返回繼續執行其他操作,數據的請求工作在后臺自動完成。

  內存映射模式

  內存映射方式和傳統意義上的讀寫系統調用不同,它將磁盤上的文件映射到進程用戶空間的一塊虛擬內存中,這樣對該文件的操作就可以轉化為對內存的操作。通過mmap()就可以實現內存映射。

原文轉自:http://blogread.cn/it/article/6523

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97