日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mmap 和 shm 区别

發布時間:2024/10/14 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mmap 和 shm 区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

英文全稱

  • mmap:memory mapping ,內存映射(磁盤文件映射)。
  • shm:shared memory ,共享內存。
  • mmap?

    1、實現原理

    建立虛擬空間一段區域和磁盤上的文件的映射。

    當訪問虛擬空間中該區域時,通過 MMU,得到該區域對應的物理地址,OS 發現該區域沒有數據,故產生缺頁中斷。OS 從磁盤中讀取相應頁的數據直接 copy 到物理內存中。

    對于傳統的 read 系統調用來說,他們需要將磁盤中的文件先 copy 到內核緩沖區中,再將該數據 copy 到用戶緩沖區中。相較于 mmap ,后者節省了一次 copy ,這也就解釋了為什么 mmap 相較于 read 和 write 系統調用性能較高的原因了。

    2、普通映射和匿名映射

    mmap 不僅可以映射到磁盤上的普通文件,還可以映射到匿名文件。實現方式是形參中的 fd = -1,flag = MAP_SHARED | MAP_ANON 。

    對于匿名映射來說,其目的是保證該共享內存映射區只能父子進程使用,其他進程無法訪問。如果需要與其他進程訪問的話,需要映射到磁盤上的實際文件中。

    shm 實現原理

    通過相同的 key,實現了不同的進程的各自一段虛擬地址空間同時映射到某一段物理內存中的功能。

    二者區別

    mmap 保存到實際硬盤,實際存儲并沒有反映到主存上。優點:儲存量可以很大(多于主存)缺點:進程間讀取和寫入速度要比主存的要慢。

    shm 保存到物理存儲器(主存),實際的儲存量直接反映到主存上。優點,進程間訪問速度(讀寫)比磁盤要快;缺點,儲存量不能非常大(多于主存)。

    使用上看:如果分配的存儲量不大,那么使用 shm;如果存儲量大,那么使用 mmap。

    ?

    (SAW:Game Over!)

    總結

    以上是生活随笔為你收集整理的mmap 和 shm 区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。