1)两个进程AB,在需要进行通信时向/dev/binder mmap 一块虚拟内存区域,这个大小通常是数MB。
2)当进程A要向进程B传递数据时,A使用ioctl操作/dev/binder,将数据传递给binder驱动。
3)binder驱动依据A传递来的数据大小,申请合适的物理内存来存储这些数据。并在B mmap得到的虚拟内存区域中找到合适大小的虚存空间,然后修改B的内存映射表,使这段虚存空间映射到刚刚申请的物理内存。这样B就可以访问A传递进来的数据了。
功能描述:
mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。
基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区的第一个页索引时会更新该字段的值。用PROT_WRITE 和 MAP_SHARED标志建立起来的文件映射,其st_ctime 和 st_mtime
在对映射区写入之后,但在msync()通过MS_SYNC 和 MS_ASYNC两个标志调用之前会被更新。
2)当进程A要向进程B传递数据时,A使用ioctl操作/dev/binder,将数据传递给binder驱动。
3)binder驱动依据A传递来的数据大小,申请合适的物理内存来存储这些数据。并在B mmap得到的虚拟内存区域中找到合适大小的虚存空间,然后修改B的内存映射表,使这段虚存空间映射到刚刚申请的物理内存。这样B就可以访问A传递进来的数据了。
功能描述:
mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。
基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区的第一个页索引时会更新该字段的值。用PROT_WRITE 和 MAP_SHARED标志建立起来的文件映射,其st_ctime 和 st_mtime
在对映射区写入之后,但在msync()通过MS_SYNC 和 MS_ASYNC两个标志调用之前会被更新。