Contenidos
Control de procesos
El control de procesos nos permite hablar de ejecución, hebras o subprocesos, que son una secuencia de tareas encadenadas tan pequeñas que pueden ser ejecutadas por un sistema operativo
Modelo de proceso con dos estados
Un proceso puede estar en uno de estos dos estados básicos:
- Ejecución
- No Ejecución
Procesos en no ejecución
Con una sola cola de procesos en no ejecución, el planificador tendría que recorrerla para buscar un proceso que no está bloqueado. No sirve la estrategia FIFO (First-in, First-out)
Dos tipos de procesos en no ejecución:
- Listos para ejecutarse
- Bloqueados: Esperan a que termine una operación de E/S
Modelo de cinco estados
- Ejecución
- Listo
- Bloqueado
- Nuevo
- Terminado
Procesos suspendidos
El sistema operativo puede decidir “desalojar” un proceso de memoria principal y transferirlo a disco
Dos nuevos estados:
- Bloqueado / Suspendido: El proceso está en memoria secundaria esperando un suceso
- Listo / Suspendido: El proceso está en memoria secundaria disponible para su ejecución
Señales y excepciones
Las señales y las excepciones son mecanismos que utiliza un sistema operativo para notificar a un proceso la ocurrencia de un determinado evento
Las señales son utilizadas en POSIX y las excepciones son utilizadas en Windows
Señales
Una señal es la interrupción de un proceso
Recepción de la señal:
- El proceso detiene su ejecución
- Bifurca a ejecutar una rutina de tratamiento de la señal (el código debe formar parte del propio proceso)
- Una vez ejecutada la rutina de tratamiento, sigue la ejecución del proceso
Envío de la señal:
- El origen puede ser el sistema operativo o un proceso
- En POSIX, se realiza mediante el servicio kill
Excepciones
Evento que ocurre durante la ejecución de un programa y que requiere la ejecución de un fragmento de código fuera del flujo normal de ejecución
Pueden ser generadas por el hardware o el software
El manejo de excepciones necesita el soporte del lenguaje de programación. Por ejemplo, en Java:
Hilos (thread)
Un gestor de procesos moderno separa la ejecución dinámica de los aspectos estáticos del entorno computacional del proceso:
- Proceso moderno: Unidad de propiedad de los recursos
- Hilo (o proceso ligero): Unidad o motor de ejecución
Un proceso puede contener un solo hilo base o varios hilos de ejecución
Estados de un hilo
Estados:
- Ejecución
- Listo
- Bloqueado
El estado suspensión pertenece al concepto de proceso
Operaciones básicas relacionadas con el cambio de estado en hilos:
- Creación / destrucción de un hilo
- Cuando se crea un proceso, también se crea un hilo
- Un hilo de un proceso puede crear otros hilos dentro del mismo proceso
- Bloqueo / Desbloqueo
- Reserva de recursos específicos del hilo
Procesos en un entorno multihilo
Información propia de cada hilo:
- Registros del procesador: contador, pila, de estado, etc
- Estado del hilo: Ejecución, Listo o Bloqueado
Información compartida por todos los hilos de un mismo proceso:
- Espacio de direcciones: código y datos
- Variables globales
- Archivos abiertos
- Otros recursos compartidos
Beneficios de los hilos
Facilita la modularidad permitiendo encapsular cada tarea en un hilo independiente
Aumenta la velocidad de ejecución del trabajo:
- Se tarda menos tiempo en crear / terminar un nuevo hilo que un proceso
- Se tarda menos tiempo en cambiar de contexto entre dos hilos de un mismo proceso
- Puesto que los hilos de un mismo proceso comparten memoria y archivos, pueden comunicarse entre sí sin invocar al núcleo
Permite la programación concurrente
Proceso servidor
Un servidor es un proceso que está pendiente de recibir órdenes de trabajo que provienen de otros procesos (clientes)
Una vez recibida la orden, la ejecuta y responde al cliente con el resultado
La comunicación entre el proceso cliente y el servidor, se realiza mediante los puertos
Proceso demonio (daemon)
Se arrancan al iniciar el sistema. Están siempre activos y no mueren
Se ejecutan en segundo plano y no están asociados a un terminal o proceso login
Están normalmente a la espera de un evento o realizan una tarea de forma periódica
No hacen directamente el trabajo: lanzan otros procesos (o hilos) para que realicen su tarea
Ejemplos: servidor de FTP, servidor web, …