07.05.2013 Views

Planificación Planificación

Planificación Planificación

Planificación Planificación

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

gjhgjh<br />

Capítulo 5<br />

<strong>Planificación</strong><br />

Secciones Stallings:<br />

9.1, 9.2 (hasta pág. 421), 9.3<br />

<strong>Planificación</strong><br />

• Propósito<br />

• Tipos de planificación:<br />

– Largo plazo<br />

– Medio plazo<br />

– Corto plazo<br />

– E/S<br />

• Criterios:<br />

– Orientados al usuario<br />

– Orientados al sistema<br />

• Prioridades<br />

• Políticas de planificación<br />

1


gjhgjh<br />

Propósito de la planificación<br />

Propósito de la planificación<br />

• Asignar procesos al planificador de modo<br />

que se consiga:<br />

– Mejorar tiempos de respuesta<br />

– Aumentar productividad<br />

– Optimizar eficiencia del procesador y de<br />

dispositivos de E/S.<br />

2


gjhgjh<br />

<strong>Planificación</strong><br />

a largo plazo<br />

Listo/<br />

suspendido<br />

Bloqueado/<br />

suspendido<br />

Tipos de <strong>Planificación</strong><br />

• <strong>Planificación</strong> a largo plazo<br />

– Decisión de añadir procesos al conjunto de procesos a<br />

ejecutar<br />

• <strong>Planificación</strong> a medio plazo<br />

– Decisión de añadir procesos al conjunto de procesos que<br />

se encuentran parcial o completamente en la memoria<br />

• <strong>Planificación</strong> a corto plazo<br />

– Decisión sobre qué proceso disponible será ejecutado en<br />

el procesador<br />

• <strong>Planificación</strong> de E/S<br />

– Decisión sobre qué solicitud de E/S pendiente será<br />

tratada por un dispositivo de E/S disponible<br />

(Gestión E/S – Stallings 11)<br />

Nuevo<br />

<strong>Planificación</strong><br />

a medio plazo<br />

<strong>Planificación</strong><br />

a largo plazo<br />

Listo Ejecutando Salida<br />

Bloqueado<br />

<strong>Planificación</strong><br />

a corto plazo<br />

<strong>Planificación</strong> y transiciones de estado de los procesos.<br />

<strong>Planificación</strong> a<br />

largo plazo<br />

3


gjhgjh<br />

Nuevo<br />

Ejecutando<br />

Listo<br />

Bloqueado<br />

Corto plazo<br />

Bloqueado<br />

suspendido<br />

Listo<br />

suspendido<br />

Medio plazo<br />

Largo plazo<br />

Salida<br />

Figura 9.2. Niveles de planificación.<br />

<strong>Planificación</strong> a largo plazo<br />

• Determina cuáles son los programas<br />

admitidos en el sistema<br />

– Listo: cola de planificador a corto plazo<br />

– Listo suspendido: cola de planificador a medio<br />

plazo.<br />

• Controla el grado de multiprogramación:<br />

– Cuantos más procesos se crean,<br />

menor porcentaje de tiempo en el que cada<br />

proceso se puede ejecutar.<br />

4


gjhgjh<br />

<strong>Planificación</strong> a largo plazo<br />

• ¿Cuántos procesos adicionales?<br />

– Limitar el número para dar buen servicio<br />

– Nuevo: cada vez que termina un proceso o si el<br />

porcentaje de utilización del procesador es bajo<br />

• ¿Qué procesos incluir?<br />

– Algoritmos de planificación<br />

• Simples (e.g., FIFO-FCFS)<br />

• Por rendimiento del sistema: prioridades, carga procesador,<br />

carga E/S, recurso E/S a solicitar, ...<br />

• Sistemas interactivos de tiempo compartido<br />

– Se aceptan procesos interactivos hasta saturación<br />

(ej: máx. nº de procesos, carga procesador, número de<br />

usuarios, ...) y después mensaje de intentar más tarde.<br />

<strong>Planificación</strong> a medio plazo<br />

• Forma parte de la función de intercambio<br />

– Gestión de memoria, Memoria Virtual, Estados<br />

Suspendidos.<br />

• Se basa en la necesidad de controlar el<br />

grado de multiprogramación<br />

(tema de memoria)<br />

5


gjhgjh<br />

Trabajos<br />

por lotes<br />

<strong>Planificación</strong> a corto plazo<br />

• Decide qué proceso se ejecutará a continuación<br />

– Obj.: repartir tiempo del procesador de forma que se<br />

optimice el comportamiento de 1 o más elementos del<br />

sistema.<br />

• Planificador a corto plazo = distribuidor<br />

(dispatcher)<br />

• Es el de ejecución más frecuente<br />

• Se ejecuta cuando se interrumpe la ejecución de<br />

un proceso:<br />

– Interrupciones del reloj<br />

– Interrupciones de E/S<br />

– Llamadas al sistema operativo<br />

– Señales<br />

<strong>Planificación</strong><br />

a largo plazo<br />

Usuarios<br />

interactivos<br />

Ocurre<br />

un suceso<br />

Cola de listos<br />

<strong>Planificación</strong><br />

a medio plazo<br />

Tiempo de guarda<br />

Cola de listos suspendidos<br />

Ocurre<br />

un suceso<br />

Cola de bloqueados suspendidos<br />

Cola de bloqueados<br />

<strong>Planificación</strong><br />

a corto plazo<br />

Procesador<br />

<strong>Planificación</strong><br />

a medio plazo<br />

Espera de un suceso<br />

Figura 9.3. Diagrama de colas de planificación.<br />

Terminación<br />

6


gjhgjh<br />

Criterios de la planificación<br />

Creación (1)<br />

P1<br />

P2<br />

Listo (2)<br />

interrupción<br />

Planificador<br />

Procesos<br />

