Preferiría que esto fuera un comentario, pero se necesitan demasiados caracteres. De todos modos, ozgur, a juzgar por las preguntas en las respuestas a tus comentarios parece que no entiendes que no puedes simplemente decir que mi hilo tarda tanto en ejecutarse y esperar que mágicamente funcione en conjunto con otros hilos todo gracias al SO. Tienes que diseñar tus hilos y analizarlos para el peor caso de rendimiento. Si el peor caso no cumple con tus requisitos, entonces tienes que rediseñar tus hilos.
Así que en lugar de decir simplemente que el hilo 1 tarda 10 ms en completarse y el hilo 2 tarda 20 ms, tienes que decir también que el hilo 1 debe ejecutarse cada 15 ms. el hilo 2 debe ejecutarse cada 40 ms. el hilo 3 debe ejecutarse cada 500 ms, el hiloN debe ejecutarse cada 1500 ms. Luego asignas el tiempo que puede tardar cada hilo en completarse en el peor de los casos. Pones todo eso junto, identificas los peores escenarios posibles y luego tienes que asegurarte de que cada hilo cumple con sus requisitos de tiempo. En este análisis también se identifica si algunos subprocesos deben ser más prioritarios que otros para cumplir con sus requisitos de tiempo.
Por ejemplo, si el hilo 5 se está ejecutando y es interrumpido por el hilo 4, que a su vez es interrumpido por el hilo 3, que a su vez es interrumpido por el hilo N, podría ser el peor de los casos. Se pone todo esto en una línea de tiempo y se verifica que incluso en este peor escenario cada hilo cumple con sus requisitos de tiempo. Puedes asegurarte de que los hilos completen este peor escenario de forma determinista utilizando el planificador y las prioridades de un sistema operativo en tiempo real. Ese determinismo es lo que hace que un sistema operativo en tiempo real.
Si haces que los hilos tengan la misma prioridad, habrás perdido parte (si no todo) de ese determinismo porque el planificador puede ser libre de elegir el hilo que quiera ejecutar a continuación.
En un sistema operativo como Windows, no sólo no se puede especificar cuándo se ejecutará cada hilo, sino que ni siquiera se puede garantizar que la aplicación vaya a ejecutarse en cualquier momento. El sistema operativo podría detener tu aplicación y ejecutar algún servicio en segundo plano cuando lo desee. En otras palabras, no hay determinismo. Por lo tanto, Windows no es un sistema operativo en tiempo real. Aunque, si sus requisitos de tiempo son grandes, como (el hilo1 se ejecuta cada 10 segundos, el hilo2 se ejecuta cada 15 segundos), entonces usted puede tratar esencialmente a Windows como un sistema operativo en tiempo real, siempre y cuando tenga en cuenta la pendiente y aproximadamente cada 10 o 15 segundos (más o menos unos cientos de milisegundos y una ventana ocasional perdida) es suficiente.
0 votos
El determinismo incluye el conjunto (y el momento) de las entradas
3 votos
Te falta el definición de RTOS. ;-)
1 votos
Un RTOS no se utiliza para ejecutar tareas individuales que deben cumplir requisitos de temporización individuales, sino que se utiliza para ejecutar un sistema que debe, en su conjunto, cumplir todos sus requisitos de temporización. Determinista no significa "independiente de todas las circunstancias", sino "cuando conozco las circunstancias lo suficientemente bien (lo que incluye definitivamente las tareas de mayor prioridad) puedo predecir un límite superior".