Está en la página 1de 47

Capítulo 5: Planificación CPU

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007
Capítulo 5: Planificación de CPU
Conceptos básicos
Criterios de planificación
Algoritmos de planificación
Planificación multi-procesador
Planificación de tiempo real
Planificación con hilos de control
Ejemplos de sistemas operativos
Planificación en hilos de Java
Evaluación de algoritmos

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.2 Silberschatz, Galvin and Gagne ©2007
Conceptos básicos

Obtener el máximo aprovechamiento de


CPU con multiprogramación
Ciclo explosivo CPU–E/S – El proceso de
ejecución consiste de un ciclo de ejecución
en CPU y espera de E/S
Distribución de explosión de CPU

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.3 Silberschatz, Galvin and Gagne ©2007
Secuencia alternada de CPU y E/S

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.4 Silberschatz, Galvin and Gagne ©2007
Histograma de tiempo de exp. CPU

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.5 Silberschatz, Galvin and Gagne ©2007
Planificador de CPU

Selecciona entre los procesos en memoria listos


para ejecutar, asigna el CPU a uno de ellos
Las decisiones del planificador de CPU pueden
ocurrir cuando:
1. Cambia de estado ejecutando a espera
2.Cambia de estado ejecutando a listo
3.Cambia de estado esperando a listo
4.Termina
Planificación en 1 y 4 es no-prioritaria
(nonpreemptive)
Los demás utilizan prioridades (preemptive)

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.6 Silberschatz, Galvin and Gagne ©2007
Despachador

El modulo Despachador le da el control del CPU


al procesador seleccionador por el planificador;
esto involucra:
Cambiar el contexto
Cambiar a modo de usuario
Brincar a la posición adecuada en el programa
de usuario para reiniciar el programa
Latencia de despacho – tiempo que toma al
despachador detener un proceso e iniciar otro

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.7 Silberschatz, Galvin and Gagne ©2007
Criterios de planificación
Utilización de CPU – mantener el CPU tan ocupado como
sea posible
Rendimiento (Throughput) – # de procesos que completan
su ejecución por unidad de tiempo
Tiempo de vuelta – cantidad de tiempo para ejecutar un
proceso particular
Tiempo de espera – cantidad de tiempo que un proceso ha
esperado en la cola listos
Tiempo de respuesta – cantidad de tiempo que toma
desde que una solicitud se realiza hasta que se produce la
primera respuesta, no salida (para ambientes de tiempo-
compartido)

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.8 Silberschatz, Galvin and Gagne ©2007
Criterios de optimización

Utilización max CPU


Rendimiento max
Tiempo mínimo de vuelta (turnaround)
Tiempo mínimo de espera
Tiempo mínimo de respuesta

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.9 Silberschatz, Galvin and Gagne ©2007
Planificación First-Come, First-Served (FCFS)

Proceso Burst Time


P1 24
P2 3
P3 3
Supon que los procesos llegan en el orden: P1 , P2 , P3
La gráfica de Gantt del planificador es:

P1 P2 P3

0 24 27 30

Tiempo de espera para P1 = 0; P2 = 24; P3 = 27


Tiempo promedio de espera: (0 + 24 + 27)/3 = 17

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.10 Silberschatz, Galvin and Gagne ©2007
Planificación FCFS (Cont.)
Supon que los procesos llegan en el orden
P2 , P3 , P1
La gráfica de Gantt para el planificador es:

P2 P3 P1

0 3 6 30

Tiempo de espera para P1 = 6; P2 = 0; P3 = 3


Tiempo promedio de respuesta: (6 + 0 + 3)/3 = 3
Mucho mejor que en el caso anterior
Efecto Convoy procesos cortos detrás de procesos
largos

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.11 Silberschatz, Galvin and Gagne ©2007
Planificación Shortest-Job-First (SJF)
Asociar con cada proceso la longitud de su siguiente
explosión de CPU. Utilizar estas longitudes para
planificar el proceso con el tiempo más corto
Dos esquemas:
nonpreemptive – una vez que le damos el CPU a un
proceso dado, no puede quitársele hasta que
complete su explosión de CPU
preemptive – si un proceso nuevo llega al CPU con
longitud de explosión menor al tiempo restante del
proceso en ejecución, lo sacas. Este esquema es
conocido como Shortest-Remaining-Time-First (SRTF)
SJF es optimo – da el menor tiempo de espera promedio
para un conjunto de procesos dado

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.12 Silberschatz, Galvin and Gagne ©2007
Ejemplo de Non-Preemptive SJF

Proceso Tiempo de llegada Tiempo de exp


P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
SJF (non-preemptive)
P1 P3 P2 P4