Asignación<br />

En ejecución<br />

(3)<br />

Salida (5)<br />

E/S o final de espera En espera<br />

(bloqueado)<br />

(4)<br />

E/S o evento (wait)<br />

1 1 5 5<br />

T 0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t11 100<br />

1. Uso de CPU: 100 - (t2-t1)<br />

2. Rendimiento: 2/100 (pr/ut)<br />

3. Tiempo de retorno (medio): (t11 + (100- t3) )/2<br />

4. Tiempo de espera/respuesta (medio):<br />

[(t6 - t5) + (t9 - t8) + (t4 - t3) + (t7 - t6) + (t11 - t10)]/2<br />

Criterios de la p.a corto plazo<br />

• Orientados al usuario<br />

– Cuantitativos (rendimiento)<br />

– Cualitativos<br />

• Orientados al sistema<br />

– Cuantitativos (rendimiento)<br />

– Cualitativos<br />

t10<br />

7


gjhgjh<br />

Criterios de la p.a corto plazo<br />

• Orientados al usuario (cuantitativos, rendimiento):<br />

– Tiempo de retorno<br />

• Desde el lanzamiento hasta la finalización de un proceso.<br />

• Apropiado para trabajos por lotes<br />

– Tiempo de respuesta<br />

• Desde que se emite solicitud hasta que la respuesta aparece en<br />

la salida.<br />

• Apropiada para procesos interactivos<br />

– Plazos<br />

• Si hay plazos, maximizar porcentaje de plazos cumplidos.<br />

• Caminos críticos: a seguir si se quieren cumplir los requisitos.<br />

• Orientados al usuario (cualitativos):<br />

– Previsibilidad<br />

• Tiempo y coste independiente de la carga del sistema<br />

Criterios de la p. a corto plazo<br />

• Orientados al sistema (cuantitativos, rendimiento):<br />

– Productividad<br />

• Maximizar nº procesos / unidad de tiempo<br />

– Utilización del procesador<br />

• Importante en sistemas compartidos caros<br />

• Menos importante en monousuario y en tiempo real<br />

• Orientados al sistema (cualitativos):<br />

– Equidad (si no hay otras directrices)<br />

– No inanición<br />

– Prioridades: si hay, favorecer a procesos con mayor<br />

– Equilibrio de ocupación de recursos<br />

• Mantener ocupados los recursos<br />

• Favorecer procesos que no usen recursos sobrecargados<br />

• Afecta también a planificación a largo y medio plazo<br />

8


gjhgjh<br />

Uso de prioridades<br />

• Planificador selecciona, según un algoritmo<br />

de planificación, siempre proceso de mayor<br />

prioridad antes que menor prioridad<br />

• Múltiples colas de Listos:<br />

una/nivel de prioridad<br />

• Procesos de prioridad más baja podrían<br />

sufrir inanición. Solución:<br />

Entrar<br />

– Permitir que un proceso cambie su prioridad en<br />

función de su edad o su historial de ejecución.<br />

Ocurre un<br />

Suceso<br />

Colas de prioridad<br />

RQ0<br />

RQ1<br />

•<br />

•<br />

•<br />

RQn<br />

Cola de Bloqueados<br />

Expedir Terminar<br />

Expulsión<br />

Espera de Suceso<br />

9


gjhgjh<br />

Tema 5: <strong>Planificación</strong><br />

• Propósito<br />

• Tipos y alcance:<br />

– A largo plazo<br />

– A medio plazo<br />

– A corto plazo – Algoritmos de planificación<br />

• Criterios:<br />

– Orientados al usuario<br />

– Orientados al sistema<br />

• Prioridades<br />

• Políticas de planificación<br />

Políticas de planificación<br />

• Definiciones:<br />

– Función de selección:<br />

• cómo seleccionar siguiente proceso a ejecutar<br />

– Modo de selección:<br />

• momento en que se aplica la función de selección<br />

10


gjhgjh<br />

Políticas de planificación<br />

• Función de selección: cómo seleccionar<br />

siguiente proceso a ejecutar<br />

– Prioridades<br />

– Necesidades de recursos<br />

– Características de ejecución:<br />

• tiempo en el sistema, tiempo ejecutado, tiempo total<br />

estimado<br />

Modo de decisión<br />

• No preferente, no expulsivo (política<br />

apropiativa):<br />

• Proceso pasa a Ejecución => ejecuta hasta que:<br />

– Termina<br />

– Se bloquea en espera de E/S<br />

– Solicita servicio de SO<br />

• Preferente, expulsivo (política no<br />

apropiativa):<br />

• Proceso en ejecución puede ser interrumpido y pasado a Listo<br />

por el SO por:<br />

– Nuevo proceso<br />

– Proceso pasa de bloqueado a listo (interrupción)<br />

– Interrupción de reloj<br />

11


gjhgjh<br />

Modo de decisión: comparación<br />

• El modo preferente, expulsivo (apropiativa):<br />

– Mejor servicio: impiden a un proceso<br />

monopolizar el procesador.<br />

– Mayor coste: más cambios de contexto.<br />

Tipos de políticas de planif.<br />

• FCFS (First-come, First-served)<br />

• Turno rotatorio (Round-Robin)<br />

• SPN (Shortest Process Next)<br />

• SRT (Shortest Remaining Time)<br />

• HRRN (Highest Response Ratio Next)<br />

• Realimentación<br />

• Reparto equitativo<br />

• <strong>Planificación</strong> garantizada<br />

12


gjhgjh<br />

Proceso Llegada Servicio<br />

Ejemplo (políticas de planif.)<br />

Proceso Instante de llegada Tiempo de servicio<br />

FCFS (FIFO)<br />

• Cada proceso se incorpora a la cola de listos.<br />

• Cuando el proceso actual cesa su ejecución,se<br />

