Gestión de Procesos

Sistemas Operativos — Ingeniería de Sistemas
Ing. Carlos Eduardo Molina C.  |  www.redtauros.com

1. Concepto: Programa vs. Proceso

Para definir lo que es un proceso, hay que establecer la diferencia con el concepto de programa:

Cuando los programas hacen uso del tiempo Idle de la CPU, significa que estos se ejecutan en baja prioridad, de esta manera no impactan sobre otros programas que se ejecutan en prioridad normal.

La mayoría de los sistemas operativos actuales muestran la tarea idle (en Windows es el Proceso inactivo del sistema; en Linux suele ser Id zero), que es una tarea o proceso que abre el sistema cuando la computadora no tiene nada para hacer. Esta tarea tiene la prioridad más baja posible.

1.1 Cómo identificarlo en Windows

En Windows no verás la CPU libre como un espacio vacío, sino como un proceso real que "consume" lo que sobra.

  1. Abre el Administrador de tareas (Ctrl + Shift + Esc).
  2. Ve a la pestaña Detalles.
  3. Busca el proceso llamado Proceso inactivo del sistema (en inglés: System Idle Process).
Nota: Si ves que este proceso está en 95% o 99%, es una excelente señal. Significa que tu computadora está libre, descansando y tiene el 99% de su capacidad disponible para cuando la necesites.

1.2 Cómo identificarlo en Linux

En Linux, el estado idle se mide directamente como un porcentaje de estadísticas de la CPU. Puedes verlo desde la terminal con varios comandos:

Si dice 98.0 id, significa que el 98% de la CPU está inactiva.

Ejemplo de salida de top:

top - 16:45:38 up 3 min, 1 user, load average: 0.05, 0.09, 0.04
Tasks: 39 total, 1 running, 38 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.6 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem: 7598.6 total, 3291.8 free, 1745.2 used, 2739.9 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 5853.5 avail Mem

PID   USER   PR  NI    VIRT    RES    SHR S  %CPU %MEM  TIME+     COMMAND
553   mssql  20   0   11.7g  848408  83240 S   2.0 10.9  0:13.98   sqlservr

1.3 Explicación de las siglas en top

Prioridad del Proceso (¿Quién va primero?)

Consumo de Memoria (¿Cuánta RAM usa?)

1.4 ¿Qué significa que el IDLE esté en 98%?

Cuando el IDLE está en el 98% significa que el procesador no está haciendo nada de trabajo útil durante ese tiempo. Está libre, descansando y esperando a que abras una aplicación, muevas el ratón o el sistema operativo le asigne una tarea.

Sin embargo, a nivel técnico de hardware, un procesador nunca puede "apagarse" por completo si la computadora está encendida. Para lograr no hacer nada, la CPU hace lo siguiente de forma interna:

2. Criterios de Planificación

La planificación hace referencia a un conjunto de políticas y mecanismos incorporados al SO que gobiernan el orden en que se ejecutan los trabajos que deben ser completados por el sistema informático.

Un planificador es un módulo del SO que selecciona el siguiente trabajo a admitir en el sistema y el siguiente proceso que tomará el control sobre el procesador. El objetivo primario de la planificación es optimizar el rendimiento del sistema de acuerdo con los criterios considerados más importantes por los diseñadores del mismo.

2.1 Utilización del procesador

La utilización del procesador es la fracción de tiempo promedio durante la cual el procesador está ocupado.

Windows Cómo identificarlo

  1. Abre el Administrador de tareas (Ctrl + Shift + Esc).
  2. Ve a la pestaña Detalles.
  3. Haz clic derecho sobre los títulos de las columnas y elige Seleccionar columnas.
  4. Busca y marca la casilla Tiempo de CPU.

Linux Cómo identificarlo

ps -eo pid,comm,time,%cpu --sort=-time

2.2 Productividad (Throughput)

P = N / S

2.3 Tiempo de retorno (TR)

TR = TS + TE

2.4 Tiempo de espera (TE)

TE = TR − TS

2.5 Tiempo de respuesta

En sistemas interactivos, es el tiempo desde que se introduce el último carácter de una orden hasta que aparece el primer resultado en el terminal.

3. Tipos de Planificadores

3.1 Planificador a Largo Plazo (PLP)

Su misión consiste en controlar la admisión de procesos nuevos al sistema. Su objetivo principal es proporcionar una mezcla equilibrada de trabajos.