0 3 7 8 12 16

Tiempo de espera promedio = (0 + 6 + 3 + 7)/4 = 4

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.13 Silberschatz, Galvin and Gagne ©2007
Ejemplo de Preemptive SJF

Proceso Tiempo de llegada Tiempo exp.


P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
SJF (preemptive)
P1 P2 P3 P2 P4 P1

0 2 4 5 7 11 16

Tiempo de espera promedio = (9 + 1 + 0 +2)/4 = 3

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.14 Silberschatz, Galvin and Gagne ©2007
Determinar la longitud de la sig. exp
Solamente podemos estimar la longitud
Puede hacerse utilizando la longitud de la exp
anterior de CPU, utilizando promedio exponencial

1. t n actual length of n th CPU burst


2. n 1 predicted value for the next CPU burst
n 1
tn 1 n
.
3. , 0 1
4. Define :

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.15 Silberschatz, Galvin and Gagne ©2007
Predicción de longitud de la sig. Exp de CPU

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.16 Silberschatz, Galvin and Gagne ©2007
Ejemplos de promedio exponencial
=0
= n
n+1

La historia reciente no cuenta


=1
n+1 = tn
Sólo cuenta la última explosión de CPU
Si expandimos la fórmula, obtenemos:
n+1 = tn+(1 - ) tn -1 + …
+(1 - )j tn -j + …
+(1 - )n +1 0

Dado que ambos y (1 - ) son igual o menores que 1, cada


término sucesivo tiene menos peso que su predecesor

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.17 Silberschatz, Galvin and Gagne ©2007
Planificación con prioridades
Una prioridad numérica (entero) se asocia con cada
proceso
El CPU se asigna al proceso con la prioridad más alta
(entero más pequeño = prioridad más alta)
Preemptive
nonpreemptive
SJF es un planificador con prioridades donde la prioridad
es la explosión de CPU determinada
Problema -> hambruna – procesos de baja prioridad
pueden nunca ejecutarse
Solución -> Envejecer – conforme pasa el tiempo,
incrementar la prioridad de los procesos

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.18 Silberschatz, Galvin and Gagne ©2007
Round Robin (RR)
Cada proceso obtiene una pequeña unidad de tiempo de
CPU (time quantum), usualmente 10-100 millisegundos.
Después que ha pasado este tiempo, el proceso es
sacado (preempted) y se agrega a la cola de listos.
Si hay n procesos en la cola de listos y el tiempo
quantum es q, entonces cada proceso obtiene 1/n del
tiempo de CPU en pedazos de a lo más q unidades a la
vez. Ningún proceso espera más de (n-1)q unidades de
t.
Rendimiento
q grande -> FIFO
q pequeña -> q debe ser grande con respecto al
cambio de contexto, de otra forma la carga
administrativa es muy grande

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.19 Silberschatz, Galvin and Gagne ©2007
Ejemplo de RR con Time Quantum = 20

Proceso Burst Time


P1 53
P2 17
P3 68
P4 24
La gráfica de Gantt es:

P1 P2 P3 P4 P1 P3 P4 P1 P3 P3

0 20 37 57 77 97 117 121 134 154 162

Típicamente, tiempo de vuelta promedio mayor a SJF,


pero mejor respuesta

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.20 Silberschatz, Galvin and Gagne ©2007
Tiempo de Quantum y Context Switch

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.21 Silberschatz, Galvin and Gagne ©2007
Tiempo de vuelta varía con el Quantum

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.22 Silberschatz, Galvin and Gagne ©2007
Cola multi-niveles
La cola de listos se particiona en varias colas:
foreground (interactive)
background (batch)
Cada cola tiene su propio algoritmo de planificación
foreground – RR
background – FCFS
Se debe hacer planificación entre colas
Planificación con prioridad fija; (i.e., servir todas las
del foreground y luego background). Posibilidad de
hambruna.
Rebanada de tiempo – cada cola obtiene una cierta
cantidad de tiempo de CPU, que puede planificar
entre sus procesos; i.e., 80% para foreground en RR
20% para background en FCFS

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.23 Silberschatz, Galvin and Gagne ©2007
Planificación con colas de varios niveles

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.24 Silberschatz, Galvin and Gagne ©2007
Colas varios niveles con retro-alimentación

Un proceso se puede mover entre las distintas colas;


así se puede implementar envejecimiento
Planificador para colas de varios niveles con
retroalimentación con los siguientes parámetros:
Número de colas
Algoritmos de planificación para cada cola
Método utilizado para determinar cuando avanzar un
proceso
Método utilizado para determinar cuando retrazar un
proceso
Método utilizado para determinar a qué colas entrará
un proceso cuando requiera servicio

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.25 Silberschatz, Galvin and Gagne ©2007
Ejemplo cola varios niveles y retroalimentación