selecciona el proceso que lleve más t. listo.<br />

– Función de selección: máximo tiempo en la cola<br />

de listos<br />

– Modo de decisión: No preferente<br />

A<br />

B<br />

C<br />

D<br />

E<br />

0 5 10 15 20<br />

13


gjhgjh<br />

P1<br />

P2<br />

FCFS<br />

Es teóricamente justo, pero poco eficiente en<br />

tiempo de espera medio.<br />

Penaliza los procesos cortos.<br />

P3<br />

1 5 5 5<br />

T 0 80 90 100<br />

P1<br />

P2<br />

P3<br />

1 5 5 5<br />

FCFS<br />

Efecto convoy:<br />

Dominio de procesos con carga de CPU frente a<br />

los que hacen uso de E/S. Posible uso ineficiente<br />

no solo de CPU sino también de los dispositivos de<br />

E/S.<br />

P1<br />

P2<br />

P3<br />

P1<br />

P2<br />

P3<br />

1<br />

1<br />

14


gjhgjh<br />

FCFS<br />

• Por sí misma, no útil para<br />

monoprocesadores<br />

• <strong>Planificación</strong> efectiva combinada con colas<br />

de prioridades<br />

A<br />

B<br />

C<br />

D<br />

E<br />

– <strong>Planificación</strong> realimentada<br />

FCFS<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

Sin Cargar<br />

15


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

FCFS<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

FCFS<br />

Sin Cargar<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

Sin Cargar<br />

16


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

FCFS<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

FCFS<br />

Sin Cargar<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

Sin Cargar<br />

17


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

FCFS<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

FCFS<br />

Sin Cargar<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

Sin Cargar<br />

18


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

FCFS<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

FCFS<br />

Sin Cargar<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

5 10 15 20 25 30<br />

Terminado<br />

Sin Cargar<br />

19


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

FCFS<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

FCFS<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

1. Uso de CPU: 29 – 0 = 29/29<br />

2. Rendimiento: 5/29<br />

3. Tiempo de retorno (medio): (15 + 7 + 22 + 23 + 20) / 5 = 82 / 5 = 17.4<br />

4. Tiempo de espera/respuesta (medio): (8 + 1 + 5 + 5 + 9 + 3 + 12 + 2) / 5 = 9<br />

20


gjhgjh<br />

Proceso Llegada Servicio<br />

Turno rotatorio (Round Robin)<br />

Turno rotatorio (Round Robin)<br />

• Reduce penalización a procesos cortos<br />

• Apropiación dependiente de un reloj<br />

• Se determina un periodo de tiempo (cuanto,<br />

q) de uso del procesador<br />

– Función de selección: constante<br />

– Modo de decisión: preferente (cada q)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

0 5 10 15 20<br />

21


gjhgjh<br />

Round Robin<br />

• Periódicamente, se genera interrupción de<br />

reloj<br />

– Diseñado específicamente para sistemas de<br />

tiempo compartido<br />

– Se asigna un cuanto de tiempo (10-100 ms.) de<br />

igual duración a todos los procesos listos para<br />

ser ejecutados<br />

• Cuando se genera la interrupción:<br />

– El proceso en ejecución pasa a la cola de Listos<br />

T<br />

– Se selecciona el siguiente trabajo de la cola<br />

(FCFS)<br />

P1<br />

P2<br />

P3<br />

P4<br />

1<br />

Round Robin (q=3)<br />

0 1 2 3 6 9 12 15 16 19 21 23 26<br />

22


gjhgjh<br />

• Parámetro crítico de diseño: longitud del cuanto<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin<br />

– Si muy pequeño, procesos cortos pasan rápidamente,<br />

pero sobrecarga del procesador (gestión interrupciones<br />

de reloj, planificación, expedición)<br />

– Si muy grande, degenera en FCFS<br />

– Referencia: debe ser algo mayor que el tiempo necesario<br />

para una interacción normal<br />

– Efectivo en sistemas de carácter general, tiempo<br />

compartido, procesos de transacciones<br />

– Favorece procesos con carga de procesador vs. procesos<br />

con carga de E/S (éstos no aprovechan el cuanto).<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

Sin cargar<br />

23


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

Sin cargar<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

A<br />

En ejecución<br />

Listo<br />

Sin cargar<br />

24


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

A B<br />

En ejecución<br />

Listo<br />

Sin cargar<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

A B C<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

25


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

A B C B<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

A B C B A<br />

D<br />

C<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

26


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

A B C B A D<br />

D C<br />

C B<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

A B C B A D C<br />

D C B<br />

C B E<br />

A<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

27


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10<br />

A B C B A D C B<br />

D C B E<br />

C B E A<br />

A D<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10<br />

A B C B A D C B E<br />

D C B E A<br />

C B E A D<br />

A D C<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

28


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

A B C B A D C B E A D C B E D C<br />

D C B E A D C B E D C B<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

C B E A D C B E D C B<br />

A D C B E<br />

Terminado<br />

Sin Cargar<br />

Round Robin q=1<br />

Orden encolar (RR):<br />

• Vuelta de E/S<br />

• Nuevo<br />

• Acaba de ejecutarse (RR)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

A B C B A D C B E A D C B E D C B<br />

D C B E A D C B E D C B D<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

C B E A D C B E D C B<br />

A D C B E<br />

Terminado<br />

Sin Cargar<br />

Orden encolar (RR):<br />

• Vuelta de E/S<br />

• Nuevo<br />

• Acaba de ejecutarse (RR)<br />

29


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20<br />

25 30 35 40 45<br />

A B C B A D C B E A D C B E D C B<br />

D<br />

D C B E A D C B E D C B D E<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

C B E A D C B E D C B<br />

A D C B E<br />

Terminado<br />

Sin Cargar<br />

Round Robin q=1<br />

Orden encolar (RR):<br />

