2015-06-03 37 views
0

衆所周知,操作系統實現一個頁面機制來實現快速訪問。每當進程請求內核將二進制數據從磁盤加載到內存空間時,內核將首先查看頁面緩存。如果二進制文件已經緩存在頁面緩存中,則不需要訪問硬件磁盤。這樣,操作系統可以減少開銷。頁面緩存如何在內存中工作?具體在Linux

但是,我有問題。

正如我們所知,操作系統將幫助頁面緩存在物理內存中分配頁面以保存即將可能使用的數據。當內核在頁面緩存中發現進程的請求數據時,內核會將什麼傳遞給進程?內核會將保存有需要的數據的PageCache頁面的內容複製到分配給此進程的新頁面中?或者內核只是返回PageCache頁面的指針?

回答

0

這裏有很多操作系統,所以如果我們談論任何真實的,未來的或理論上的操作系統,答案可能是「無論」。

但是,對於我所知道的所有實際操作系統,頁面只會在內存中存儲一​​次。創建每個頁面的副本效率非常低,而這樣做不會帶來任何好處。

+0

如果我們在談論Linux,該怎麼辦?我們知道操作系統將使用struct address_space來描述文件的頁面緩存。 Linux如何處理這個問題? –

+0

文件內容只加載一次並共享。見http://duartes.org/gustavo/blog/post/page-cache-the-affair-between-memory-and-files/ –

+0

非常感謝! –