Upload
irving-mariscal
View
6
Download
0
Tags:
Embed Size (px)
Citation preview
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007
Capítulo 5: Planificación CPU
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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 uso de CPU
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Secuencia alternada de CPU y E/S
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Histograma de tiempo de exp. CPU
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificador de CPU
Selecciona entre los procesos en memoria listos para ejecutar, asigna el CPU a uno de ellos
Planificador CPU puede ocurrir cuando:1. Cambia de estado ejecutando a espera2. Cambia de estado ejecutando a listo3. Cambia de estado esperando a listo4. Termina
Planificación en 1 y 4 es no-prioritaria (nonpreemptive)
Los demás utilizan prioridades (preemptive)
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Despachador
El modulo despachador da el control de CPU al proceso seleccionado por el planificador: 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
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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)
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación First-Come, First-Served (FCFS)
0
P1 P2 P3
24 27 30
Proceso Burst time
P1 24P2 3P3 3
Suponemos que los procesos llegan en el orden: P1 , P2 , P3 La gráfica de Gantt del planificador es:
Tiempo de espera para P1 = 0; P2 = 24; P3 = 27 Tiempo promedio de espera: (0 + 24 + 27)/3 = 17
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación FCFS (Cont.)
Si los procesos llegan en el orden: P2 , P3 , P1
La gráfica de Gantt para el planificador es:
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
P1P3P2
63 300
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación Shortest-Job-First (SJF)
Asociar a cada proceso la longitud de su siguiente explosión de CPU. Planificador selecciona el de 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
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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)
Tiempo de espera promedio = (0 + 6 + 3 + 7)/4 = 4
Ejemplo de Non-Preemptive SJF
P1 P3 P2
73 160
P4
8 12
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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)
Tiempo de espera promedio = (9 + 1 + 0 +2)/4 = 3
P1 P3P2
42 110
P4
5 7
P2 P1
16
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Determinar la longitud de la sig. exp
Solamente podemos estimar la longitud Para cada proceso, utilizamos el promedio de las
explosiones anteriores, en una función de tiempo (que decae exponencialmente) Tn longitud de tiempo de la n-ésimo exp Sn es nuestra predicción de la sig. explosión Factor de peso: w, tal que 0 <= w <= 1 Sn+1 = wTn + (1 - w)sn Si w=0, entonces Sn+1 = Sn
La historia reciente no cuenta Si w=1, entonces Sn+1 = Tn
Sólo cuenta la última explosión de CPU
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Predicción de longitud de la sig. Exp de CPU
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación con prioridades
Una prioridad numérica 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 Hambruna – procesos de baja prioridad pueden nunca
ejecutarse [problema] Envejecer – conforme pasa el tiempo, incrementar la
prioridad de los procesos [solución]
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Round Robin (RR)
Cada proceso obtiene una pequeña rebanada de tiempo de CPU (time quantum), usualmente 10-100ms. Acabado el tiempo, el proceso es sacado (preempted)
y se agrega a la cola de listos. Sea n el número de procesos y q, la rebanada de tiempo.
Cada proceso obtiene 1/n del tiempo de CPU en rebanadas de, a lo más, q unidades a la vez.
Ningún proceso espera más de (n-1)q unidades. 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
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ejemplo de RR con Time Quantum = 20
Proceso Burst Time P1 53 P2 17 P3 68 P4 24 La gráfica de Gantt es:
Típicamente, tiempo de vuelta promedio mayor a SJF, pero mejor respuesta
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
0 20 37 57 77 97 117 121 134 154 162
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Tiempo de Quantum y Context Switch
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Tiempo de vuelta varía con el Quantum
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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). [hambruna] Rebanada de tiempo – cada cola obtiene una cierta
cantidad de tiempo de CPU para sus procesos.
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación con colas de varios niveles
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Colas varios niveles
Envejecimiento: proceso se mueve entre colas Planificador para colas de varios niveles, 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 retrasar un
proceso Método utilizado para determinar a qué cola entra un
proceso cuando requiera servicio
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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 RR y recibe 16 ms adicionales. Si aún no se termina, es sacado del CPU y encolado en Q2.
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Colas con varios niveles y retroalimentación
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación multi-procesador
Planificar uso de CPU más complicado con varios CPUs
Procesadores homogéneos dentro de un multi-procesador (SMP) Comparten la carga AMD (Opteron, K10), Intel (Xeon, PIII), ...
Multi-procesadores asimétricos – un procesador accede las estructuras de datos del sistema e interrupciones (ASMP) DEC (VMS), OS-360, y más viejos..
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación de tiempo real
Sistemas de tiempo real duro – requieren completar tarea crítica en un cierto tiempo garantizado
Cómputo de tiempo real suave – permite procesos críticos sean privilegiados por encima de otros menos afortunados
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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?
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
API de planificación de Pthreadsint main(int argc, char *argv[]){ int i, scope; pthread_t tid[NUM_THREADS]; /* the thread identifier */ pthread_attr_t attr; /* set of attributes for the thread */ pthread_attr_init(&attr); /* get the default attributes */ /* first inquire on the current scope */ if (pthread_attr_getscope(&attr, &scope) != 0) fprintf(stderr, "Unable to get scheduling scope\n"); else { if (scope == PTHREAD_SCOPE_PROCESS) printf("PTHREAD_SCOPE_PROCESS\n"); else if (scope == PTHREAD_SCOPE_SYSTEM) printf("PTHREAD_SCOPE_SYSTEM\n"); else fprintf(stderr,"Illegal scope value\n"); } if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM) != 0) fprintf(stderr, "Unable to set scheduling scope\n"); for (i = 0; i < NUM_THREADS; i++) pthread_create(&tid[i],&attr,runner,NULL);
for (i = 0; i < NUM_THREADS; i++) pthread_join(tid[i], NULL);}void *runner(void *param) { /* do some work */ pthread_exit(0);}
scheduling algorithm PROCESS or SYSTEM
Linux and Mac OS X 10.3.4 only PTHREAD_SCOPE_SYSTEM
Solaris supports both.
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ejemplos de sistemas operativos
Planificación en Solaris Planificación en Windows XP Planificación en Linux
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación en Solaris
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Solaris Tabla de Despacho
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Prioridades en Windows XP
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación en Linux
Dos algoritmos: tiempo compartido y tiempo real Tiempo compartido
Prioridades basado en crédito – proceso con más créditos se procesa a continuación
Resta crédito cuando ocurre una interrupción por tiempo Cuando el crédito = 0, se escoge otro proceso Cuando todos los procesos tienen crédito = 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
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Relación entre prioridades y longitud de rebanada tiempo
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
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
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación en Java
Prioridades – rango de valores 1-10 Thread.MIN_PRIORITY Thread.MAX_PRIORITY Thread.NORM_PRIORITY
MIN_PRIORITY es 1 NORM_PRIORITY es 5 MAX_PRIORITY es 10
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación en Java
Se puede cambiar prioridad utilizando setPriority()
public class HighThread implement Runnable{ public void run() { Thread.currentThread().setPriority(Thread.NORM_PRIORITY + 3); // Resto del método run . . . }}
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación en Java
Relación entre prioridades de Java y Win32
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Planificación en Java (Solaris)
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Evaluación del algoritmo
Evaluación de planificadores de CPU por simulación
5. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Evaluación del algoritmo