• Vuelta de E/S<br />

• Nuevo<br />

• Acaba de ejecutarse (RR)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20<br />

25 30 35 40 45<br />

A B C B A D C B E A D C B E D C B<br />

D E<br />

D C B E A D C B E D C B D E<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

C B E A D C B E D C B<br />

A D C B E<br />

Terminado<br />

Sin Cargar<br />

Orden encolar (RR):<br />

• Vuelta de E/S<br />

• Nuevo<br />

• Acaba de ejecutarse (RR)<br />

30


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20<br />

25 30 35 40 45<br />

A B C B A D C B E A D C B E D C B<br />

D E D<br />

D C B E A D C B E D C B D E<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

C B E A D C B E D C B<br />

A D C B E<br />

Terminado<br />

Sin Cargar<br />

Round Robin q=1<br />

Orden encolar (RR):<br />

• Vuelta de E/S<br />

• Nuevo<br />

• Acaba de ejecutarse (RR)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20<br />

25 30 35 40 45<br />

A B C B A D C B E A D C B E D C B<br />

D E D E<br />

D C B E A D C B E D C B D E<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

C B E A D C B E D C B<br />

A D C B E<br />

Terminado<br />

Sin Cargar<br />

Orden encolar (RR):<br />

• Vuelta de E/S<br />

• Nuevo<br />

• Acaba de ejecutarse (RR)<br />

31


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20<br />

25 30 35 40 45<br />

A B C B A D C B E A D C B E D C B<br />

D E D E C<br />

D C B E A D C B E D C B D E<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

C B E A D C B E D C B<br />

A D C B E<br />

Terminado<br />

Sin Cargar<br />

Round Robin q=1<br />

Orden encolar (RR):<br />

• Vuelta de E/S<br />

• Nuevo<br />

• Acaba de ejecutarse (RR)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

A B C B A D C B E A D C B E D C B D E D E C<br />

D C B E A D C B E D C B D E<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

C B E A D C B E D C B<br />

A D C B E<br />

Terminado<br />

Sin Cargar<br />

Orden encolar (RR):<br />

• Vuelta de E/S<br />

• Nuevo<br />

• Acaba de ejecutarse (RR)<br />

32


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Round Robin q=1<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

A B C B A D C B E A D C B E D C B D E D E C<br />

D C B E A D C B E D C B D E<br />

C B E A D C B E D C B<br />

1. Uso de CPU: 29 - 0 = 29/29<br />

2. Rendimiento: 5/29<br />

3. Tiempo de retorno (medio): (13 + 18 + 24 + 23 + 16) / 5 = 94 / 5 = 18.8<br />

4. Tiempo de espera/respuesta (medio): (6 + 12 + 12 + 12 + 10) / 5 = 10.4<br />

Virtual Round Robin (VRR)<br />

• Procesos con carga E/S vs. procesos con carga CPU<br />

con Round Robin:<br />

– Procesos con carga E/S tienden a rendimiento pobre<br />

=> desaprovechamiento de recursos E/S<br />

• VRR: Cola de Listos (FCFS) y una cola Auxiliar<br />

(FCFS) con mayor prioridad<br />

– Procesos que dejan de estar bloqueados por E/S<br />

se desplazan a cola Auxiliar<br />

– Procesos de cola Auxiliar se ejecutan q-e<br />

(“apuran el cuanto”)<br />

• e = tiempo de ejecución la última vez (antes de espera E/S)<br />

33


gjhgjh<br />

Proceso Llegada Servicio<br />

SPN (1º el proceso más corto)<br />

• Se selecciona el proceso con menor tiempo<br />

esperado de ejecución.<br />

• Un proceso corto salta a la cabeza de la cola,<br />

sobrepasando a trabajos largos.<br />

– Función de selección: mínimo tiempo total de servicio<br />

– Modo de decisión: No expulsivo (no preferente)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

• Estimaciones:<br />

0 5 10 15 20<br />

SPN<br />

– Trabajos por lotes o repetitivos:<br />

• estimación del programador o estadísticas<br />

en función de tiempos de ejecución pasados<br />

=> miramos suma de ráfagas en la tabla<br />

– Si procesos interactivos<br />

• en lugar de tiempo de trabajo, tiempo de cada ráfaga<br />

(se supone que siguen una distribución uniforme)<br />

=> calculamos en función de ráfagas pasadas<br />

(media o con alfa) Sn+1 = α tn + (1- α) Sn 0< α < 1<br />

• Modo de decisión: no expulsivo<br />

34


gjhgjh<br />

SPN<br />

• Normalmente se utiliza promedio exponencial:<br />

Sn+1 = α tn +(1- α) Sn 0< α < 1<br />

• S1 : valor pronosticado (no calculado). Puede<br />

eliminarse en sucesivos cálculos o sustituirse por T1<br />

• Si α tiende a 1 se reflejan rápidamente los<br />

cambios, pero si son efectos aislados desestabilizan<br />

la media más tiempo.<br />

• Conviene dar más peso a los valores más recientes<br />

SPN<br />

n<br />

n-1<br />

n-1<br />

1<br />

Σ t<br />

1 t<br />

Sn+1 =<br />

i=1 i = n 1<br />

Σ t<br />

1 t<br />

+ i = n n-1 1<br />

+ Σ ti n n n i=1 n n n-1 i=1<br />

1 n-1<br />

Sn = Σ t<br />

n-1 i=1 i<br />

1 t<br />

Sn+1 = n +<br />

n<br />

n-1<br />

n S n<br />

Mismo peso a<br />

todos los casos<br />

35


gjhgjh<br />

Proceso Llegada Servicio<br />

SPN (1º el proceso más corto)<br />

• Se selecciona el proceso con menor tiempo<br />

esperado de ejecución.<br />

• Un proceso corto salta a la cabeza de la cola,<br />

