Está en la página 1de 25

Procesos

Tema: Planificación
Referencia: Operating System Concepts – 10th Edition / Silberschatz, Galvin and Gagne

Planificación de la CPU

 Conceptos básicos

 Criterios de programación

 Algoritmos de programación

 Programación de Hilos

 Programación de múltiples procesadores

 Programación de CPU en tiempo real

 Evaluación de algoritmos

3.2

1
Objetivos

 Describir varios algoritmos de planificación de la CPU

 Evaluar algoritmos de planificación de la CPU basados en criterios de planificación

 Explicar los problemas relacionados con la planificación multiprocesador y multinúcleo

 Describir varios algoritmos de planificación en tiempo real

 Describir los algoritmos de planificación utilizados en los sistemas operativos Windows,


Linux y Solaris

 Aplicar modelos y simulaciones para evaluar los algoritmos de planificación de la CPU

3.3

Conceptos básicos

 Máxima utilización de la CPU obtenida


con la multiprogramación
 CPU-I/O Burst Cycle - La ejecución del
proceso consiste en un ciclo de
ejecución de CPU y espera de E/S.
 Ráfaga de CPU seguida de ráfaga de
E/S
 La distribución de ráfagas de CPU es la
principal preocupación

3.4

2
Histograma de tiempos de uso de la CPU

 Gran número de ráfagas cortas

 Pequeño número de ráfagas más largas

3.5

Planificador de CPU
 El planificador de la CPU selecciona entre los procesos de la cola de listos y asigna el
núcleo de la CPU a uno de ellos.
● La cola puede ser ordenada de varias maneras
 Las decisiones de planificación de la CPU pueden tener lugar cuando se lleva a cabo un
proceso:
1. Cambio de ejecución a estado de espera
2. Cambio de ejecución a estado listo
3. Cambio de estado de esperar a listo
4. Termina
 La planificación 1 y 4 no son apropiativas
 El resto de las planificaciónes son apropiativas
● Considerar el acceso a los datos compartidos
● Considerar la anticipación mientras se está en modo kernel
● Considerar las interrupciones que ocurren durante las actividades cruciales del SO
 Un planificador no apropiativo ( cooperativo ) no puede retirar a un proceso del CPU.
El proceso coopera abandonando voluntariamente al CPU
3.6

3
Despachador
 El módulo de despachador da el control de la CPU
al proceso seleccionado por el planificador a corto
plazo; esto involucra:
● contexto de conmutación
● cambio al modo de usuario
● saltar a la ubicación correcta en el programa de
usuario para reiniciar ese programa
 Latencia de envío - tiempo que tarda el
despachador en detener un proceso e iniciar otro
en ejecución.

3.7

Criterios de planificación

 Utilización de la CPU - mantener la CPU lo más ocupada posible

 Rendimiento - # de procesos que completan su ejecución por unidad de tiempo

 Tiempo de retorno - cantidad de tiempo para ejecutar un proceso en particular.

 Tiempo de espera - cantidad de tiempo que un proceso ha estado esperando en la cola


de espera.

 Tiempo de respuesta - cantidad de tiempo que se tarda desde que se presenta una
solicitud hasta que se produce la primera respuesta, no la salida (para un entorno de
tiempo compartido).

3.8

4
Criterios de optimización de algoritmos de planificación

 Máxima utilización de la CPU

 Rendimiento máximo

 Tiempo de retorno mínimo

 Tiempo de espera mínimo

 Tiempo de respuesta mínimo

3.9

Planificación por orden de llegada (FCFS)

Proceso Tiempo de CPU


P1 24
P2 3
P3 3

 Supongamos que los procesos llegan en el orden: P1, P2, P3


El diagrama de Gantt para el horario es:

P1 P2 P3
0 24 27 30

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

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

3.10

5
Planificación FCFS (Cont.)
Supongamos que los procesos llegan en el orden:
P2, P3, P1
 El diagrama de Gantt para el programa es:

P2 P3 P1
0 3 6 30

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


 Tiempo medio de espera: (6 + 0 + 3)/3 = 3
 Mucho mejor que en el caso anterior
 Efecto convoy - un proceso corto detrás de un proceso largo
● Considere un proceso de CPU y muchos procesos de E/S

3.11

Planificación trabajo más corto (SJF)

 Asociar a cada proceso la duración de su siguiente ráfaga de CPU

● Utilice estas longitudes para programar el proceso con el menor tiempo posible

 SJF es óptimo - da un tiempo de espera promedio mínimo para un conjunto dado de


procesos

● La dificultad es saber la longitud de la siguiente solicitud de CPU

● Podría preguntarle al usuario

3.12

6
Ejemplo de SJF

Procesosrrivl Time Tiempo de CPU


