源址: http://blogread.cn/it/article/6523?f=wb
訪問文件的操作主要是指讀文件和寫文件,下文簡單說明內核中幾種常見的訪問文件的方式。
普通模式
讀寫系統調用的默認方式。以讀系統調用為例,默認情況下讀函數以阻塞的形式訪問數據,并且使用了內核的頁高速緩存機制。而寫函數則直接將修改后的數據寫入頁高速緩存就返回。此時O_SYNC和O_DIRECT兩個標志均被置0。
同步模式
同步模式主要是指進程將阻塞到數據請求完成為止,但是讀操作默認情況下即為阻塞方式,因此該模式主要針對寫函數,此時O_SYNC標志被置1,寫函數并不是將頁高速緩存中的數據修改后就立馬返回,而是直到相應數據被寫入磁盤后才返回。
直接I/O模式
該模式下的讀寫操作并不會使用內核中的頁高速緩存機制,而是在用戶地址空間和磁盤之間直接進行數據傳送。此時O_DIRECT標志被置1。
異步模式
異步模式需要使用特定的系統調用來完成,比如aio_read和aio_write。異步模式是指進程在發出數據請求后并不需要以阻塞的方式等待數據,而是立即返回繼續執行其他操作,數據的請求工作在后臺自動完成。
內存映射模式
內存映射方式和傳統意義上的讀寫系統調用不同,它將磁盤上的文件映射到進程用戶空間的一塊虛擬內存中,這樣對該文件的操作就可以轉化為對內存的操作。通過mmap()就可以實現內存映射。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
