磁碟I O中幾種訪問檔案的方式

2021-08-01 00:11:30 字數 785 閱讀 7913

我們知道,讀取和寫入檔案i/o操作都呼叫作業系統提供的介面,因為磁碟裝置是由作業系統管理的,應用程式要訪問物理裝置只能通過作業系統呼叫的方式工作。讀和寫對應read()和write()兩個系統呼叫。下面是幾種訪問檔案的方式:

當應用程式呼叫read()介面時,作業系統檢查在核心的快取記憶體中有沒有需要的資料,如果已經快取了,那麼就直接從快取中返回,如果沒有,則從磁碟中讀取,然後快取在作業系統中。

寫入的方式是,使用者的應用程式呼叫write()介面將資料從使用者位址空間複製到核心位址空間的快取中。這時對使用者程式來說寫操作就已經完成,至於什麼時候再寫到磁碟中由作業系統決定,除非顯式地呼叫了sync同步命令。

應用程式直接訪問磁碟資料,而不經過作業系統核心資料緩衝區,這樣做的目的就是減少一次從核心緩衝區到使用者程式快取的資料複製。這種訪問方式通常是資料庫等對資料的快取管理由應用程式實現的管理系統中。

資料的讀取和寫入都是同步操作的,它與標準訪問檔案的方式不同的是,只有當資料被成功寫到磁碟時才返回給應用程式成功的標誌。這種方式效能比較差,只有在一些對資料安全性要求比較高的場景中才會使用。

非同步訪問檔案的方式就是當訪問資料的執行緒發出請求之後,執行緒會接著去處理其他事情,而不是阻塞等待,當請求的資料返回後繼續處理下面的操作。這種訪問檔案的方式可以明顯地提高應用程式的效率,但是不會改變訪問檔案的效率。

記憶體對映的方式是指作業系統將記憶體中的某一塊區域與磁碟中的檔案關聯起來,當要訪問記憶體中的一段資料時,轉換為訪問檔案的某一段資料。

不同的訪問方式有不同的特點和效能,適合不同的情況,當我們想要優化自己專案中的i/o訪問速度時,就需要對這些訪問方式有必要的了解。

幾種訪問檔案的方式。

我們知道,讀取和寫入檔案i o操作都呼叫作業系統提供的介面,因為磁碟裝置是由作業系統管理的,應用程式要訪問物理裝置只能通過系統呼叫的方式來工作。讀和寫分別對應read 和write 兩個系統呼叫。而只要是系統呼叫就可能存在核心空間位址和使用者空間位址切換的問題,這是作業系統為了保護系統本身的執行安全...

IO 集合中獲取流的幾種方式

1 從檔案中讀 public static inputstream getinputstream throws ioexception2 從網路上讀 public static inputstream getinputstream throws ioexception3 從記憶體上讀 public ...

外設I O資源的訪問方式

華清遠見嵌入式學院 講師。我們知道缺省外設i o資源是不在linux核心空間中的 如sram或硬體介面暫存器等 若需要訪問該外設i o資源,必須先將其位址對映到核心空間中來,然後才能在核心空間中訪問它。linux核心訪問外設i o記憶體資源的方式有兩種 動態對映 ioremap 和靜態對映 map ...