P1 0.0 6
P2 2.0 8
P3 4.0 7
P4 5.0 3

 Diagrama de planificación del SJF

P4 P1 P3 P2
0 3 9 16 24

 Tiempo medio de espera = (3 + 16 + 9 + 0) / 4 = 7

3.13

Cálculo del tiempo de la siguiente ráfaga de CPU

 Sólo puede estimar la longitud que se estima debe ser similar a la anterior
● A continuación, seleccione el proceso con la próxima ráfaga de CPU más corta
prevista.

 Se puede hacer usando la longitud de ráfagas anteriores de la CPU, usando promedios


exponenciales

 Comúnmente, α se establece en ½
 Versión preventiva llamada"el tiempo más corto restante" (shortest-remaining-time-
first)

3.14

7
Predicción de la duración de la próxima ráfaga de CPU

3.15

Ejemplos de promedios exponenciales

  =0
● n+1 = n
● La historia reciente no cuenta
 α =1
● n+1 =  tn
● Sólo cuenta la última ráfaga de CPU real
 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 menores o iguales a 1, cada término sucesivo


tiene menos peso que su predecesor

3.16

8
Ejemplo de tiempo restante más corto -primero

 Ahora añadimos al análisis los conceptos de tiempos de llegada y de prediccion

Procesos Tiempo de Arribo Tiempo de CPU


P1 0 8
P2 1 4
P3 2 9
P4 3 5
 Diagrama de Gantt SJF preventive

P1 P2 P4 P1 P3
0 1 5 10 17 26

 Tiempo medio de espera = [(10-1)+(1-1)+(17-2)+5-3)]/4 = 26/4 = 6,5 mseg.

3.17

Round Robin (RR)

 Cada proceso obtiene una pequeña unidad de tiempo de CPU (time quantum q),
normalmente 10-100 milisegundos. Una vez transcurrido este tiempo, el proceso se anula
y se añade al final de la cola de espera.

 Si hay n procesos en la cola de preparación y el tiempo quantum es q, entonces cada


proceso obtiene 1/n del tiempo de CPU en trozos de un máximo de unidades de tiempo q
a la vez. Ningún proceso espera más de (n-1)q unidades de tiempo.
 El temporizador interrumpe cada cuanto para programar el siguiente proceso
 Desempeño

● q grande  FIFO

● q pequeño  q debe ser grande con respecto al interruptor de contexto, de lo


contrario la sobrecarga es demasiado alta

3.18

9
Ejemplo de RR con Quantum de tiempo = 4

Procesos Tiempo de CPU


P1 24
P2 3
P3 3

● El diagrama de Gantt lo es:


P1 P2 P3 P1 P1 P1 P1 P1
0 4 7 10 14 18 22 26 30

● Típicamente, un promedio de respuesta más alto que el SJF, pero una mejor
respuesta

● q debe ser grande comparado con el tiempo de cambio de contexto

● q normalmente de 10ms a 100ms, interruptor de contexto < 10 usec

3.19

Quantum de tiempo y Cambio de Contexto

3.20

10
El tiempo de respuesta varía con el Quantum de tiempo

80% de las ráfagas de CPU


deben ser más cortas que q

3.21

Planificación por prioridades

 Un número de prioridad (entero) está asociado a cada proceso

 La CPU se asigna al proceso con la prioridad más alta (entero más pequeño, prioridad
más alta).
● Preventivo
● No preventiva

 SJF es la planificación por prioridades donde la prioridad es la inversa de la predicción


del próximo tiempo de explosión de la CPU.

 Problema Inanición - es posible que los procesos de baja prioridad nunca se ejecuten

 Envejecimiento de la solución: a medida que avanza el tiempo, aumenta la prioridad


del proceso.

3.22

11
Ejemplo de planificación por prioridades
Proceso Tiempo de CPU Prioridad
P1 0 3
P2 1 1
P3 2 4
P4 1 5
P5 5 2

 Diagrama de Gantt de planificación de prioridades

 Tiempo medio de espera = 8,2 mseg.

3.23

Planificación de Prioridades con Round-Robin

Proceso Tiempo CPU Prioridad


P1 4 3
P2 5 2
P3 8 2
P4 7 1
P5 3 3
 Ejecute el proceso con la máxima prioridad.

 Procesos con la misma prioridad de ejecución: round-robin

 Diagrama de Gantt con 2 ms de tiempo cuántico

3.24

12
Cola de varios niveles
 Con la planificación por prioridades, tenga colas separadas para cada prioridad.
 Programe el proceso en la cola de mayor prioridad!

3.25

Cola de varios niveles

 Priorización basada en el tipo de proceso

3.26

13
Cola de retroalimentación multinivel

 Un proceso puede moverse entre las diferentes colas; el envejecimiento puede ser

implementado de esta manera

 Programador de colas de retroalimentación multinivel definido por los siguientes