El PLP es como el guardia de seguridad o el recepcionista en la puerta de un banco. Controla el aforo (grado de multiprogramación) y mantiene el equilibrio entre procesos pesados y ligeros.

En resumen: El PLP selecciona qué programas del disco duro tienen permitido pasar a la memoria RAM.

3.2 Planificador a Corto Plazo (PCP)

Este planificador decide qué procesos toman el control de la CPU. Asigna el procesador entre el conjunto de procesos preparados residentes en memoria.

El PCP es el asesor que organiza la fila de espera justo frente a las ventanillas de los cajeros. Es ultrarrápido, controla el cronómetro (quantum) y aplica las reglas del juego (algoritmos).

3.3 Planificador a Medio Plazo (PMP)

Su misión es traer procesos suspendidos a la memoria principal. Controla la transición de procesos en situación de suspendidos a situación de preparados.

El PMP es el supervisor que saca temporalmente a personas de la fila porque el banco se saturó y las manda a la cafetería de al lado (swap en disco).

8. Algoritmos de Planificación

La planificación puede ser:

8.1 FCFS (First Come First Served)

Los procesos son servidos en orden a su llegada a la cola de listos. Se implementa con una cola FIFO. El proceso que llega primero se ejecuta completamente hasta que termina o se bloquea.

Problema: El efecto convoy. Si los procesos más largos llegan primero, los cortos deben esperar mucho tiempo, elevando el tiempo promedio de espera.

Ejemplo 1 — Tres trabajos con diferentes duraciones

Tabla de procesos:

Proceso Tiempo de Llegada Tiempo de CPU (Ráfaga)
Trabajo 1012
Trabajo 203
Trabajo 306

Caso 1: Orden de llegada T1 → T2 → T3

Trabajo 1 0 → 12
T2 12 → 15
T3 15 → 21
0
12
15
21
Cálculo del tiempo de respuesta (TR) por proceso:
TR(T1) = 12 − 0 = 12
TR(T2) = 15 − 0 = 15
TR(T3) = 21 − 0 = 21

Tiempo promedio de retorno:
Tpr = (12 + 15 + 21) / 3 = 48 / 3 = 16

Tiempo de espera (TE) por proceso (TE = TR − CPU):
TE(T1) = 12 − 12 = 0
TE(T2) = 15 − 3 = 12
TE(T3) = 21 − 6 = 15

Tiempo promedio de espera:
Tpe = (0 + 12 + 15) / 3 = 27 / 3 = 9

Caso 2: Orden de llegada T2 → T3 → T1

T2 0 → 3
T3 3 → 9
Trabajo 1 9 → 21
0
3
9
21
Tiempo de retorno (TR):
TR(T2) = 3 − 0 = 3
TR(T3) = 9 − 0 = 9
TR(T1) = 21 − 0 = 21

Tiempo promedio de retorno:
Tpr = (3 + 9 + 21) / 3 = 33 / 3 = 11

Tiempo de espera (TE):
TE(T2) = 3 − 3 = 0
TE(T3) = 9 − 6 = 3
TE(T1) = 21 − 12 = 9

Tiempo promedio de espera:
Tpe = (0 + 3 + 9) / 3 = 12 / 3 = 4
Conclusión: El tiempo promedio de espera varía de 9 (caso 1) a 4 (caso 2) dependiendo del orden de llegada. Este es el problema del efecto convoy.

Ejemplo 2 — Efecto Convoy (un proceso muy largo)

Tabla de procesos:

Proceso Tiempo de Llegada Tiempo de CPU (Ráfaga)
Trabajo 10100
T201
T301
T401

Caso 1 (Efecto Convoy): Orden T1 → T2 → T3 → T4

Trabajo 1 0 → 100
T2 100→101
T3 101→102
T4 102→103
0
100
101
102
103
Tiempo de retorno (TR):
TR(T1) = 100 − 0 = 100
TR(T2) = 101 − 0 = 101
TR(T3) = 102 − 0 = 102
TR(T4) = 103 − 0 = 103

Tiempo promedio de retorno:
Tpr = (100 + 101 + 102 + 103) / 4 = 406 / 4 = 101.5

Tiempo de espera (TE):
TE(T1) = 100 − 100 = 0
TE(T2) = 101 − 1 = 100
TE(T3) = 102 − 1 = 101
TE(T4) = 103 − 1 = 102

Tiempo promedio de espera:
Tpe = (0 + 100 + 101 + 102) / 4 = 303 / 4 = 75.75

Caso 2: Orden T2 → T3 → T4 → T1

