Sistemas operativos en tiempo real

3

Me han formulado esta pregunta: "¿Crees que el sistema necesitará respuestas deterministas o en tiempo real?" El problema que tengo es distinguir la diferencia entre las dos. Sé que una respuesta en tiempo real responderá a una entrada dentro de un período de tiempo específico, pero no estoy seguro de qué hará una respuesta determinista. Gracias.

    
pregunta user3178205

4 respuestas

4

Un sistema en tiempo real tiene una restricción establecida como: el sistema debe responder a un evento dentro de 10 ms. O bien: el sistema debe ejecutar el control de bucle PID a una velocidad fija de 10 kHz. Implícitamente se usa un período de 100us.

Ambos están bien establecidos límites de tiempo máximo. Sin embargo, no son exactamente deterministas; una actualización de bucle PID puede tardar 10 us, mientras que la siguiente puede tomar 15 us. Tampoco dice acerca del tiempo transcurrido entre las actualizaciones; p.ej. la "fase".

Este "jitter" puede ser un problema en algunos sistemas. Determinista describe que el "ruido" es muy bajo; es decir, es muy predecible cuánto tiempo se ejecutará un algoritmo, no variará mucho (o puede determinarse y compensarse) dadas las diferentes entradas o estados del programa.

Determinista puede ser importante al producir señales temporizadas, por ejemplo, video. En ese caso, querrá saber exactamente cuánto tardan en completarse las operaciones (intermedias), incluso cuando el algoritmo necesita ramas que demoren más o más tiempo en ejecutarse.

Algunos sistemas de alto rendimiento son desafiantes, ya que son CPU "aceleradas" que incorporan líneas de instrucciones y cachés que pueden detener la ejecución del código en algunas condiciones. Predecir / determinar estas condiciones puede ser casi imposible, por lo que determinista es muy difícil en plataformas complejas.

    
respondido por el Hans
7

No me tomo el crédito por esta respuesta, encontré en Stack Overflow y creo que hace un muy buen trabajo al resumir la diferencia entre los dos, así que si funciona para usted, siga las enlace y upvote esa respuesta.

Debes distinguir entre:

  • Tiempo real difícil : hay un límite absoluto en el tiempo de respuesta que no debe infringirse (se considera un error), por ejemplo. esto es apropiado, por ejemplo, cuando controla motores robóticos o dispositivos médicos en los que el incumplimiento de un plazo podría ser catastrófico.
  • Tiempo real suave : hay un requisito para responder rápidamente la mayor parte del tiempo (quizás 99.99% +), pero es aceptable que el límite de tiempo se infrinja ocasionalmente, lo que proporciona la respuesta En promedio es muy rápido. p.ej. esto es apropiado cuando se realiza una animación en tiempo real en un juego de computadora: no cumplir con una fecha límite puede causar que se salte un fotograma pero que no arruine la experiencia de juego, fundamentalmente

En la mayoría de los sistemas se puede lograr fácilmente un tiempo real suave siempre y cuando tenga el hardware adecuado y preste suficiente atención para identificar y optimizar los cuellos de botella. Con algunos ajustes, incluso es posible lograrlo en sistemas que tienen pausas no deterministas (por ejemplo, la recolección de basura en Java).

Hard en tiempo real requiere soporte dedicado del sistema operativo (para garantizar la programación) y algoritmos determinísticos (de modo que una vez programado, se garantiza que una tarea se completará dentro del plazo). Obtener este derecho es difícil y requiere un diseño cuidadoso de toda la pila de hardware / software.

Aquí hay un enlace a la respuesta: ¿Existe? ¿Una diferencia entre un sistema en tiempo real y uno que es simplemente determinista?

    
respondido por el R. Johnson
2

¿Fue esta una pregunta que te enviamos en un correo electrónico? No creo que el O haya sido una opción entre estas 2 opciones, sino una opción entre los sistemas comunes "no en tiempo real" y uno en tiempo real / determinista.

Como han señalado otros, es posible que necesite una aclaración porque "determinista" y "respuestas en tiempo real" podrían ser realmente subconjuntos entre sí PERO la otra persona puede significar "respuestas deterministas o en tiempo real "como UNA elección frente a la alternativa común implícita de" respuestas no deterministas y no en tiempo real ".

Por lo tanto, es posible que la pregunta haya intentado limitar una decisión de diseño entre:

1) tiempo determinístico o respuestas en tiempo real

  • Un sistema capaz de respuestas deterministas y en tiempo real, como un microprocesador Arduino con un sistema operativo en tiempo real que podría responder a las entradas a tiempo para evitar causar daños

2) respuestas no deterministas y no en tiempo real

  • Un sistema como una frambuesa pi que ejecuta una versión de Linux no en tiempo real (como Debian) que no responde a las entradas de manera determinista pero puede ser lo suficientemente bueno para luces llamativas y otras situaciones en las que nada puede dañarse y nadie puede lastimarse si un servo o motor no se apaga a tiempo
respondido por el nvuono
2

Tiempo determinista: relativo a los ciclos / tics del reloj del sistema local. El reloj del sistema puede fluctuar, desviarse, detenerse, ralentizarse y ralentizarse, pero todos los componentes de hardware y software desactivados en este reloj del sistema principal permanecerán en perfecta sincronización. Por ejemplo, un programa de PC con múltiples subprocesos a menudo se puede pausar, siempre que todos los subprocesos se pausen y se reanuden simultáneamente.

Un buen ejemplo sería una simulación de software

Tiempo real - absoluto temporización del mundo real en s, ms, ns, us, etc. La sincronización debe permanecer sincronizada con una o más interfaces externas, lo que limita la velocidad, la precisión y la continuidad de las temporizaciones internas. P.ej. El software de controlador de PC que controla un periférico no se puede pausar y reanudar sin perder una conexión con el periférico, lo que provocaría un fallo en el periférico o se requeriría un procesamiento adicional para restablecer la conexión.

Un buen ejemplo sería un sistema integrado.

    
respondido por el Mark Ch

Lea otras preguntas en las etiquetas