parámetros:

● número de colas

● algoritmos de programación para cada cola

● método utilizado para determinar cuándo actualizar un proceso

● método utilizado para determinar cuándo degradar un proceso

● método utilizado para determinar en qué cola entrará un proceso cuando ese proceso
necesite servicio

3.27

Ejemplo de cola con retroalimentación multinivel

 Tres colas:

● Q0 - RR con un Quantum de tiempo de 8 milisegundos

● Q1 - Quantum de tiempo 16 milisegundos

● Q2 - FCFS

 Planificación
● Un nuevo trabajo entra en la cola Q0 que se sirve a FCFS

 Cuando gana CPU, el trabajo recibe 8 milisegundos.

 Si no termina en 8 milisegundos, el trabajo se mueve a la cola Q1.

● En el Q1, el trabajo se sirve de nuevo y recibe 16 milisegundos adicionales.

 Si todavía no se completa, se sustituye y se desplaza a la cola Q2.

3.28

14
Planificación de Hilos

 Distinción entre hilos de nivel de usuario y de nivel de kernel

 Cuando se admiten subprocesos, los subprocesos se programan, no se procesan

 Modelos uno a muchos y muchos a muchos , la biblioteca de subprocesos planifica los

subprocesos a nivel de usuario para que se ejecuten en LWP.


.

3.29

API de programación de hilos de rosca


#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS 5
int principal(int argc, char *argv[]) {
int i, alcance;
pthread_t tid[NUM HILOS];
pthread_attr_t attr;
/* obtener los atributos por defecto *//
pthread_attr_init(&attr);
/* primero pregunte sobre el alcance actual *//
if (pthread_attr_getscope(&attr, &scope) != 0)
fprintf(stderr, "Incapaz de obtener el alcance de la programación");
si no {
if (scope == PTHREAD_SCOPE_PROCESS)
printf("PTHREAD_SCOPE_PROCESS");
si (scope == PTHREAD_SCOPE_SYSTEM)
printf("PTHREAD_SCOPE_SYSTEM");
de lo contrario
fprintf(stderr, "Illegal scope value.\n");
}
3.30

15
API de programación de hilos de rosca
/* ajustar el algoritmo de programación a PCS o SCS *//
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
** crear los hilos *//
para (i = 0; i < NUM_THREADS; i++)
pthread_create(&tid[i],&attr,runner,NULL);
/* ahora se unen en cada hilo *//
para (i = 0; i < NUM_THREADS; i++)
pthread_join(tid[i], NULL);
}
/* Cada hilo comenzará el control en esta función *//
void *runner(void *param)
{
/* ...hacer algo de trabajo... */
pthread_exit(0);
}

3.31

Programación de múltiples procesadores

 La planificación de la CPU es más compleja cuando hay varias CPUs disponibles

 El multiprocesador puede ser cualquiera de las siguientes arquitecturas:

● CPUs multinúcleo

● Núcleos multihilo

● Sistemas NUMA

● Multiprocesamiento heterogéneo

3.32

16
Planificación de múltiples procesadores

 El multiprocesamiento simétrico (SMP) es donde cada procesador se auto programa.

 Todos los hilos pueden estar en una cola de espera común (a)

 Cada procesador puede tener su propia cola privada de hilos (b)

3.33

Procesadores multinúcleo

 Tendencia reciente a colocar múltiples núcleos de procesador en el mismo chip físico

 Más rápido y consume menos energía

 Múltiples hilos por núcleo en crecimiento

● Aprovecha la pérdida de memoria para avanzar en otro hilo mientras se produce la


recuperación de memoria.

3.34

17
Sistema Multicore Multithreaded

Cada núcleo tiene > 1 hardware de Hilo.

Si un hilo libera la memoria, cambia a otro hilo!

3.35

Sistema Multicore Multithreaded

 Chip-multithreading (CMT) asigna

a cada núcleo múltiples hilos de


hardware. (Intel se refiere a esto
como hyperthreading.)

 En un sistema de cuatro núcleos

con 2 hilos de hardware por núcleo,


el sistema operativo ve 8
procesadores lógicos.

3.36

18
Sistema Multicore Multithreaded

 Dos niveles de planificación:

 El sistema operativo es el que

decide qué subproceso de


software se ejecutará en una
CPU lógica

 Cada núcleo decide qué hilo de

hardware se ejecutará en el
núcleo físico.

3.37

Programación de múltiples procesadores - Balanceo de carga

 Si es SMP, necesita mantener todas las CPUs cargadas para mayor eficiencia

 El equilibrio de carga intenta mantener la carga de trabajo uniformemente distribuida

 Migración push: comprueba periódicamente la carga de tareas de cada procesador y, si

