歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

操作系統訪問文件的方式

訪問文件的方式

訪問文件的方式 標准訪問文件方式 直接IO方式 同步訪問文件方式 異步訪問文件方式 內存映射方式

讀取和寫入文件IO操作都需要調用操作系統提供的接口,讀和寫分別對應read和write兩個系統調用,那麼就存在內核空間和用戶空間地址切換的問題,因為磁盤設備是由操作系統管理的,為了保護系統運行安全將內核運行的內存空間和用戶程序的內存空間進行隔離,那麼必然存在數據需要從內核空間向用戶空間復制的問題。

如磁盤IO,數據需要從磁盤復制到內核空間,處理完成後又從內核空間復制到用戶空間,非常耗時。所以操作系統一般會使用緩存機制,就是將文件按照一定的組織形式進行緩存,如果用戶訪問同一段磁盤地址空間,直接從內核緩存中返回。

標准訪問文件方式

當應用程序調用read接口時,操作系統檢查高速緩存中是否有,如果有直接從緩存中返回,如果沒有,從磁盤讀取,並緩存在高速緩存中。寫入時,調用write接口將數據從用戶地址空間復制到內核緩存中,對於應用程序和用戶來說,寫入操作已完成,至於什麼時候寫入到磁盤上,由操作系統決定,除非顯示的調用sync同步。

直接IO方式

就是應用程序直接訪問磁盤數據,不經過操作系統的內核數據緩存,這樣做的目的減少了一次從內核緩沖區到用戶程序緩存的數據復制。通常應用在數據庫系統中,數據庫系統明確知道應該緩存哪些數據,以及一些熱點數據。

同步訪問文件方式

數據的讀取和寫入都是同步操作的,它與標准訪問文件的方式不同在於,只有當數據被成功寫入到磁盤時才返回給應用程序成功的標志。應用在對數據安全性要求較高的場合,而且這種操作方式的硬件都是定制的。

異步訪問文件方式

當訪問數據的線程發出請求後,線程會處理其它事情,不是阻塞等待,當請求的數據返回後繼續處理下面的操作。

內存映射方式

操作系統將內存中的某一塊區域與磁盤中的文件關聯起來,當要訪問內存中一段數據時,轉換為訪問文件的某一段數據。同樣可以減少數據從內核空間緩存到用戶空間緩存的數據復制操作,因為這兩個空間的數據是共享的。

Copyright © Linux教程網 All Rights Reserved