sobrepasando a trabajos largos.<br />

A<br />

B<br />

C<br />

D<br />

E<br />

– Función de selección: mínimo tiempo total de servicio<br />

– Modo de decisión: No expulsivo (no preferente)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

0 5 10 15 20<br />

SPN (Primero el proceso más corto)<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

Sin cargar<br />

(proceso por lotes)<br />

Suma = 5<br />

Suma = 6<br />

Suma = 8<br />

Suma = 6<br />

Suma = 4<br />

36


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SPN (Primero el proceso más corto)<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

Sin cargar<br />

(proceso por lotes)<br />

Suma = 5<br />

Suma = 6<br />

Suma = 8<br />

Suma = 6<br />

Suma = 4<br />

SPN (Primero el proceso más corto)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

37


gjhgjh<br />

SPN (Primero el proceso más corto)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

SPN (Primero el proceso más corto)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

E tmb. pasa a cola de listos<br />

Terminado<br />

Sin Cargar<br />

(proceso por lotes)<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

38


gjhgjh<br />

SPN (Primero el proceso más corto)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

SPN (Primero el proceso más corto)<br />

5 10 15 20<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

39


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SPN (Primero el proceso más corto)<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

SPN (Primero el proceso más corto)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

40


gjhgjh<br />

SPN (Primero el proceso más corto)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

SPN (Primero el proceso más corto)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

5 10 15 20 25 30 35 40 45<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

41


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SPN (Primero el proceso más corto)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso por lotes)<br />

Suma A = 5<br />

Suma B = 6<br />

Suma C = 8<br />

Suma D = 6<br />

Suma E = 4<br />

1. Uso de CPU: 32 - 3 => 29/32<br />

2. Rendimiento: 5/32<br />

3. Tiempo de retorno (medio): (13 + 7 + 28 + 20 + 7) / 5 = 75 / 5 = 15<br />

4. Tiempo de espera/respuesta (medio): (6 + 1 + 16 + 9 + 1) / 5 = 33 / 5 = 6.6<br />

SPN(Primero el proceso más corto)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

Varias formas para estimar tiempo inicial de proceso nuevo:<br />

- No sabemos nada sobre las ráfagas: S1 = 0 (los procesos nuevos son preferentes)<br />

- Tomando S1= T1 (problema: hay que saber el T1)<br />

- Tomando S1 = CTE (ej: media de las ráfagas de procesos interactivos anteriores<br />

en el sistema)<br />

42


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SPN(Primero el proceso más corto)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

S1 = 0<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Est. A = 3<br />

Est. B = 0<br />

Est. C = 0<br />

Est. D = 0<br />

Est. E = 0<br />

SPN(Primero el proceso más corto)<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

S1 = 0<br />

Est. A = 3<br />

Est. B = 6<br />

Est. C = 4<br />

Est. D = 0<br />

Est. E = 0<br />

43


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SPN(Primero el proceso más corto)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

S1 = 0<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Est. A = 3<br />

Est. B = 6<br />

Est. C = 4<br />

Est. D = 5<br />

Est. E = 0<br />

SPN(Primero el proceso más corto)<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

S1 = 0<br />

Est. A = 3<br />

Est. B = 6<br />

Est. C = 4<br />

Est. D = 5<br />

Est. E = 2<br />

44


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SPN(Primero el proceso más corto)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

S1 = 0<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Est. A = 3<br />

Est. B = 6<br />

Est. C = 4<br />

Est. D = 5<br />

Est. E = 2<br />

SPN(Primero el proceso más corto)<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

S1 = 0<br />

Est. A = 3<br />

Est. B = 6<br />

Est. C = 4<br />

Est. D = 5<br />

Est. E = 2<br />

45


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SPN(Primero el proceso más corto)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

S1 = 0<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Est. A = 3<br />

Est. B = 6<br />

Est. C = 4<br />

Est. D = 5<br />

Est. E = 2<br />

SPN(Primero el proceso más corto)<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo)<br />

S1 = 0<br />

Est.ini A = 0<br />

Est.ini B = 0<br />

Est.ini C = 0<br />

Est.ini D = 0<br />

Est.ini E = 0<br />

1. Uso de CPU: 29 => 29/29<br />

2. Rendimiento: 5/29<br />

3. Tiempo de retorno (medio): (22 + 7 + 24 + 24 + 12) / 5 = 89 / 5 = 17.8<br />

4. Tiempo de espera/respuesta (medio): (15+ 1 + 12 + 12 + 10) / 5 = 50 / 5 = 10.0<br />

46


gjhgjh<br />

Proceso Llegada Servicio<br />

SPN (Primero el proceso más corto)<br />

• Mejora rendimiento global:<br />

t. de retorno y t. de espera/respuesta<br />

• Posibilidad de inanición para los procesos<br />

largos<br />

• No conveniente para tiempo compartido o<br />

procesamiento de transacciones (por la<br />

ausencia de apropiación)<br />

• Se reduce la previsibilidad de los<br />

procesos largos (puede variar mucho de<br />

una vez a otra)<br />

SRT (Menor tiempo restante)<br />

• Versión preferente de SPN: elige el proceso que le<br />

queda menos tiempo esperado de ejecución<br />

• Cada vez que llega un proceso nuevo a la cola de<br />

listos se ejecuta el planificador.<br />

– Función de selección: mínimo tiempo restante<br />

de ejecución (t. total – t. consumido)<br />

– Modo de decisión: Preferente en llegada a listos<br />

A<br />

B<br />

C<br />

D<br />

E<br />

0 5 10 15 20<br />

47


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor tiempo restante)<br />

• Problema: ¿Cómo saber el tiempo esperado?<br />

• Estimar igual que en SPN<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

Sin cargar<br />

(proceso por lotes)<br />

Trestante= 3<br />