se encuentra, empuja las tareas de la CPU sobrecargada a otras CPUs.

 Migración de pull - los procesadores inactivos retiran la tarea en espera de un

procesador ocupado.

3.38

19
Planificación de múltiples procesadores - Afinidad de procesadores

 Cuando un hilo se ha estado ejecutando en un procesador, el contenido de la caché de ese


procesador almacena los accesos a la memoria por ese hilo.

 Nos referimos a esto como un hilo que tiene afinidad por un procesador (es decir, "afinidad del
procesador").

 El balanceo de carga puede afectar la afinidad del procesador ya que un hilo puede ser
movido de un procesador a otro para balancear cargas, pero ese hilo pierde el contenido de lo
que tenía en la caché del procesador del que fue movido.

 Afinidad suave - el sistema operativo intenta mantener un hilo funcionando en el mismo


procesador, pero sin garantías.

 Afinidad dura - permite que un proceso especifique un conjunto de procesadores en los que
puede ejecutarse.

3.39

Planificación de NUMA y CPU


Si el sistema operativo es compatible con NUMA, asignará
la memoria cercana a la CPU en la que se está ejecutando el hilo.

3.40

20
Planificación de CPU en tiempo real

 Puede presentar desafíos obvios

 Sistemas blandos en tiempo real - Las tareas críticas en tiempo real tienen la más alta
prioridad, pero no hay garantía de cuándo se programarán las tareas.

 Sistemas en tiempo real - la tarea debe ser atendida antes de la fecha límite.

3.41

Planificación de CPU en tiempo real

 Latencia de eventos - la cantidad de tiempo


que transcurre entre el momento en que ocurre
un evento y el momento en que se le da
servicio.
 Dos tipos de latencias afectan al rendimiento
1. Latencia de interrupción - tiempo desde
la llegada de la interrupción hasta el inicio
de la rutina que los servicios interrumpen.
2. Latencia de despacho - tiempo para que
el programa retire el proceso actual de la
CPU y cambie a otro.

3.42

21
Evaluación de algoritmos

 ¿Cómo seleccionar el algoritmo de planificación de la CPU para un sistema operativo?


 Determinar criterios, luego evaluar algoritmos
 Modelado determinístico
● Tipo de evaluación analítica
● Toma una carga de trabajo predeterminada en particular y define el rendimiento de
cada algoritmo para esa carga de trabajo.
 Consideremos 5 procesos que llegan en el tiempo 0:

3.43

Evaluación determinista

 Para cada algoritmo, calcule el tiempo de espera medio mínimo


 Simple y rápido, pero requiere números exactos para la entrada, se aplica sólo a esas
entradas.
● FCS es de 28ms:

● La SFJ no preventiva es de 13 ms:

● El RR es de 23 ms:

3.44

22
Modelos de cola

 Describe la llegada de los procesos y las ráfagas de CPU y E/S de forma probabilística

● Comúnmente exponencial, y descrito por la media

● Calcula el promedio de rendimiento, utilización, tiempo de espera, etc.

 Sistema informático descrito como una red de servidores, cada uno con una cola de
procesos en espera.

● Conocer las tarifas de llegada y las tarifas de servicio

● Calcula la utilización, la duración media de la cola, el tiempo medio de espera, etc.

3.45

Fórmula Little's

 n = longitud media de la cola

 W = tiempo de espera medio en la cola

 λ = tasa media de llegada a la cola

 La ley de Little's - en estado estable, los procesos que salen de la cola deben ser iguales
a los procesos que llegan, por lo tanto:
n=λxW

● Válido para cualquier algoritmo de programación y distribución de llegada

 Por ejemplo, si en promedio llegan 7 procesos por segundo, y normalmente 14 procesos


en cola, entonces el tiempo de espera promedio por proceso es de 2 segundos.

3.46

23
Simulaciones

 Modelos de colas limitados

 Simulaciones más precisas

● Modelo programado del sistema informático

● El reloj es una variable

● Recopilar estadísticas que indiquen el rendimiento del algoritmo

● Datos para la simulación de la unidad recopilados a través de

 Generador de números aleatorios según probabilidades

 Distribuciones definidas matemáticamente o empíricamente

 Las cintas de rastreo graban secuencias de eventos reales en sistemas reales.

3.47

Evaluación de programadores de CPU por simulación

3.48

24
Implementación

 Incluso las simulaciones tienen una precisión limitada

 Implementar el nuevo planificador y probar en sistemas reales

● Alto costo, alto riesgo

● Los entornos varían

 La mayoría de los planificadores flexibles pueden ser modificados por sistema.

 O APIs para modificar prioridades

 Pero una vez más, los entornos varían

3.49

Muchas Gracias!

Contacto: rcastano@gmail.com

Referencia: Operating System Concepts – 10th Edition / Silberschatz, Galvin and Gagne

25

También podría gustarte