Un proceso es un programa en ejecución, incluyendo los valores actuales del contador de programa, los registros y las variables. Es la abstracción central del Sistemas Operativos: convierte una sola CPU en varias CPUs virtuales (pseudoparalelismo).
Conceptualmente cada proceso tiene su propia CPU virtual; en realidad la CPU conmuta entre ellos (multiprogramación). La diferencia entre programa y proceso: el programa es la receta; el proceso es la actividad de cocinar.
Un proceso se crea por:
fork en UNIX, CreateProcess en Windows).Ver Sistemas Operativos/Llamadas al sistema.
kill). ┌────────────┐
│ En ejecución│
└────────────┘
1 ↙ ↑3 ↘ 2
┌──────────┐ │ ┌──────────┐
│Bloqueado │ │ │ Listo │
└──────────┘ │ └──────────┘
4 ↘ └───────┘
→ Listo
Las transiciones 2 y 3 las decide la Sistemas Operativos/Planificación.
El SO mantiene una entrada por proceso (Process Control Block) con:
Cuando llega una interrupción, el hardware guarda el contador de programa, salta al vector de interrupciones, una rutina en ensamblador guarda los registros, se ejecuta el servicio en C y luego el planificador decide qué proceso reanudar. Guardar y restaurar este estado es el cambio de contexto.
Si un proceso pasa una fracción p de su tiempo esperando E/S, con n procesos en memoria:
Uso de CPU = 1 − pⁿ
Con 80 % de espera de E/S, se necesitan ~10 procesos para desperdiciar menos del 10 % de CPU.