2012-07-17 16 views
5

He oído que ejecutar llamadas al sistema en Linux (RT_PREEMPT kernel) nunca es seguro en tiempo real.¿Todas las llamadas al sistema no son seguras en tiempo real?

Esto parece excesivamente restrictivo: ¿cómo podría su proceso hacer algo (a menos que tenga que hacerse completamente a través de DMA) sin llamadas al sistema?

¿Es esto cierto o algunas llamadas al sistema (como clock_gettime) en tiempo real son seguras?

+0

¿Cuál es ** su ** *** exacta ** definición * de * "realtime-safety" *? –

+0

En lo que a mí respecta, una operación segura en tiempo real siempre se completará o fallará en un tiempo razonablemente pequeño. Estamos intentando ejecutar un bucle de control de 1 kHz ... obviamente, debemos evitar FS y muchas otras operaciones, pero ¿necesitamos también evitar * todas las llamadas al sistema para garantizar un tiempo de ejecución <1 ms? – crosstalk

+0

¿Qué quiere decir con "garantizar un tiempo de ejecución" inferior a un milisegundo? ¿Tu vida depende de esa promesa? Apuesto a que un programa en tiempo real bien codificado en un kernel Linux RT_PREEMPT bien configurado y un sistema con un hardware lo suficientemente rápido cumpliría con ese plazo; pero debes decidir si mis sentimientos son suficientes. –

Respuesta

1

Si con "en tiempo real seguro" quiere decir que se garantiza que se ejecutará en un tiempo limitado, entonces Linux, al igual que la mayoría de los sistemas operativos de propósito general, no es seguro en tiempo real.

Varios real-time operating systems (RTOS) proporcionan este tipo de garantía.

0

Puede consultar el archivo functions desde el repositorio jack_interposer. Estos son no seguro en tiempo real. Es una pregunta fácil que preguntar qué es seguro en tiempo real. Una buena regla del pulgar para lo que debe evitarse son:

  • Cualquier sincronización bloqueo de la función función
  • Cualquier asignación de memoria
  • Cualquier I/O función
  • Algoritmos (a menos de espacio de usuario) que tienen una complejidad mayor que O (n), donde n es el número de elementos en el búfer de entrada.
Cuestiones relacionadas