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