Trestante= 6<br />

Sin Cargar<br />

Sin Cargar<br />

Sin Cargar<br />

48


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Trestante= 2<br />

Trestante= 5<br />

Trestante= 8<br />

Sin Cargar<br />

Sin Cargar<br />

Trestante= 2<br />

Trestante= 4<br />

Trestante= 8<br />

Sin Cargar<br />

Sin Cargar<br />

49


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Trestante= 1<br />

Trestante= 4<br />

Trestante= 8<br />

Trestante= 6<br />

Sin Cargar<br />

5 10 15 20 25 30 35 40 45<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Terminó<br />

Trestante= 4<br />

Trestante= 8<br />

Trestante= 6<br />

Sin Cargar<br />

50


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT(Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

SRT(Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Terminó<br />

Trestante= 3<br />

Trestante= 8<br />

Trestante= 6<br />

Trestante= 4<br />

Terminó<br />

Trestante= 2<br />

Trestante= 8<br />

Trestante= 6<br />

Trestante= 4<br />

51


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT(Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Terminó<br />

Terminó<br />

Trestante= 8<br />

Trestante= 6<br />

Trestante= 4<br />

Terminó<br />

Terminó<br />

Trestante= 8<br />

Trestante= 6<br />

Trestante= 2<br />

52


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

Terminó<br />

Terminó<br />

Trestante= 8<br />

Trestante= 4<br />

Trestante= 2<br />

Terminó<br />

Terminó<br />

Trestante= 8<br />

Trestante= 4<br />

Terminó<br />

53


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Terminó<br />

Terminó<br />

Trestante= 8<br />

Trestante= 1<br />

Terminó<br />

5 10 15 20 25 30 35 40 45<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

(proceso por lotes)<br />

Terminado<br />

Sin Cargar<br />

54


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor tiempo restante)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso por lotes)<br />

1. Uso de CPU: 32 - 3 = 29/32<br />

2. Rendimiento: 5/32<br />

3. Tiempo de retorno (medio): (7 + 9 + 28 + 20 + 9) / 5 = 73 / 5 = 14.6<br />

4. Tiempo de espera (medio): (0 + 3 + 16 + 9 + 3) / 5 = 31 / 5 = 6.2<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

Procesos interactivos:<br />

S 1 debe ser estimado<br />

por ejemplo, podemos tomar como estimación para la primera<br />

ráfaga la media “histórica” de ráfagas de procesos interactivos<br />

en el sistema. Supongamos S 1 = 3<br />

55


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

S1= 3, r = 1<br />

S1= 3, r = 3<br />

Sin Cargar<br />

Sin Cargar<br />

Sin Cargar<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

S1 = 3, S2 = ?<br />

S1 = 3, r = 3<br />

Sin Cargar<br />

Sin Cargar<br />

Sin Cargar<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

56


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

S1 = 3 , S2 = ?<br />

S1 = 3, r = 2<br />

S1 = 3, r = 3<br />

Sin Cargar<br />

Sin Cargar<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

S2 = 3, r = 3<br />

S1 = 3, r = 1<br />

S1 = 3, r = 3<br />

Sin Cargar<br />

Sin Cargar<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

57


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

S2 = 3, r = 3<br />

S1 = 3, r = 0<br />

S1 = 3, r = 3<br />

S1 = 3, r = 3<br />

Sin Cargar<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3) u=7 ?<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

S2 = 3, r = 3<br />

S1 = 3, r = -2<br />

S1 = 3, r = 3<br />

S1 = 3, r = 3<br />

S1 = 3, r = 3<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

58


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

S2 = 3, r = 3<br />

Terminado<br />

S1 = 3, r = 3<br />

S1 = 3, r = 3<br />

S1 = 3, r = 3<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

S2 = 3, r = 3<br />

Terminado<br />

S1 = 3, S2 = ?<br />

S1 = 3, r = 3<br />

S1 = 3, r = 3<br />

59


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Terminado<br />

Terminado<br />

S1 = 3, S2 = ?<br />

S1 = 3, r = 3<br />

S1 = 3, r = 3<br />

Terminado<br />

Terminado<br />

S2 = 3.8, r = 3.8<br />

S1 = 3, r = 1<br />

S1 = 3, r = 3<br />

5 10 15 20 25 30 35 40 45<br />

60


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Terminado<br />

Terminado<br />

S2 = 3.8, r = 3.8<br />

S1 = 3, S2 = ?<br />

S1 = 3, r = 3<br />

5 10 15 20 25 30 35 40 45 50<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Terminado<br />

Terminado<br />

S2 = 3.8, r = 3.8<br />

S1 = 3, S2 = ?<br />

S1 = 3, S2 = ?<br />

5 10 15 20 25 30 35 40 45<br />

61


gjhgjh<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Terminado<br />

Terminado<br />

S2 = 3.8, r = 1.8<br />

S1 = 3, S2 = ?<br />

S2 = 2.2, r = 2.2<br />

5 10 15 20 25 30 35 40 45<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Terminado<br />

Terminado<br />

S2 = 3.8, r = 0.8<br />

S2 = 4.6, r = 4.6<br />

S2 = 2.2, r = 2.2<br />

5 10 15 20 25 30 35 40 45<br />

62


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

Terminado<br />

Terminado<br />

Terminado<br />

S2 = 4.6, r = 4.6<br />

S2 = 2.2, r = 2.2<br />

5 10 15 20 25 30 35 40 45<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

63


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

SRT (Menor Tiempo Restante)<br />

Proceso Llegada Ráfaga CPU E/S Ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

(proceso interactivo S1 = 3)<br />

1. Uso de CPU: 29 => 29/29<br />

2. Rendimiento: 5/29<br />

3. Tiempo de retorno (medio): (15 + 7 + 22+ 22 + 20) / 5 = 86 / 5 = 17.2<br />

