Red de conocimiento informático - Aprendizaje de código fuente - Algoritmo del primer trabajo más corto

Algoritmo del primer trabajo más corto

El siguiente es el algoritmo de programación del primer trabajo más corto

El algoritmo de programación del primer trabajo más corto asigna los procesadores primero a los trabajos (procesos) con un tiempo de ejecución esperado corto. Por lo general, los trabajos cortos posteriores no se realizarán. ejecutado primero la tarea. Este algoritmo se llama Este algoritmo programará los trabajos de acuerdo con la duración del trabajo, es decir, el tiempo de servicio del trabajo se programará y ejecutará primero.

La ventaja de este algoritmo es que mejora el tiempo de respuesta promedio y el tiempo de respuesta promedio ponderado en comparación con FCFS, acorta el tiempo de espera de los trabajos y mejora el rendimiento del sistema.

La desventaja del algoritmo es que es posible que los trabajos relativamente largos no se programen durante mucho tiempo, lo que no es bueno para trabajos largos; además, el tiempo de servicio del trabajo se establece cuando el usuario envía el pedido; trabajo al sistema, y ​​es inevitable que algunos usuarios Para programar sus propios trabajos primero, el tiempo de servicio se acortará, lo que significa que hay factores humanos involucrados.

En un diseño típico, una tarea tiene los siguientes tres estados: Ejecutando (ejecutándose en la CPU) Listo (esperando ejecución) Bloqueado (Tarea suspendida, esperando que ocurra un evento), como recibir un conjunto de datos)

Dado que la CPU solo puede realizar una tarea en un momento determinado, la mayoría de las tareas están bloqueadas o en espera la mayor parte del tiempo. Puede haber una gran cantidad de elementos esperando ser ejecutados en la lista de espera, dependiendo de la cantidad de tareas requeridas por el sistema y el tipo de programador.

Normalmente, para un programador simple activado por tiempo, la estructura de datos de la lista de tareas de guardia debe diseñarse para acortar el tiempo de ejecución del programa en la parte crítica del programador tanto como sea posible. en el peor de los casos, para evitar que otras tareas permanezcan en la lista de espera y no puedan ejecutarse a tiempo.

Por lo tanto, en este tipo de programador, las tareas preventivas deben evitarse tanto como sea posible, e incluso deben desactivarse todas las interrupciones fuera del programador. Por supuesto, la estructura de datos de la lista de tareas de guardia también debe optimizarse aún más en función del número máximo de tareas requeridas por el sistema.