我目前正在學習我的OS決賽。一些論文中的老師簡要提及mmap
函數(內存映射)。mmap使用案例
據我所知(糾正我,如果我錯了),mmap用於加載一些文件從物理內存到RAM(默認頁面後)。問題是,我沒有看到任何其他的實際原因,以便更快地訪問該文件。
我正確嗎? mmap僅用於此?
我目前正在學習我的OS決賽。一些論文中的老師簡要提及mmap
函數(內存映射)。mmap使用案例
據我所知(糾正我,如果我錯了),mmap用於加載一些文件從物理內存到RAM(默認頁面後)。問題是,我沒有看到任何其他的實際原因,以便更快地訪問該文件。
我正確嗎? mmap僅用於此?
「MMAP」擁有大量用途:
映射一個文件更快讀/寫訪問是肯定一個使用
共享存儲器(例如,用於進程間通信)是另一種
MMAP也用於映射爲低級別的設備通信的I/O端口地址
感謝您輸入@ paulsm4。最後一件事,你會有一個mmap使用的具體例子(真的只是出於好奇)。 – Erwald 2012-04-18 21:45:17
MMAP用於加載從物理內存爲RAM一些文件(後頁面默認)
加載失蹤頁。也可以用同樣的方法將修改寫入磁盤!
感謝您輸入@Karoly Horvath。最後一件事,你會有一個mmap使用的具體例子(真的只是出於好奇)。 – Erwald 2012-04-18 21:45:44
MMAP需要的內存管理出來的程序員之手,在很大程度上,並把它在操作系統手中。
這是關於使用虛擬內存子系統從磁盤到物理內存的按需分頁。
因此,要查看文件的第11111個字節,而不是查找和讀取,可以使用mmap並使用數組索引。操作系統會將環境數據保存在其「緩衝區緩存」(真正的頁面緩存)中。
下面是一個例子: http://stromberg.dnsalias.org/~strombrg/pbmonherc.html
的例子是一個有點亂,因爲它是在當Linux已經在它的內核MMAP支持一次寫入,但C庫還不具備存根調用它。但你幾乎可以忽略mmap.c.該示例使用mmap使用單色顯示適配器設置和禁用像素。
另一個合理的使用爲布隆過濾器: http://stromberg.dnsalias.org/~strombrg/drs-bloom-filter/
...但在32位操作系統的,一個mmap'd存儲器區域的最大尺寸有點疼。
謝謝!這些都是很棒的文章。 – Erwald 2012-04-18 22:34:20
計算機可用於執行大量的數值計算。問題是我沒有看到任何其他的實際原因,除了使計算更快。 – pmr 2012-04-18 21:36:22
「從物理內存到RAM」 - 常見用法「物理內存」和「RAM」是同義詞。 – 2012-04-18 21:40:45