Planificacion Flashcards
(15 cards)
Que es el planificador?
Es el modulo del SO que mueve los procesos entre las distintas colas de planificación eligiendo un proceso de entre los que están en memoria listos para ejecutarse y asignándole la CPU.
Toma la decisión de planificación:
- Cuando un proceso deja la CPU voluntariamente: termino, hizo syscall y se bloquea
esperandola, liberó la cpu con yield()
- Cuando un proceso bloqueado entra a la cola de READY.
Expropiativo
Útil en sistemas críticos. Más overhead
Más justo dado que no monopoliza la CPU: Un mismo proceso (muy largo) monopoliza el uso de la CPU. Impidiendo que el resto la use.
Se replanifica cuando:
1. Un proceso finaliza
2. Un proceso se bloquea
3. Hay una interrupción de clock, cuando se implementa un quantum.
4. Hay un proceso nuevo en la cola de READY (porque estaba en NEW o bien en BLOCKED)
No expropiativo
Es útil para sistemas no críticos donde no se tengan procesos que necesiten estar ejecutando sí o sí. Sistemas donde se quiera minimizar el overhead producto de hacer cambios de procesos.
Puede llegar a causar starvation (inanición de procesos): Varios procesos cortos y el largo se
pospone indefinidamente. El problema es que siempre que se quiere replanificar, no se elige, dado que se eligen a procesos de mayor prioridad volviéndose constante la situación.
Se replanifica cuando:
1. Un proceso finaliza
2. Un proceso se bloquea
Quien ejecuta las decisiones del planificador?
El Dispatcher es el módulo que cede la CPU al proceso elegido por el planificador de CPU.
Para eso tiene que:
- Realizar un cambio de contexto.
- Cambiar la maquina a modo usuario (el dispatcher actúa en modo kernel)
- Saltar al punto apropiado del programa para continuar con su ejecución.
La latencia del dispatcher es el tiempo en que este tarda en deterner un proceso y poner otro en ejecución. Debe ser lo más pequeña posible dado que es overhead.
FIFO
Overhead: Minimo, por ser el mas basico/sencillo.
Monopolizacion: SI. Propenso
Starvation: NO
Que proceso prioriza: Ninguno. Orden de llegada
Equitativo: NO. El tiempo de espera medio puede ser muy alto, poco predecible.
Desalojo: NO. Monopolizacion.
SJF
Overhead: Alto (mayor todavia con desalojo)
Monopolizacion: Rara. Podria pasar salvo que sea con desalojo.
Starvation: Si. Los procesos largos pueden tener starvation si es que llegan mcuhos procesos cortos.
Que proceso prioriza: I/O Bound
Equitativo: No
Desalojo: NO. Monopolizacion
Prioridades
Overhead: Moderado
Monopolizacion: Propenso aunque con desalojo prodria reducrise la probabilidad
Starvation: Si. Los procesos con baja prioridad podria no ejecutarse nunca.
Que proceso prioriza: Segun numero entero predefinido.
Equitativo: No
Desalojo: Si
HRRN
Overhead: Alto
Monopolizacion: Rara vez podria pasar.
Starvation: No. Gracias al aging (tecnica que consiste en aumentar gradualmente la prioridad de los procesos que esperan mucho en el sistema)
Que proceso prioriza: Segun el Response Ratio. A mayor espera segun tama;o de su rafaga, mayor prioridad tendra el proceso.
Equitativo: Si
Desalojo: No - Monopolizacion
RR
Overhead: Depende de Q (menor valor de Q, mas interrupciones, mas overhead) Peor menos que FIFO.
Monopolizacion: La evita, siempre y cuando Q no sea muy grande (si no FIFO)
Starvation: NO
Que proceso prioriza: CPU Bound, ligeramente perjudica a los procesos I/O bound ya que se bloquean rapidamente.
Equitativo: Si
Desalojo: Si
VRR
Overhead: Mas que RR, por las dos colas.
Monopolizacion: Como RR
Starvation: NO
Que proceso prioriza: I/O bound pero menos que SJF
Equitativo: Si. Mas que RR y mas que FIFO. Limita el uso del procesador.
Desalojo: Si
Prioridad Eventos en la cola de READY
- Interrupción de clock por fin de quantum → proceso que pasó de RUNNING a READY.
- Interrupción por finalización de evento o fin de E/S → proceso que pasó de BLOCKED a READY.
- Syscall por tener un proceso nuevo → proceso recién llegado a READY proveniente de NEW.
Cuando hay syscalls?
- Hay una SYSCALL cuando un proceso nuevo llega a READY proveniente de NEW.
- Hay una SYSCALL cuando un proceso finaliza (llega a EXIT).
- Hay una SYSCALL justo antes de cada ráfaga de E/S.
Cuando hay interrupciones?
- Hay una INTERRUPCIÓN de clock en cada fin de quantum.
- Hay una INTERRUPCIÓN generada por un dispositivo de E/S en cada fin de ráfaga de E/S.
Quien planifica el KLT y el ULT
KLT: Planificador corto plazo
ULT: Bibliotecas de hilos ULT. Si no hasta que no termine el ULT que empezo a ejecutar no puedo usar el otro a la par.
info para ejercicios
Si los I/O pasan por la biblioteca de hilos o utilizan wrappers, se puede replanificar: a la hora de terminar el I/O de un ULT, poder seguir con otro ULT hermano en vez de finalizar con el que empezamos.
Si es directamente por syscall, no puede replanificar, hasta que no termine en su totalidad el ULT, no pueden empezar ULTs hermanos.
Si no aclara, se asumen que utilizan Wrappers y Sin Jacketing.