我無法理解文件在內存映射I/O中的管理方式。正常如果我們使用open或fopen打開文件,它將分別返回fd或 文件指針。在這之後打開文件駐留處理。它在內存中(在硬盤中的文件的副本)還是不在?如果 不在通過隨後的讀取或寫入系統調用獲取數據的內存中,或者每次調用讀取或寫入時從硬盤讀取數據。 否則,該文件的副本將存儲在內存中,並且進程將訪問該文件以進一步操作,一旦該進程完成,該文件將被複制到硬盤。在上述概念 哪個場景有效?Unix中的內存映射I/O
以下是記憶中給出的定義映射I/O在Unix的環境(第2版)本書高級編程:
內存映射I/O讓我們在磁盤上的文件映射到緩衝區在內存中,這樣,當我們從緩衝區中獲取字節時,讀取文件的相應字節。同樣,當我們將數據存儲在緩衝區中時,相應的字節會自動寫入文件。這使我們可以在不使用讀取或寫入的情況下執行I/O。
什麼是將文件映射到內存?在這裏,他們定義的內存被放置在棧和堆之間。在這個存儲器中,映射文件後會出現什麼樣的數據類型。它包含文件的副本或駐留在硬盤上的文件的地址。和 上述情況如何成爲現實。
有沒有人解釋內存映射I/O和mmap功能的工作機制?
驅動程序...................................... –
這意味着什麼?我正在使用Ubuntu 12.04 – mrg
閱讀[page cache](https://en.wikipedia.org/wiki/Page_cache)&http://linuxatemyram.com/&[虛擬地址空間](https://en.wikipedia .org/wiki/Virtual_address_space) –