1.2.2 OpenGL API转发通信 Qemu Pipe

Qemu pipe被设计用于android emulator和运行于emlator上的guest os(android os)之间的通信。其具备数据零拷贝和高速通信的特点。

QEMU Pipe是一种基于虚拟化技术的进程间通信(IPC)机制,它可以在模拟器和主机之间建立一个虚拟管道,用于传输数据和命令。QEMU Pipe机制可以在不同进程之间进行通信和数据传输,通常用于模拟器和主机之间的通信和交互。

QEMU Pipe机制本质上是一种基于管道的IPC机制,它通过使用类似Linux管道的方式来进行数据传输。在使用QEMU Pipe机制时,可以使用mkfifo命令在主机上创建一个FIFO(命名管道),然后在模拟器中打开该FIFO,并进行读写操作,从而实现数据的传输和交互。

QEMU Pipe机制的主要优点是高速传输和低延迟。这是由于QEMU Pipe机制使用了虚拟化技术,可以在模拟器和主机之间建立一个虚拟管道,从而避免了实际的物理数据传输和网络协议栈的开销,从而提高了数据传输的效率和速度。此外,QEMU Pipe机制还可以通过使用内存映射技术实现零拷贝(zero-copy)传输,进一步提高数据传输的效率和速度。

QEMU Pipe机制的主要缺点是只能用于模拟器和主机之间的通信和交互,不能用于不同设备之间的通信。此外,QEMU Pipe机制也存在一些限制和注意事项,例如在传输大量数据时可能会出现阻塞和性能下降的问题,因为它使用的是单线程方式进行数据传输。

总的来说,QEMU Pipe是一种高效的IPC机制,可以在模拟器和主机之间实现快速的数据传输和交互。在使用QEMU Pipe进行数据传输时,需要根据具体的需求和场景选择适合的数据传输方式,并进行适当的测试和调试,以确保数据的正确传输和处理。

 

目前anbox和其他一些android项目,沿用了qemu pipe来实现opengl es的api的转发。这样可以使android os使用到宿主机上的gpu设备来实现3d加速。

 

Binder是被设计用于android进程间通信。它的特点是需要server先将主机注册到android 的service manager 服务中。client才能和service进行通信。