4. Tiempo de espera (medio): (8 + 1 + 10 + 12 + 14) / 5 = 45 / 5 = 9.0<br />

SRT (Menor tiempo restante)<br />

• Favorece a los procesos cortos<br />

• Ventaja: no genera interrupciones<br />

adicionales (vs. Round Robin)<br />

• Desventaja: debe contabilizar los tiempos<br />

de servicio transcurridos => sobrecarga<br />

64


gjhgjh<br />

HRRN (1º el de mayor tasa de respuesta)<br />

• Elige el proceso con la tasa de respuesta<br />

(tiempo “instantáneo” de retorno<br />

normalizado) más alta.<br />

– Función de selección: máxima tasa de respuesta<br />

– Modo de decisión: NO preferente<br />

Tasa de<br />

Respuesta<br />

Proceso Llegada Servicio<br />

=<br />

Tiempo consumido<br />

esperando al<br />

procesador<br />

HRRN<br />

+<br />

Tiempo de<br />

servicio esperado<br />

Tiempo de<br />

servicio esperado<br />

• Procesos cortos => denominador pequeño<br />

=> tasa de respuesta alta<br />

• Envejecimiento sin servicio<br />

=> nominador grande<br />

=> tasa de respuesta alta<br />

=> procesos largos compiten con los cortos<br />

A<br />

B<br />

C<br />

D<br />

E<br />

t. esperando + t.esperado<br />

t. esperado<br />

0 5 10 15 20<br />

65


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

HRRN (Mayor tasa de respuesta)<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

Terminado<br />

Sin Cargar<br />

HRRN (Mayor tasa de respuesta)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

1. Uso de CPU: 29 - 0 = 29/29<br />

2. Rendimiento: 5/29<br />

3. Tiempo de retorno (medio): (11 + 7 + 24 + 23 + 16) / 5 = 81 / 5 = 16.2<br />

4. Tiempo de espera/respuesta (medio): (4 + 1 + 12 + 12 + 10) / 5 = 39 / 5 = 7.8<br />

66


gjhgjh<br />

Realimentación multinivel<br />

• No se dispone de información del tiempo de<br />

ejecución del proceso (SPN, SRT, HRRN).<br />

• Para dar preferencia a trabajos cortos, se penaliza<br />

a los que han estado ejecutándose más tiempo.<br />

– Función de selección: FIFO con reducción de prioridad<br />

tras cada ejecución (RR en la última cola)<br />

– Modo de decisión: preferente (cada q)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

0 5 10 15 20<br />

(q=1, 2 colas)<br />

Realimentación multinivel<br />

A<br />

B<br />

C<br />

D<br />

0 5 10 15 20<br />

E (q=1, 5 colas)<br />

67


gjhgjh<br />

Entrar<br />

<strong>Planificación</strong> con realimentación<br />

RQ0<br />

RQ1<br />

• • •<br />

RQn<br />

Expedir Terminar<br />

• • •<br />

Terminar<br />

Terminar<br />

Realimentación multinivel (q=1)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

En ejecución<br />

Listo<br />

En espera de E-S<br />

B<br />

A<br />

C<br />

D<br />

Terminado<br />

Sin Cargar<br />

q = 1<br />

# colas prioridad= 5<br />

68


gjhgjh<br />

Realimentación multinivel (q=1)<br />

A<br />

B<br />

C<br />

D<br />

E<br />

Proceso llegada Ráfaga CPU E/S ráfaga CPU<br />

A 0 3 2 2<br />

B 2 6 - -<br />

C 4 4 4 4<br />

D 6 5 5 1<br />

E 8 2 2 2<br />

5 10 15 20 25 30 35 40 45<br />

q = 1<br />

1. Uso de CPU: 29 => 29/29<br />

# colas prioridad= 5<br />

2. Rendimiento: 5/29<br />

3. Tiempo de retorno (medio): (22 + 22 + 24 + 23 + 12) / 5 = 103 / 5 = 20.6<br />

4. Tiempo de espera (medio): (15 + 16 + 12 + 12 + 6) / 5 = 61 / 5 = 12.2<br />

Realimentación multinivel<br />

• Procesos cortos: terminan rápido, sin descender<br />

demasiado en la jerarquía de colas.<br />

• Procesos largos: llevados gradualmente hacia abajo.<br />

Problema: pueden sufrir inanición en colas de<br />

prioridad baja si llegan muchos procesos cortos<br />

continuamente<br />

• Soluciones:<br />

– Cuanta menor es la prioridad se pueden asignar más<br />

cuantos de tiempo de ejecución<br />

– Tras cierto tiempo de espera en cola, se le cambia a una<br />

cola de prioridad mayor.<br />

69


gjhgjh<br />

Realimentación multinivel<br />

• Múltiples variantes:<br />

– Apropiación en intervalos periódicos (como<br />

Round Robin)<br />

– Otras: SRT en cada cola, etc.<br />

Combinación de políticas<br />

• Ejemplos:<br />

– FIFO con prioridades realimentadas: FIFO y<br />

cada vez que un proceso deja la CPU se<br />

decrementa su prioridad<br />

– Cualquier política + prioridades: se sigue la<br />

política concreta (q. puede ser apropiativa o no<br />

apropiativa), pero si llega proceso con mayor<br />

prioridad, entra directamente.<br />

70


gjhgjh<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

5 10 15 20 25 30 35 40 45 50<br />

5 10 15 20 25 30 35 40 45 50<br />

5 10 15 20 25 30 35 40 45 50<br />

5 10 15 20 25 30 35 40 45 50<br />

5 10 15 20 25 30 35 40 45 50<br />

5 10 15 20 25 30 35 40 45 50<br />

1. Uso de CPU: 30 – (1) = 29/30<br />

2. Rendimiento: 5/30<br />