T2 0→1
T3 1→2
T4 2→3
Trabajo 1 3 → 103
0
1
2
3
103
Tiempo de retorno (TR):
TR(T2) = 1 − 0 = 1
TR(T3) = 2 − 0 = 2
TR(T4) = 3 − 0 = 3
TR(T1) = 103 − 0 = 103

Tiempo promedio de retorno:
Tpr = (1 + 2 + 3 + 103) / 4 = 109 / 4 = 27.25

Tiempo de espera (TE):
TE(T2) = 1 − 1 = 0
TE(T3) = 2 − 1 = 1
TE(T4) = 3 − 1 = 2
TE(T1) = 103 − 100 = 3

Tiempo promedio de espera:
Tpe = (0 + 1 + 2 + 3) / 4 = 6 / 4 = 1.5
Conclusión: El efecto convoy dispara el tiempo promedio de espera de 1.5 a 75.75 solo por el orden de llegada. FCFS castiga severamente a los procesos cortos cuando un proceso largo llega primero.

8.2 SJF (Shortest Job First)

La CPU se asigna al proceso con menor tiempo de ráfaga restante. A igualdad de condiciones, se atiende al primero que haya hecho la petición (FIFO).

Existen dos variantes:

Datos del ejercicio

Proceso Tiempo de Llegada Duración (Ráfaga CPU)
P107
P224
P341
P454

🔹 SJF No Expulsivo

Análisis de ejecución:

  1. t = 0: Solo está P1 (7 ms). Se ejecuta P1 de 0 a 7.
  2. t = 7: Están listos P2 (4 ms), P3 (1 ms), P4 (4 ms). Se elige el más corto: P3 (1 ms). Se ejecuta de 7 a 8.
  3. t = 8: Quedan P2 (4 ms) y P4 (4 ms). Empate → FIFO → P2. Se ejecuta de 8 a 12.
  4. t = 12: Se ejecuta P4 de 12 a 16.

Diagrama de Gantt:

P1 0 → 7
P3 7 → 8
P2 8 → 12
P4 12 → 16
0
7
8
12
16
Tiempo de retorno (TR = finalización − llegada):
TR(P1) = 7 − 0 = 7
TR(P2) = 12 − 2 = 10
TR(P3) = 8 − 4 = 4
TR(P4) = 16 − 5 = 11

Tiempo promedio de retorno:
Tpr = (7 + 10 + 4 + 11) / 4 = 32 / 4 = 8

Tiempo de espera (TE = TR − CPU):
TE(P1) = 7 − 7 = 0
TE(P2) = 10 − 4 = 6
TE(P3) = 4 − 1 = 3
TE(P4) = 11 − 4 = 7

Tiempo promedio de espera:
Tpe = (0 + 6 + 3 + 7) / 4 = 16 / 4 = 4

🔹 SJF Expulsivo (SRTF - Shortest Remaining Time First)

Análisis de ejecución (paso a paso):

  1. t = 0: Solo P1 (7 ms). Se ejecuta P1. P1 restante = 7.
  2. t = 2: Llega P2 (4 ms). P1 le quedan 5 ms. Como P2 (4) < P1 (5) → se expulsa P1. Se ejecuta P2. P1 restante = 5; P2 restante = 4.
  3. t = 4: Llega P3 (1 ms). P2 le quedan 2 ms. Como P3 (1) < P2 (2) → se expulsa P2. Se ejecuta P3. P2 restante = 2; P3 restante = 1.
  4. t = 5: P3 termina (duró 1 ms). Llega P4 (4 ms). Listos: P1 (5), P2 (2), P4 (4). El más corto es P2 (2 ms). Se ejecuta P2. P1=5; P4=4.
  5. t = 7: P2 termina. Listos: P1 (5), P4 (4). El más corto es P4 (4 ms). Se ejecuta P4. P1=5.
  6. t = 11: P4 termina. Solo queda P1 (5 ms). Se ejecuta P1.
  7. t = 16: P1 termina.

Diagrama de Gantt:

P1 0 → 2
P2 2 → 4
P3 4 → 5
P2 5 → 7
P4 7 → 11
P1 11 → 16
0
2
4
5
7
11
16
Tiempo de retorno (TR = finalización − llegada):
TR(P1) = 16 − 0 = 16
TR(P2) = 7 − 2 = 5
TR(P3) = 5 − 4 = 1
TR(P4) = 11 − 5 = 6

Tiempo promedio de retorno:
Tpr = (16 + 5 + 1 + 6) / 4 = 28 / 4 = 7

