Control de procesos

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

Proceso de dos estados

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

Proceso de cinco estados

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

Proceso de dos estados en suspensió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, …