3. Tiempo de retorno (medio): (11 + 7 + 20 + 21 + 23) / 5 = 82 / 5 = 16.4<br />

4. Tiempo de espera/respuesta (medio): (4 + 1 + 7 + 1 + 9 + 1 + 16) / 5 = 7.8<br />

1. Uso de CPU: 29 - 0 = 29/29<br />

2. Rendimiento: 5/29<br />

3. Tiempo de retorno (medio): (13 + 18 + 24 + 23 + 16) / 5 = 94 / 5 = 18.8<br />

4. Tiempo de espera/respuesta (medio): (6 + 12 + 12 + 12 + 10) / 5 = 10.4<br />

1. Uso de CPU: 30 - 1 = 29/30<br />

2. Rendimiento: 5/30<br />

3. Tiempo de retorno (medio): (13 + 7 + 24 + 24 + 7) / 5 = 75 / 5 = 15<br />

4. Tiempo de espera/respuesta (medio): (6 + 1 + 12 + 13 + 1) / 5 = 33 / 5 = 6.6<br />

1. Uso de CPU: 34 - 5 = 29/34<br />

2. Rendimiento: 5/34<br />

3. Tiempo de retorno (medio): (7 + 17 + 19 + 28 + 8) / 5 = 79 / 5 = 15.8<br />

4. Tiempo de espera/respuesta (medio): (0 + 11 + 7 + 17 + 2) / 5 = 37 / 5 = 7.4<br />

1. Uso de CPU: 29 - 0 = 29/29<br />

2. Rendimiento: 5/29<br />

3. Tiempo de retorno (medio): (11 + 7 + 24 + 23 + 16) / 5 = 81 / 5 = 16.2<br />

4. Tiempo de espera/respuesta (medio): (4 + 1 + 12 + 12 + 10) / 5 = 39 / 5 = 7.8<br />

1. Uso de CPU: 30 - 1 = 29/30<br />

2. Rendimiento: 5/30<br />

3. Tiempo de retorno (medio): (21 + 23 + 24 + 18 + 11) / 5 = 97 / 5 = 19.4<br />

4. Tiempo de espera/respuesta (medio): (14 + 17 + 12 + 13 + 6) / 5 = 62 / 5 = 12.4<br />

FCFS<br />

RR (q=1)<br />

SPN<br />

SRT<br />

HRRN<br />

FCFS<br />

RR<br />

(q=1)<br />

SPN<br />

SRT<br />

HRRN<br />

Realimenta<br />

ción<br />

(q=1)<br />

Realimentación<br />

(q=1)<br />

71


gjhgjh<br />

<strong>Planificación</strong> clásica en UNIX<br />

• Diseñada para satisfacer las necesidades de usuarios<br />

interactivos, tiempo compartido, propósito general<br />

– Usa realimentación multinivel ,<br />

turno rotatorio (q=0.1 seg.) en cada cola de prioridad<br />

– La prioridad de cada proceso se calcula:<br />

• Cada segundo con preferencia => si un proceso no se bloquea o<br />

termina en ese segundo, es expulsado<br />

• En función de tipo de proceso e historial de ejecución<br />

– Prioridad base: divide procesos en bandas fijas de<br />

prioridad<br />

– Usa factor de ajuste (nice) para impedir que proceso<br />

salga de la banda asignada.<br />

Bandas<br />

• En orden decreciente de prioridad:<br />

– Intercambio<br />

– Control de dispositivos de E/S de bloques (ej: disco)<br />

– Gestión de archivos<br />

– Control de dispositivos de E/S de caracteres<br />

(ej: terminales, impresoras)<br />

– Procesos de usuario<br />

• para<br />

– Garantizar uso eficiente de E/S<br />

– Penalizar a procesos con carga CPU<br />

72


gjhgjh<br />

Base = 60,<br />

ajuste ignorado<br />

<strong>Planificación</strong> clásica en UNIX<br />

CPU j (i)= CPU j (i-1)<br />

2<br />

P j (i) = Base j + CPU j (i)<br />

2<br />

+ nice j<br />

Figura 9.17. Ejemplo de planificación clásica en UNIX.<br />

Media ponderada del<br />

proceso j en el intervalo i<br />

Prioridad del proceso j<br />

al principio del intervalo i<br />

(Libro mal<br />

coloreado)<br />

73


gjhgjh<br />

<strong>Planificación</strong><br />

• Hilos a nivel de usuario:<br />

– El SO no conoce la existencia de hilos<br />

=> planifica a nivel de proceso<br />

– Dentro de un proceso, planificador a nivel de usuario se<br />

encarga de los hilos<br />

• Hilos a nivel de núcleo:<br />

– El SO conoce y maneja hilos<br />

=> planificación a nivel de hilos<br />

– Pero el SO puede decidir asignar tiempos en función de<br />

lo que hayan ejecutado otros hilos del mismo proceso<br />

(sabe a qué proceso pertenece cada hilo)<br />

Procesos en tiempo real<br />

• Proceso debe cumplir plazo límite<br />

• Ejemplos:<br />

– Sistemas militares de mando y control<br />

– Control del tráfico aéreo<br />

– Control de procesos en plantas industriales<br />

– …<br />

• Pueden ser periódicos o no<br />

• Planificador debe tener en cuenta plazos<br />

=> debe poder ejecutar lo que corresponda dentro<br />

del plazo límite<br />

74


gjhgjh<br />

En cada interrupción…<br />

• Tratamiento de la interrupción<br />

(ejecución de rutina de atención a la interrupción,<br />

ej: E/S, llamada al sistema)<br />

• Comprobar si algún proceso pasa de bloqueado<br />

a listo<br />

• Comprobar si hay procesos nuevos<br />

• Ejecutar la función de planificación según la<br />

política correspondiente<br />

75

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!