¿Cómo administrar la ejecución concurrente de múltiples programas de manera eficiente y correcta?
Hoy: decidir quién ejecuta y evaluar las consecuencias.
TemaPregunta que ayuda a resolver
| Procesos | ¿Cómo representar y mantener una ejecución? |
| Sincronización | ¿Cómo cooperar sin corromper datos ni quedar interbloqueados? |
| Planificación | ¿A qué proceso listo le asignamos la CPU? |
Un editor, una compilación y una copia de archivos están en marcha.
Con una CPU:
solo una entidad ejecuta instrucciones en cada instante.
Las ejecuciones pueden avanzar de forma intercalada.
Concurrencia no implica ejecución simultánea.
En parejas · 15 minutos
En la tarea «E1 · ¿Quién puede ejecutar?»:
Editor y compilación pueden competir por la CPU.
La copia debe completar su espera antes de volver a competir.
¿Qué beneficio buscamos y qué demora aceptamos?
Listo
Listo
En ejecución
Terminado
Listo
Bloqueado
Nuevo
Listo
Listo
En ejecución
Terminado
Listo
Bloqueado
EstadoSituación
| Listo | Puede ejecutar, pero espera CPU. |
| En ejecución | Tiene la CPU asignada. |
| Bloqueado | Espera un evento o un recurso. |
Al completar una E/S, el proceso pasa de bloqueado a listo.
Eso no le garantiza ejecución inmediata.
Listo
Listo
En ejecución
Terminado
Listo
Bloqueado
Nuevo
Listo
Listo
En ejecución
Terminado
Listo
Bloqueado
| Componente | Responsabilidad |
|---|---|
| Planificador de corto plazo | Seleccionar al siguiente proceso listo. |
| Despachador | Transferirle el control del procesador. |
La política establece cómo elegir.
El mecanismo permite realizar el cambio.
Para continuar otro proceso, el SO debe:
Cambiar de proceso consume tiempo.
Una vez asignada la CPU, el proceso la conserva hasta que:
La llegada de otro proceso listo no basta para desplazarlo.
El SO puede retirar la CPU a un proceso que podría seguir ejecutando.
El proceso desalojado vuelve a listos.
Ejemplos de decisiones posibles:
Un quantum limita la duración de un turno de CPU.
| Situación | ¿Qué le ocurre al proceso? |
|---|---|
| Pide una lectura y debe esperar. | ¿Sigue listo? |
| Agota su quantum y otro listo obtiene CPU. | ¿Está bloqueado? |
| Ejecuta su última instrucción y termina. | ¿Debe volver a listos? |
Respondan con un estado y una justificación.
Dos procesos incrementan un contador compartido sin protección.
Al finalizar, el contador tiene menos incrementos de los esperados.
¿Cambiar el orden de ejecución garantiza resolver el problema?
Expliquen qué aporta la sincronización y qué decide la planificación.
Podemos decidir:
Nos queda otra pregunta:
¿Cómo evaluamos si esa decisión fue conveniente?
Dos sistemas pueden mantener la CPU ocupada todo el tiempo y producir experiencias muy diferentes.
¿Qué deberíamos medir?
Pensemos en un proceso que necesita empezar pronto y en otro que necesita terminar pronto.
| Objetivo | Pregunta para evaluar el sistema |
|---|---|
| Utilización | ¿Cuánto tiempo aprovechamos la CPU? |
| Productividad | ¿Cuántos procesos terminan por unidad de tiempo? |
| Respuesta | ¿Cuánto tarda un proceso en recibir su primera CPU? |
| Equidad | ¿Cómo se reparte el servicio entre quienes compiten? |
Un trabajo requiere mucha CPU y varios trabajos breves están esperando.
¿Mejorar el promedio significa mejorar para todos?
Los resultados valen bajo estos supuestos.
Retorno = instante de fin − instante de llegada
Mide cuánto tiempo transcurre desde que el proceso llega hasta que termina.
Incluye el tiempo que ejecuta y el tiempo que espera.
Pregunta: «¿Cuándo estará completo mi trabajo?»
Respuesta = primer inicio de CPU − llegada
Mide cuánto debe esperar el proceso antes de ejecutar por primera vez.
Un proceso puede recibir CPU pronto y terminar mucho después.
Pregunta: «¿Cuándo me atienden por primera vez?»
Es el tiempo total que el proceso permanece listo sin ejecutar.
En nuestro modelo, sin E/S:
Espera = retorno − tiempo total de CPU
La espera puede acumularse en varios intervalos.
Estar bloqueado no es esperar en la cola de listos.
Un proceso llega en t=2, empieza en t=4, ejecuta 6 u.t. sin interrupciones y termina en t=10.
| Métrica | Cálculo |
|---|---|
| Retorno | 10 − 2 = 8 u.t. |
| Respuesta | 4 − 2 = 2 u.t. |
| Espera | 8 − 6 = 2 u.t. |
First Come, First Served
En nuestro ejercicio, cada proceso ejecuta su única ráfaga hasta terminar.
| Proceso | Llegada | Ráfaga de CPU |
|---|---|---|
| A | 0 | 8 |
| B | 1 | 4 |
| C | 2 | 2 |
| D | 3 | 1 |
FCFS no apropiativo, sin E/S y sin coste de cambio.
En t=0, ¿quién puede ejecutar?
En equipos de tres · 15 minutos
En la tarea «E2 · FCFS y métricas»:
Entreguen la tabla y una foto o imagen legible del Gantt.
0 8 12 14 15
| A | B | C |D|
A: [0,8) · B: [8,12) · C: [12,14) · D: [14,15)
Cuando B llega en t=1, A continúa ejecutando.
FCFS no apropiativo no desaloja a A por la llegada de B.
| Proceso | Retorno | Espera | Respuesta |
|---|---|---|---|
| A | 8 | 0 | 0 |
| B | 11 | 7 | 7 |
| C | 12 | 10 | 10 |
| D | 12 | 11 | 11 |
| Promedio | 10,75 | 7 | 7 |
Todos los valores se expresan en u.t.
Observamos el intervalo [0,15).
CPU útil = tiempo ejecutando procesos / tiempo observado
15 / 15 = 100 %
Productividad = procesos terminados / tiempo observado
4 / 15 ≈ 0,267 procesos/u.t.
La utilización fue 100 %.
Sin embargo, D esperó 11 u.t. para ejecutar 1 u.t.
Los trabajos breves quedaron detrás de uno largo: efecto convoy.
Para evaluar una política necesitamos mirar también las demoras individuales.
«Clase 1 · Conceptos y métricas»
Individual · 10 minutos · 6 preguntas
Pueden consultar sus apuntes y su resolución de E2.
Envíen el intento antes de revisar la retroalimentación.
Para administrar ejecuciones concurrentes necesitamos:
Próxima clase: misma carga, otras políticas. ¿Quién mejora y quién espera más?