首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿施密姆有什么特别的能力?

阿施密姆有什么特别的能力?
EN

Stack Overflow用户
提问于 2012-04-02 12:20:35
回答 2查看 21K关注 0票数 27

有人能解释一下为什么要创建ashmem吗?

我现在正在浏览mm/ashmem.c。据我所知,内核认为ashmem是可以映射的文件备份内存,但是,为什么要麻烦地实现ashmem呢?似乎可以通过挂载RAM文件系统,然后使用filemap/mmap共享内存来实现相同的功能。

我确信ashmem可以做更多花哨的事情--从代码上看,它似乎与固定/取消固定页面有关?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-02 12:25:15

Ashmem允许与祖先无关的进程按名称共享内存映射,这些内存映射会自动清除。

普通的匿名mmap和System V共享内存缺少其中的一些要求。

当运行的程序不再引用System V共享内存段时(这有时是一种特性,有时是一种麻烦)。

匿名共享mmap可以从父进程传递到子进程,这是不灵活的,因为有时您希望不相关的进程以这种方式共享内存。

票数 26
EN

Stack Overflow用户

发布于 2013-07-07 07:06:52

有人能解释一下为什么要创建ashmem吗?

David Turner ( Android NDK的常客)用Why was bionic/libc/include/sys/shm.h removed?回答了这个问题

...对于纸杯蛋糕,系统V IPC已被删除。有关详细信息,请参阅bionic/libc/docs/SYSV-IPC.TXT。

简而言之,System V IPC在设计上是有漏洞的,并且在Android的运行时环境中不能很好地发挥作用,在Android的运行时环境中,杀死进程来为其他进程腾出空间是很正常的,也是非常常见的。最终的结果是,依赖于这些IPC的任何代码都可能最终填满内核的SysV IPC键的内部表,这只能通过重新启动来安全地解决。

我们希望在未来提供不存在相同问题的替代机制。我们目前提供的一件事是ashmem,它是专门为Android设计的,以避免这种问题(尽管它没有足够的文档记录)。对于信号量和/或消息队列,我们可能需要类似的东西。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9970858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档