Tiempo de espera (TE = TR − CPU):
TE(P1) = 16 − 7 = 9
TE(P2) = 5 − 4 = 1
TE(P3) = 1 − 1 = 0
TE(P4) = 6 − 4 = 2

Tiempo promedio de espera:
Tpe = (9 + 1 + 0 + 2) / 4 = 12 / 4 = 3

📊 Comparativa entre SJF No Expulsivo y SJF Expulsivo

Métrica SJF No Expulsivo SJF Expulsivo (SRTF)
Tiempo promedio de retorno (Tpr)87
Tiempo promedio de espera (Tpe)43
Número de cambios de contexto35
Complejidad de implementaciónBajaAlta
Conclusión: El SJF expulsivo (SRTF) reduce el tiempo promedio de espera (de 4 a 3) y el de retorno (de 8 a 7), pero a costa de más cambios de contexto, lo que genera mayor sobrecarga (overhead) en el sistema.

8.3 PRIORIDAD

A cada proceso se le asigna un valor de prioridad. La CPU se asigna al de mayor prioridad; a igualdad, FCFS.

Ejemplo No Expulsivo

ProcesoPrioridadRáfaga CPU
P1310
P211
P342
P451
P525

(Nota: menor número = mayor prioridad)

P2 0 → 1
P5 1 → 6
P1 6 → 16
P3 16 → 18
P4 18 → 19
0
1
6
16
18
19
Tiempo de espera (TE = inicio − llegada):
TE(P1) = 6 − 0 = 6
TE(P2) = 0 − 0 = 0
TE(P3) = 16 − 0 = 16
TE(P4) = 18 − 0 = 18
TE(P5) = 1 − 0 = 1

Tiempo promedio de espera:
Tpe = (6 + 0 + 16 + 18 + 1) / 5 = 41 / 5 = 8.2

Tiempo de retorno (TR = finalización − llegada):
TR(P1) = 16 − 0 = 16
TR(P2) = 1 − 0 = 1
TR(P3) = 18 − 0 = 18
TR(P4) = 19 − 0 = 19
TR(P5) = 6 − 0 = 6

Tiempo promedio de retorno:
Tpr = (16 + 1 + 18 + 19 + 6) / 5 = 60 / 5 = 12

8.4 ROUND ROBIN

La CPU se asigna en intervalos de tiempo llamados QUANTUM. Si el proceso agota su quantum, pasa al final de la lista (cola FIFO).

ProcesoRáfaga CPU
P110
P25
P38
P43

Quantum q = 4

P1 0→4
P2 4→8
P3 8→12
P4 12→15
P1 15→19
P2 19→20
P3 20→24
P1 24→26
0
4
8
12
15
19
20
24
26
Tiempo de retorno (TR = finalización − llegada, llegada = 0):
TR(P1) = 26
TR(P2) = 20
TR(P3) = 24
TR(P4) = 15

Tiempo promedio de retorno:
Tpr = (26 + 20 + 24 + 15) / 4 = 85 / 4 = 21.25

Tiempo de espera (TE = TR − CPU):
TE(P1) = 26 − 10 = 16
TE(P2) = 20 − 5 = 15
TE(P3) = 24 − 8 = 16
TE(P4) = 15 − 3 = 12

Tiempo promedio de espera:
Tpe = (16 + 15 + 16 + 12) / 4 = 59 / 4 = 14.75

9. Ejercicios Resueltos

Ejercicio 1: Cálculo de tiempos

Un proceso P1 entra al sistema. Su tiempo de retorno (R) es de 30 ms y su tiempo de ejecución real en CPU (U) es de 10 ms.

Solución

1 Tiempo de espera (E): E = R − U = 30 − 10 = 20 ms
2 Eficacia (Ef): Ef = (U / T) × 100 = (10 / 30) × 100 = 33.33%
3 Rendimiento (P): P = N / S = 1 / 30 = 0.033 procesos/ms (≈ 33.3 procesos/segundo)

Ejercicio 2: Round Robin con conmutación

Sean dos procesos P1 (20 ms) y P2 (15 ms). El planificador actúa según Round Robin con quantum de 10 ms y tiempo de conmutación de 5 ms.

P1 0→10
q 10→15
P2 15→25
q 25→30
P1 30→40
q 40→45
P2 45→50
0
10
15
25
30
40
45
50
R(P1) = 40 ms  |  R(P2) = 50 ms

10. Referencias Bibliográficas