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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

mmap 和 shm 区别

發(fā)布時(shí)間:2024/10/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mmap 和 shm 区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

英文全稱

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

    1、實(shí)現(xiàn)原理

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

    當(dāng)訪問(wèn)虛擬空間中該區(qū)域時(shí),通過(guò) MMU,得到該區(qū)域?qū)?yīng)的物理地址,OS 發(fā)現(xiàn)該區(qū)域沒有數(shù)據(jù),故產(chǎn)生缺頁(yè)中斷。OS 從磁盤中讀取相應(yīng)頁(yè)的數(shù)據(jù)直接 copy 到物理內(nèi)存中。

    對(duì)于傳統(tǒng)的 read 系統(tǒng)調(diào)用來(lái)說(shuō),他們需要將磁盤中的文件先 copy 到內(nèi)核緩沖區(qū)中,再將該數(shù)據(jù) copy 到用戶緩沖區(qū)中。相較于 mmap ,后者節(jié)省了一次 copy ,這也就解釋了為什么 mmap 相較于 read 和 write 系統(tǒng)調(diào)用性能較高的原因了。

    2、普通映射和匿名映射

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

    對(duì)于匿名映射來(lái)說(shuō),其目的是保證該共享內(nèi)存映射區(qū)只能父子進(jìn)程使用,其他進(jìn)程無(wú)法訪問(wèn)。如果需要與其他進(jìn)程訪問(wèn)的話,需要映射到磁盤上的實(shí)際文件中。

    shm 實(shí)現(xiàn)原理

    通過(guò)相同的 key,實(shí)現(xiàn)了不同的進(jìn)程的各自一段虛擬地址空間同時(shí)映射到某一段物理內(nèi)存中的功能。

    二者區(qū)別

    mmap 保存到實(shí)際硬盤,實(shí)際存儲(chǔ)并沒有反映到主存上。優(yōu)點(diǎn):儲(chǔ)存量可以很大(多于主存)缺點(diǎn):進(jìn)程間讀取和寫入速度要比主存的要慢。

    shm 保存到物理存儲(chǔ)器(主存),實(shí)際的儲(chǔ)存量直接反映到主存上。優(yōu)點(diǎn),進(jìn)程間訪問(wèn)速度(讀寫)比磁盤要快;缺點(diǎn),儲(chǔ)存量不能非常大(多于主存)。

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

    ?

    (SAW:Game Over!)

    總結(jié)

    以上是生活随笔為你收集整理的mmap 和 shm 区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。