“怎么可能?”/“开发/绑定”;在android框架中,服务管理器和服务器是否可以管理文件?

“怎么可能?”/“开发/绑定”;在android框架中,服务管理器和服务器是否可以管理文件?,android,linux,Android,Linux,我现在正在分析android框架的内部和外部 我发现android框架中的每个模块都调用了两次mmap(),因为它引用了同一个文件“dev/binder” 1) 有人能解释一下,它是如何对同一个文件进行两次重设的吗 2) 有人能解释一下在这种情况下mmap()的内存映射是如何组织的吗 ----------------------------------------------------------------------- 活页夹尺寸:1M-8K MDFD:参考“开发人员/活页夹” Proce

我现在正在分析android框架的内部和外部 我发现android框架中的每个模块都调用了两次mmap(),因为它引用了同一个文件“dev/binder”

1) 有人能解释一下,它是如何对同一个文件进行两次重设的吗

2) 有人能解释一下在这种情况下mmap()的内存映射是如何组织的吗

  • -----------------------------------------------------------------------
  • 活页夹尺寸:1M-8K

    MDFD:参考“开发人员/活页夹”

    ProcessState::ProcessState() {

    mmap(0,活页夹尺寸,保护读取,地图验证,地图无保留,MDF,0)

    }

  • -----------------------------------------------------------------------
  • 在service_manager.c中,binder_open()被调用,如下所示

    地图大小:128K

    结构活页夹状态*活页夹打开(未生成贴图大小) {

    bs->fd=打开(“开发/装订机”,O_RDWR)

    mmap(NULL,mapsize,PROT_READ,MAP_PRIVATE,bs->fd,0)

    }


    提前感谢。

    问题中的Plz格式代码。/dev/binder实际上不是一个“文件”,而是一个类似文件的接口(与unix“一切都是文件”一致),用于Android的自定义内核IPC机制binder。绑定器是指第三方应用程序和服务如何调用和传递数据到在其他系统拥有的流程中运行的系统组件的后端。你可能会想读一读这篇文章,并且可能会在一个Android化的Linux内核树中检查binder本身的源代码。是的,我知道binder在Android系统中的作用。但我想知道mmap()如何两次引用同一设备文件“/dev/binder”,同时请求不同的地址空间,如128K和1M-8K。我猜它正在使用mmap()选项“MT_PRIVATE”。但我不确定mmap()生成的区域是如何管理的。