Documente Academic
Documente Profesional
Documente Cultură
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
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
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.6 Silberschatz, Galvin and Gagne ©2007
Despachador
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
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.9 Silberschatz, Galvin and Gagne ©2007
Planificación First-Come, First-Served (FCFS)
P1 P2 P3
0 24 27 30
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
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
0 3 7 8 12 16
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.13 Silberschatz, Galvin and Gagne ©2007
Ejemplo de Preemptive SJF
0 2 4 5 7 11 16
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
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
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
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
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
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
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
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
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 5.39 Silberschatz, Galvin and Gagne ©2007
Planificación en Java
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
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