2010-04-26 30 views

Respuesta

7

Echa un vistazo a at this question. "Tiempo real" (para un proceso) se refiere al algoritmo de programación, o el pensamiento que hace el kernel cuando decide qué proceso se ejecutará. Un proceso en tiempo real preempt todos los demás procesos (de menor peso de programación) cuando se recibe una interrupción y debe ejecutarse.

Un programa que solo acepta la entrada del usuario se pondrá en modo de reposo (bloqueo) mientras espera la entrada, o incluso entre pulsaciones de teclas (dependiendo). Tal programa no necesita tener una prioridad de programación tan alta. Los procesos RT deben necesitar para ejecutar antes que cualquier otro proceso en el sistema. Esto podría deberse a que el proceso es crítico para algún objetivo crucial, o se necesitan temporizadores de alto rendimiento (en cuyo caso, querría un sistema operativo en tiempo real, que Linux estándar es , no).

De todos modos, para obtener una descripción general de las diferencias entre SCHED_FIFO y SCHED_RR, consulte la pregunta que he vinculado. La decisión que debe tomar si contempla una sobre otra no es si el programa necesita ejecutarse como RT, esa es una decisión de ingeniería fundamental. Decidir entre los dos es solo una cuestión de cómo desea que su proceso coopere con los demás.

Si estaba usando un kernel estándar para controlar un elevador, el proceso que atendía las interrupciones de hardware de los microinterruptores probablemente usaría SCHED_FIFO con un peso RT. Por otra parte, probablemente no usaría Linux estándar para eso.

Si estaba escribiendo un cliente de correo electrónico, utilizaría el programador estándar y le permitiría al usuario nice ejecutar los programas como lo considere oportuno.

Cuestiones relacionadas