Todavía estamos en la fase de diseño de nuestro proyecto, pero estamos pensando en tener tres procesos separados en un kernel de Linux incrustado. Uno de los procesos es un módulo de comunicaciones que maneja todas las comunicaciones hacia y desde el dispositivo a través de varios medios.¿Qué técnica de Linux IPC usar?
Los otros dos procesos necesitarán poder enviar/recibir mensajes a través del proceso de comunicación. Estoy tratando de evaluar las técnicas de IPC que proporciona Linux; el mensaje que enviarán los otros procesos variará en tamaño, desde los registros de depuración hasta los medios de transmisión a una velocidad de ~ 5 Mbit. Además, los medios podrían estar entrando y saliendo simultáneamente.
¿Qué técnica de IPC recomendaría para esta aplicación? http://en.wikipedia.org/wiki/Inter-process_communication
El procesador se ejecuta alrededor de 400-500 Mhz si eso cambia algo. No necesita ser multiplataforma, Linux solo está bien. Se requiere la implementación en C o C++.
El núcleo de Linux proporciona los siguientes mecanismos IPC: señales, Tubos anónima, canalizaciones con nombre o FIFO, SysV colas de mensajes, POSIX colas de mensajes, SysV la memoria compartida, POSIX de memoria compartida, semáforos SysV , semáforos POSIX, cerraduras futex, archivos respaldados y anónima de memoria compartida mediante mmap, Sockets dominio Unix, Netlink Sockets, red Sockets, mecanismo Inotify s, subsistema FUSE, subsistema D-Bus. Para la mayoría de mis necesidades, uso conectores. – enthusiasticgeek
@enthusiasticgeek D-Bus se realiza completamente en el espacio de usuario. Algunos tipos de núcleo están trabajando en [kdbus] (https://github.com/gregkh/kdbus) pero todavía es un trabajo en progreso. – new123456
en un procesador arm926ejs 200MHz, una llamada a método y respuesta con dos argumentos uint32 consume entre 0 y 15 ms. promedio 6 ms. cómo otras personas ven en otros procesadores? – minghua