Scheduler
“Cada vez que se ejecute un nuevo proceso pasará a ejecución, si había otro proceso en ejecución, este será expulsado y pasará a la cola de preparados, en último lugar.
Cada vez que un proceso necesite E/S, saldrá de ejecución y pasará a E/S, ejecutandose el primer proceso de la cola de preparados.
Cada vez un proceso no necesite mas E/S pasará a ejecución, si habia otro proceso en ejecución, este será expulsado y pasará a la cola de preparados, en último lugar.”
¿Que os parece este scheduler? Sólo le veo una pega, y es que precisamente por ser tan simple, no contempla que un proceso que salga de E/S te tire el ultimo proceso que hayas metido en ejecución.¿Sería una pega real?
De momento me quedo con esta visión simplista, y me cepillo quantums y zarandajas, que desperdician rendimiento por los cuatro costados.
ACTUALIZACIÓN:
Faltaba añadir:
“Bajo petición del usuario, despacha el proceso en ejecución y carga el siguiente de la cola, si lo hay”.
March 10th, 2007 at 11:10
http://mnm.uib.es/gallir/posts/2007/03/10/1001/
March 10th, 2007 at 13:54
Joder, esto si que es un scheduler “actual”, le hecho un vistazo y te digo que me parece.
March 10th, 2007 at 14:04
Ya he mirado un poco por encima la explicación es castellano y te comento. Estoy seguro que mis comentarios te parecerán barbaridades :P.
Para ser una estructura simple, me parece endiabladamente enreversada.
Como haces para trabajar con procesos con prioridades y hacerlo en tiempo constante?Según tengo entendido los últimos Schedulers en Unix trabajan en tiempo constante.
Por otro lado (y esto te va a sonar a locura) DETESTO los quantums y /creo/ que se puede sobrevivir sin ellos.
Finalmente si que le veo una virtud, y es el prevenir “inanición” de los procesos. Pero eso para mi proyecto no me importa. Si un proceso se queda por ahí olvidado es porque el procesador ha estado TODO el tiempo trabajando en otra cosa.
Te remito a mi explicación en el post sobre ideas generales.
Este “diseño” tiene como objetivo un SO para UN SÓLO usuario. Evidentemente estos planteamientos en un entorno tan multiusuario como cualquier Unix, suenan riiculos.
Nos leemos ;).
March 10th, 2007 at 14:08
Ups, se me había olvidado otra cosa.
En Unix para darle prioridad a los procesos interactivos,
y mejorar su tiempo de respuesta, cualquier proceso interactivo entra con la máxima prioridad, y con el paso del tiempo esta va bajando.
¿Porque no simplemente cada vez que entra un proceso lo ejecutas?(Tiempo de respuesta “virtualmente” 0)