Tres colas:
Q0 – RR con quantum de 8 milisegundos
Q1 – RR con de 16 milisegundos
Q2 – FCFS
Planificación
Un nuevo trabajo entra en cola Q0 con FCFS. Cuando
llega al CPU, el proceso recibe 8 milisegundos. Si no
termina en 8 ms, el trabajo se mueve a la cola Q1.
En Q1 el trabajo se atiende con FCFS y recibe 16 ms
adicionales. Si aún no se termina, es sacado del CPU y
encolado en Q2.

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.26 Silberschatz, Galvin and Gagne ©2007
Colas con varios niveles y retroalimentación

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.27 Silberschatz, Galvin and Gagne ©2007
Planificación multi-procesador

Planificar uso de CPU más complicado


con varios CPUs
Procesadores homogéneos dentro de un
multi-procesador
Compartir la carga
Multi-procesadores asimétricos – sólo un
procesador accede las estructuras de
datos del sistema, aligerando la
necesidad de compartir datos

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.28 Silberschatz, Galvin and Gagne ©2007
Planificación de tiempo real
Sistemas de tiempo real duros –
requieren completar un tarea crítica en
un cierto tiempo garantizado
Cómputo de tiempo real suave –
requiere que procesos críticos sean
privilegiados por sobre otros menos
afortunados

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.29 Silberschatz, Galvin and Gagne ©2007
Planificación de hilos de control

Planificación local – ¿Cómo decide la biblioteca


de hilos que hilo poner en un LWP disponible?
Planificación Global – ¿Cómo decide el kernel
qué hilo de kernel ejecutar a continuación?

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.30 Silberschatz, Galvin and Gagne ©2007
API de planificación de Pthreads

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.31 Silberschatz, Galvin and Gagne ©2007
Ejemplos de sistemas operativos

Planificación en Solaris
Planificación en Windows XP
Planificación en Linux

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.32 Silberschatz, Galvin and Gagne ©2007
Planificación en Solaris

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.33 Silberschatz, Galvin and Gagne ©2007
Solaris Tabla de Despacho

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.34 Silberschatz, Galvin and Gagne ©2007
Prioridades en Windows XP

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.35 Silberschatz, Galvin and Gagne ©2007
Planificación en Linux
Dos algoritmos: tiempo compartido y tiempo real
Tiempo compartido
Priorizado basado en crédito – proceso con más
créditos se procesa a continuación
Se resta crédito cuando ocurre una interrupción por
tiempo
Cuando el crédito = 0, se escoje otro proceso
Cuando todos los procesos tienen credito = 0, se re-
asignan créditos
Basado en factores como prioridad e historia
Tiempo real
Tiempo real suave
Cumple con Posix.1b – dos clases
FCFS y RR
Proceso de más alta prioridad siempre corre
primero

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.36 Silberschatz, Galvin and Gagne ©2007
Relación entre prioridades y longitud de rebanada tiempo

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.37 Silberschatz, Galvin and Gagne ©2007
Lista de tareas indexada por prioridades

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.38 Silberschatz, Galvin and Gagne ©2007
Planificación en Java

Política de planificación definida vagamente.


Un hilo se ejecuta hasta:
1. Expira su tiempo quantum
2. Se bloquea para E/S
3. Sale de su método run()
Algunos sistemas pueden soportar preemption

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.39 Silberschatz, Galvin and Gagne ©2007
Planificación en Java

Prioridades – rango de valores 1-10

MIN_PRIORITY es 1
NORM_PRIORITY es 5
MAX_PRIORITY es 10

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.40 Silberschatz, Galvin and Gagne ©2007
Planificación en Java

Se puede cambiar prioridad utilizando setPriority()

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.41 Silberschatz, Galvin and Gagne ©2007
Planificación en Java
Relación entre prioridades de Java y Win32

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.42 Silberschatz, Galvin and Gagne ©2007
Planificación en Java (Solaris)

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.43 Silberschatz, Galvin and Gagne ©2007
Evaluación del algoritmo
Modelado determinístico – toma una
carga particular predeterminada y define
el rendimiento para cada algoritmo con
esa carga
Modelos de encolamiento
Implementación

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.44 Silberschatz, Galvin and Gagne ©2007
Evaluación del algoritmo
Evaluación de planificadores de CPU por simulación

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.45 Silberschatz, Galvin and Gagne ©2007
Evaluación del algoritmo

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.46 Silberschatz, Galvin and Gagne ©2007
Final del capítulo 5

Operating System Concepts with Java – 7th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007