宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)上集( 五 )

现阶段广泛应用于多媒体、Graphics领域的共享内存方式 , 某种意义上不再强调映射到进程虚拟地址空间的概念(那无非是为了让CPU访问) , 而更强调以某种“句柄”的形式 , 让大家知道某一片视频、图形图像数据的存在并可以借助此“句柄”来跨进程引用这片内存 , 让视频encoder、decoder、GPU等可以跨进程访问内存 。 所以不同进程用的加速硬件其实是不同的 , 他们更在乎的是可以通过一个handle拿到这片内存 , 而不再特别在乎CPU访问它的虚拟地址(当然仍然可以映射到进程的虚拟地址空间供CPU访问) 。

只要内存的拷贝(memcpy)仍然是一个占据内存带宽、CPU利用率的消耗大户存在 , 共享内存作为Linux进程间通信、计算机系统里各个不同硬件组件通信的最高效方法 , 都将持续繁荣 。 关于内存拷贝会大多程度地占据CPU利用率 , 这个可以最简单地尝试拷贝1080P , 帧率每秒60的电影画面 , 我保证你的系统的CPU , 蛋会疼地不行 。

我早就想系统地写一篇综述Linux里面各种共享内存方式的文章了 , 但是一直被带娃这个事业牵绊 , 今日我决定顶着娃娃们的山呼海啸 , 也要写一篇文章不吐不快 。

推荐阅读