Gestión de Procesos
1. ¿Qué es un Proceso?
Un proceso es un programa en ejecución. Esto implica que no solo el código del programa está en la memoria, sino también otros componentes como los datos, los registros del procesador, la pila de ejecución, el contador de programa, entre otros. Un proceso tiene un ciclo de vida que va desde su creación hasta su finalización.
La gestión de procesos es un aspecto clave de un sistema operativo, encargándose de crear, programar, administrar y eliminar procesos en el sistema. Un proceso requiere recursos como CPU, memoria y dispositivos de entrada/salida.
Los sistemas operativos gestionan los procesos para asegurarse de que se ejecuten de manera eficiente y justa, y para evitar que un proceso monopolice los recursos del sistema.
2. Ciclo de Vida de los Procesos
- Nuevo (New): Estado inicial cuando se crea el proceso. Se asignan recursos iniciales y se crea la estructura de datos del proceso.
- Listo (Ready): El proceso espera ser asignado a la CPU. Tiene todos los recursos necesarios, pero espera turno.
- En ejecución (Running): El proceso está usando la CPU y ejecutando instrucciones.
- Bloqueado (Blocked): El proceso espera por algún recurso o evento, como una operación de E/S.
- Terminado (Terminated): El proceso ha finalizado su ejecución y el sistema operativo libera sus recursos.
3. Planificación de Procesos
La planificación de procesos es el mecanismo mediante el cual el sistema operativo decide qué proceso debe ejecutarse y cuándo, buscando eficiencia, equidad y respuesta rápida.
- Eficiencia: Maximizar el uso de CPU y memoria.
- Equidad: Asignar recursos de manera justa entre procesos.
- Reducción de la espera: Minimizar el tiempo en cola de los procesos.
4. Algoritmos de Planificación
- FCFS (First Come First Serve): Atiende los procesos en el orden de llegada.
- SJF (Shortest Job First): Atiende primero el proceso con menor tiempo de ejecución restante.
- Round Robin (RR): Asigna la CPU por turnos iguales a cada proceso (quantum).
- Planificación por Prioridad: Atiende primero los procesos con mayor prioridad.
- Planificación Multinivel: Usa varias colas de prioridad y políticas diferentes según el tipo de proceso.
5. Hilos de Ejecución
Un hilo es una unidad de ejecución dentro de un proceso. Los hilos comparten el mismo espacio de memoria y pueden ejecutarse en paralelo para mejorar el rendimiento.
- Hilos de usuario: Gestionados en espacio de usuario, rápidos de crear pero menos eficientes en recursos.
- Hilos de kernel: Gestionados por el sistema operativo, más lentos de crear pero con mayor acceso a recursos.
Modelos de hilos:
- Uno a uno: Un hilo de usuario por cada hilo de kernel.
- Muchos a uno: Varios hilos de usuario comparten un hilo de kernel.
- Muchos a muchos: Varios hilos de usuario se mapean a varios hilos de kernel.