Gestión de Procesos y Hilos en Sistemas Operativos
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 7 KB
Ciclo de Vida de un Proceso
Cuando un proceso se ejecuta, pasa por diferentes estados. El estado de un proceso es la situación en la que se encuentra en relación con los cambios que influyen en él. Una función fundamental del Sistema Operativo (SO) es controlar el estado de todos los procesos existentes en el sistema.
El modelo de procesos de 5 estados divide el estado de no ejecución en otros posibles estados para una mayor flexibilidad. Estos estados son:
- Nuevo: Es el primer estado. El gestor de procesos está creando las estructuras necesarias para el proceso.
- Preparado (Listo): El proceso está esperando que se le asigne el procesador.
- Ejecución: El procesador está ejecutando las instrucciones del proceso.
- Bloqueado: El proceso no está en condiciones de ejecución. Está detenido esperando a que ocurra un evento específico que provocó este estado. Una vez que el evento ocurre, el proceso pasa al estado de Listo.
- Terminado: El proceso ha finalizado su ejecución y el gestor de recursos libera todos los recursos que tenía asignados.
Cambio de Contexto y Hilos de Ejecución
Cuando un proceso se suspende, debe reiniciarse en el mismo estado en que se encontraba cuando se detuvo. Esto implica guardar el estado actual, el contenido de los registros del procesador y reemplazarlos con los valores de la próxima tarea a ejecutar. A este procedimiento se le llama Cambio de Contexto.
Hilos de Ejecución (Threads)
Un hilo de ejecución es la unidad de procesamiento más pequeña que puede ser planificada por un SO. También se le conoce como proceso ligero. Los hilos están compuestos por:
- Una unidad de ejecución.
- Todos los recursos asignados al proceso.
Un proceso puede tener múltiples hilos. El proceso en sí está compuesto por un hilo de control.
Usos del Multihilo
- Atender varias peticiones simultáneamente.
- Manipular interrupciones: Un hilo puede permanecer inactivo y, cuando se produce una interrupción, se despierta para procesarla.
Multihilo
El multihilo ocurre cuando un proceso tiene múltiples hilos que realizan actividades distintas. Estos hilos pueden ser cooperativos o no.
Los hilos se pueden clasificar en:
- Multihilo Apropiativo: El sistema operativo puede interrumpir un hilo y ceder el control a otro.
- Multihilo Cooperativo: Los hilos ceden el control voluntariamente.
Aplicaciones del Multihilo
- Tareas interactivas y en segundo plano: Permite que un programa responda a la entrada del usuario mientras realiza operaciones en segundo plano.
- Procesamiento asíncrono: Un hilo puede guardar archivos temporales mientras otro hilo atiende la escritura de un usuario.
- Aceleración de la ejecución: Dividir tareas complejas en hilos puede mejorar el rendimiento.
- Estructuración modular de programas: Facilita la organización del código para realizar múltiples actividades de forma concurrente.
Algoritmos de Planificación de Procesos
Cuando un sistema tiene varios procesadores, puede realizar varias tareas al mismo tiempo. Esto se conoce como sistema multiprocesador. Para simular la ejecución simultánea de múltiples procesos en un solo procesador, se utilizan técnicas de alternancia entre procesos.
Objetivos de la Planificación
Los objetivos principales de los algoritmos de planificación incluyen:
- Equidad: Asegurar que todos los procesos reciban una porción justa de tiempo de CPU.
- Eficiencia: Maximizar la utilización de la CPU.
- Bajo tiempo de respuesta: Minimizar el tiempo que tarda un proceso en comenzar a ejecutarse.
- Alto rendimiento: Maximizar el número de procesos completados por unidad de tiempo.
- Minimizar el tiempo de espera: Reducir el tiempo que los procesos pasan en la cola de listos.
Es importante notar que no todos estos objetivos se pueden lograr simultáneamente.
Tipos de Planificación
- No Expropiativa: Un proceso en ejecución no es interrumpido hasta que finaliza o se bloquea voluntariamente, incluso si llega un proceso de mayor prioridad.
- Expropiativa: El proceso en ejecución puede ser interrumpido por el sistema operativo para ceder el procesador a otro proceso de mayor prioridad.
Políticas de Planificación Comunes
- RR (Round Robin): La planificación de reparto de tiempo divide el tiempo del procesador en cuotas (quantums). Ningún proceso se ejecuta si hay otros esperando. Es una planificación "justa" con buenos tiempos de respuesta, pero requiere un valor de quantum adecuado. Se usa comúnmente en sistemas multiusuario de tiempo compartido.
- Por Lotería: La selección de procesos se basa en números aleatorios, otorgando una ejecución más arbitraria.
- FCFS (First-Come, First-Served): No expropiativa. El primer proceso que llega es el primero en ser atendido. Es la más sencilla de implementar, pero los trabajos cortos pueden sufrir retrasos significativos.
- SRTN (Shortest Remaining Time Next): Planifica el proceso con el menor tiempo de ejecución restante. Es óptima en teoría, pero requiere conocer el tiempo de ejecución de antemano, lo cual no siempre es posible en la práctica. Siempre es expropiativa. Los procesos con tiempos de CPU largos pueden no ser atendidos eficientemente.
Interacción entre Procesos
Los procesos pueden ser:
- Independientes: No interactúan ni comparten información entre sí.
- Cooperantes: Comparten estado y colaboran entre ellos.
Para la cooperación entre procesos, se deben lograr mecanismos como:
- Exclusión Mutua: Asegura que solo un proceso a la vez pueda acceder a un recurso compartido.
- Sección Crítica: Una porción de código donde se accede a recursos compartidos.
Bloqueo y Espera Infinita
El bloqueo de un conjunto de procesos ocurre cuando cada proceso en el conjunto espera un evento que solo puede ser provocado por otro proceso dentro del mismo conjunto. Esto puede llevar a un bucle de espera infinito, donde los procesos esperan indefinidamente sin realizar acciones.
Técnicas para Manejar el Bloqueo
- Algoritmo de la Avestruz: Ignorar el problema, asumiendo que no ocurrirá.
- Evitar el bloqueo: Diseñar el sistema para prevenir las condiciones que conducen al bloqueo.
- Detección y Recuperación: Detectar la ocurrencia de bloqueo y aplicar mecanismos para recuperarse de él.