Planificador de procesos:
es la sección del sistema operativo encargado de
ordenar la secuencia en que los procesos del serán
ejecutados, con el fin de optimizar el uso de los
recursos del sistema.
Algoritmo de planificación:
es el método como el planificador organiza los
procesos para ser ejecutados.
Introducción
En sistemas de un solo proceso el planificador
sólo tenía que ejecutar la siguiente instrucción.
En los sistemas multiproceso es necesario aprovechar el
hardware al máximo.
La ejecución de un proceso consiste en una alternancia entre
ráfagas de CPU y ráfagas de E/S. Optimizar esto, es responsabilidad
del planificador.
Introducción
¿Los procesos interactivos de usuario deberían tener prioridad
sobre los procesos de segundo plano del sistema? Depende de la situación.
El planificador debe hacer uso eficiente de la CPU.
La conmutación de procesos también tiene un costo computacional.
Introducción
Introducción
Cuando planificar procesos:
En la creación de procesos.
Cuando un proceso termina.
Durante el bloqueo de E/S de un proceso.
Cuando ocurre una interrupción de E/S.
Categoría de planificadores
No apropiativo: Selecciona un proceso para
ejecutarlo. Permite su ejecución hasta que el mismo se bloquee
(esperando E/S) o hasta que termine.
Apropiativo: Selecciona un proceso para ejecutarlo.
Permite su ejecución por un espacio de tiempo fijo
y luego lo saca del CPU para asignarlo a otro proceso.
Criterios de un planificador
Maximizar:
Uso del CPU.
Rendimiento.
Minimizar:
Tiempos de ejecución.
Tiempo de respuesta.
Tiempo de espera.
Desapachador
Es el módulo que proporciona control al CPU de los procesos seleccionados por el
planificador a corto plazo.
Esto impica:
Realiza un cambio de contexto.
Cambio al modo de usuario (sin privilegios).
Salto a la posición n correcta del programa para continuar su ejecución.
El despachador debe ser muy rápido, pues se invoca cada que vez que se conmuta un proceso.
El tiempo perdido por este proceso se llama latencia de despacho.
Despachador
El Despachador, también conocido como Scheduler
asigna cuales aplicaciones deben ser ejecutadas en el procesador
Tipos de planificadores
Procesamiento por lotes
Primero en entrar, primero en ser atendido (FCFS)
Trabajo mas corto primero (SJF)
Menor tiempo restante a continuación (SRTN)
Tipos de planificadores
Sistemas interactivos:
Turno circular (Round Robin).
Planificación por prioridad
Colas multinivel.
Colas multinivel con retroalimentación.
Planificación garantizada
Planificación en tiempo real.
Planificación en sistemas multiprocesador.
Procesamiento por lotes
FIFO - FCFS
Es el más simple de los algoritmos de planificación, simplemente ejecuta
los procesos a medida que solicitan acceso al CPU. (mediante una FIFO).
Cuando se coloca un proceso en la cola de preparados su PCB se coloca al
final de la cola, cuando el CPU está libre el planificador coloca el proceso
ubicado al principio de la cola, pasa a ejecutarse y es eliminado de la cola.
Uno de los problemas de este algoritmo es el efecto Convoy,
el cual ocurre cuando un proceso espera mucho tiempo, debido a un proceso
utilizando el CPU por mucho tiempo.
FIFO - FCFS
Procesos
Llegada
Tiempo CPU (ms)
P1
0
6
P2
4
3
P3
6
4
P4
7
1
Proceso
Operación
Total
P1
0
0
P2
6 - 4
2
P3
9 - 6
3
P4
13 - 7
6
Tiempo de espera promedio: 2.75
0
1
2
3
4
5
6
7
8
9
10
11
12
13
Procesamiento por lotes
Primer Proceso mas corto (SJF)
Asigna a la CPU el siguiente proceso con menor tiempo trabajo, en caso de existir
varios procesos con el mismo valor aplica FCFS.
Sin embargo, es costoso realizar el calculo del tiempo restante para cada proceso
y a veces es díficil de predecir/conocer el valor real.
Solo funciona si TODOS los procesos llegan al mismo tiempo
Procesamiento por lotes
Menor tiempo restante (SPN)
Es una versión apropiativa de SJF. Selecciona el trabajo con el menor tiempo de
procesamiento restante. Es necesario conocer el tiempo de ejecución.
SJF/SPN
Procesos
Llegada
Tiempo CPU (ms)
P1
0
7
P2
2
4
P3
4
1
P4
5
4
Proceso
Operación
Total
P1
7 - 7 - 0
0
P2
12 - 4 - 2
6
P3
8 - 4 - 1
3
P4
16 - 4 - 5
7
Tiempo de espera promedio: 4
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sistemas interactivos
Round Robin (Algoritmo por turnos)
Asigna un espacio de tiempo a cada proceso (cuanto o quantum)
para ejecutarse, si el proceso: termina, acaba el cuanto, se bloquea por acceso
a E/S. El S.O. hace un cambio de contexto y lo coloca (si aún debe seguir
ejecútandose) al final de la cola.
El cuanto o quantum suele estar entre los 10ms y 100ms.
Como el cambio de contexto es costosa, se debe evitar:
Cuanto muy bajo: sobrecarga del sistema.
Cuanto muy alto: se comporta como un FCFS/FIFO
Round Robin (Algoritmo por turnos)
Con un quantum de 3:
Procesos
Llegada
Tiempo CPU (ms)
P1
0
7
P2
2
4
P3
4
1
P4
5
4
Proceso
Operación
Total
P1
15 - 7 - 0
8
P2
14 - 4 - 2
8
P3
10 - 4 - 1
5
P4
16 - 4 - 5
7
Tiempo de espera promedio: 7
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Round Robin (Algoritmo por turnos)
Sistemas interactivos
Por prioridades
Cada proceso tiene asociado una prioridad, entonces al momento de quedar la CPU
libre, se le asigna el proceso con la prioridad mas alta. Sin embargo, hay que
tener cuidado, pues los procesos con baja prioridad pueden no ser ejecutados debido
a la llegada de procesos con prioridad superior, esto se resuelve aplicando
la técnica de envejecimiento.
Generalmente los números de menor valor son los de mayor prioridad, pero no existe
un estándar para declarar esto como una afirmación para todos los S.O.
Por prioridades
Pro.
Lleg.
Tiempo CPU (ms)
Prioridad
P1
0
7
3
P2
2
4
1
P3
4
1
3
P4
5
4
2
Pro.
Operación
Total
P1
15 - 7 - 0
8
P2
6 - 4 - 2
0
P3
16 - 4 - 1
11
P4
10 - 4 - 5
1
Tiempo de espera promedio: 5
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sistemas interactivos
Colas multinivel
Cada proceso es clasificado en grupos, por ejemplo: de primer o segundo
plano,de usuario o del sistema, de usuarios locales o remotos,
tamaño de memoria, prioridad, entre otros.
La cola de procesos preparados se divide en varias colas distintas,
una para agrupación realizada.
Cada una de las cola posee su propio algoritmo de planificación
para cada proceso dentro de ella.
A nivel de colas, se planifican de acuerdo a una prioridad
(pero puede existir inanición)
o se asigna cierta porción de tiempo a cada uno.
Ejemplo de cola multinivel
Sistema
Interactivos
Por lotes
Usuario
Colas multinivel con retroalimentación
Un proceso puede moverse de una cola a otra.
Definido por los siguientes parámetros:
Número de colas.
Algoritmos de planificación para cada cola.
Método para determinar cuando mover un
proceso a una cola de mayor prioridad.
Método usado para ver cuando mover un proceso
a una cola de menor prioridad.
Método usado para determinar en qué cola
ingresará un proceso cuando necesite servicio.
Ejemplo de cola multinivel con retroalimentación
quantum = 8
quatum = 16
FCFS
Sistemas interactivos
Planificación garantizada
Garantiza una porción igual de CPU a los usuarios del sistema.
Si hay n usuarios, le corresponderá porción de
1/n de CPU a cada uno de ellos.
Otra forma es agrupar los usuarios y asignarles a
cada uno de esos grupos una porción de CPU en
función de cierta prioridad.
Sistemas interactivos
Planificación garantizada
Ventajas: equitativa para
cada usuario pero penaliza los usuarios que ejecutan
muchos procesos. El tiempo compartido del CPU
es asignado por el administrador.
Desventajas: Es equitativo para el
usuario pero no para el CPU o los procesos. Un usuario puede
tener mucho CPU asignado y no lo usará nunca.
Un usuario puede necesitar mas CPU del asignado
y tampoco lo podrá conseguir.
Sistemas interactivos
Tiempo real
Son sistemas que deben reaccionar en instantes de tiempo muy corto.
Se dividen en:
Tiempo real duro: la respuesta debe ser en un
tiempo estricto que se debe cumplir.
Tiempo real suave: se tolera un poco de retraso
en el tiempo de respuesta.
Se dividen los programas en varios procesos con comportamiento predecible.
Sistemas interactivos
Tiempo real
Se dice que un sistema de tiempo real es planificable si hay m
eventos periódicos y el evento i ocurre con el periodo Pi
y requiere Ci segundos de tiempo de la CPU para manejar
cada evento , tal que:
Planificación en sistemas multiprocesador
La idea es compartir la carga de todos los procesadores, para
que todos trabajen a un ritmo similar.
Multiprocesamiento asimetrico: un núcleo se suele
encargar de realizar la planificación, procesamiento
de las E/S y actividades del sistema operativo.
Multiprocesamiento simetrico (SMP): cada procesador
se autoplanifica: existe una cola de procesos preparados en común
o cada uno tiene su propia cola, existe seguridad para no tomar
el mismo proceso al mismo tiempo.
Planificación en sistemas multiprocesador
Existe un proceso que se encarga de chequear cada cierto tiempo
la carga de cada procesador y balancea la carga del mismo.
Hoy en día la mayoría de los dispositivos son multiprocesador,
por ello vienen con sistemas operativos con
este tipo de planificación.
Según el libro Windows Internals, Part 1: Covering Windows Server 2008 R2 and Windows 7
(2012), Windows utiliza un sistema de colas multinivel basado en prioridades
donde existen varias colas.
Siempre un proceso de la cola de la mayor prioridad se encuentra en ejecución,
con la limitación de que ciertos hilos de prioridad alta pueden ser ejecutados
en el procesador que se les permita o prefieran ejecutarse, un fenómeno llamado
Afinidad del procesador.
macOS
Utiliza una colas de retroalimentación con 4 prioridades: normal, sistema, kernel y
tiempo real.
Linux
CFS - Complete Fair Schedule
Desde la versión 2.6.23 utiliza una variante cola justa (utilizada en los paquetes
de red). Es un algoritmo similar al Round Robin donde al momento que un proceso
regresa a la cola, ésta se coloca en una posición en base al tiempo que duró en el procesador.