44
Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007 Capítulo 5: Planificación CPU

PlanificaciónCPU

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

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

Final del capítulo 5