Gestión de Procesos y Hilos en Sistemas Operativos: Técnicas y Estrategias

Gestión de Procesos e Hilos en Sistemas Operativos

Técnicas de Entrada/Salida (E/S)

  • Programada: La CPU verifica continuamente si el dispositivo está listo para la operación.
  • Dirigida por interrupciones: La CPU realiza otras tareas y el dispositivo E/S la interrumpe cuando está listo.
  • Acceso directo (DMA): El controlador DMA realiza la operación; la CPU solo interviene al principio y al final.

Bloque de Control de Proceso (PCB)

Estructura que almacena la información para el control y supervisión del proceso. Cada llamada al sistema tiene un número único. Cuando un programa solicita una operación, usa este número para que el SO la identifique.

Pasos de una llamada al sistema:

  1. El programa de usuario llama a una función que inicia SYSCALL.
  2. Cambia el modo de la CPU a modo kernel.
  3. Ejecuta la operación.
  4. Devuelve el modo usuario con resultados o estado de la operación.

Arquitecturas de Sistemas Operativos

  • Arquitectura monolítica: Todos los servicios se integran en un solo programa en modo privilegiado, comunicándose por llamadas internas.
  • Arquitectura microkernel: Estructura modular donde solo las funcionalidades esenciales del SO están en el núcleo. El resto se gestiona como procesos en modo usuario, comunicándose por paso de mensajes.

Pasos en la arquitectura microkernel:

  1. Solicitud de mensaje al microkernel.
  2. Microkernel dirige la solicitud al proceso servidor.
  3. El servidor procesa la solicitud y genera una respuesta.
  4. Microkernel transmite la respuesta a la aplicación.

Sistemas Operativos de Tiempo Real

Diseñados para aplicaciones donde la precisión en el tiempo de respuesta es crucial. Su función es asegurar que las tareas se ejecuten dentro de un límite de tiempo específico.

Hilos (Threads)

Unidad básica de utilización de la CPU. Permiten dividir un proceso en subprocesos que se ejecutan en paralelo o concurrentemente, compartiendo el espacio de direcciones del proceso. Cada hilo contiene un PC, registros, espacio de pila y un indicador de estado. Pueden comunicarse directamente a través de la memoria compartida.

Tipos de Hilos

  • De usuario: Gestionados por la aplicación; el núcleo solo ve el proceso total.
  • De núcleo: Gestionados por el núcleo; la unidad de planificación es el hilo individual.

Planificador

Parte del SO que asigna recursos (CPU) a los procesos.

  • A largo plazo: Decide qué procesos van a la cola de preparados.
  • A corto plazo: Selecciona el próximo proceso en recibir la CPU.
  • A medio plazo: Cambia el número de procesos en memoria principal mediante swapping.

Despachador

Cede el control de la CPU al proceso seleccionado por el planificador a corto plazo.

Políticas de Planificación

  • Tiempo de respuesta (T): Tiempo desde que el proceso entra en la cola de preparados hasta que termina.
  • Tiempo de espera (M): Tiempo que el proceso espera en la cola de preparados. M = T – tiempo de servicio (t).
  • Penalización (P): Costo del tiempo de espera. P = T / t.
  • Índice de respuesta (R): Mide la eficiencia del servicio. R = t / T.
  • Tiempo del núcleo: Tiempo que el SO invierte en planificación y cambios de contexto.
  • Tiempo de inactividad: Períodos en que la cola de ejecutables está vacía.
  • Tiempo de retorno: Tiempo para completar la ejecución de un proceso.

Tipos de Planificación

  • No apropiativa: El proceso no suelta la CPU hasta finalizar.
  • Apropiativa: El SO puede quitar la CPU a un proceso.

Algoritmos de Planificación

  • FCFS (no apropiativo): Por orden de llegada.
  • SJF (no apropiativo): El proceso más corto primero.
  • SRTF (apropiativo): El proceso con menor tiempo restante primero.
  • Por prioridades: Los procesos con mayor prioridad se ejecutan primero.
  • Round Robin (apropiativo): Cada proceso tiene un tiempo limitado (quantum).
  • Colas múltiples: La cola de preparados se divide en subcolas.
  • Colas múltiples con realimentación: Los procesos se mueven entre colas.

Estrategias de Planificación de Hilos en Multiprocesadores

  • Compartición de carga: Los procesadores comparten una cola de hilos.
  • Planificación en pandilla: Hilos relacionados se ejecutan simultáneamente.
  • Asignación de procesador dedicado: Cada hilo tiene un procesador dedicado.
  • Planificación dinámica: El número de hilos varía según la carga.

Planificación de Sistemas de Tiempo Real

  • Estática:
    • Dirigida por tabla: Plan fijo predefinido.
    • Expulsiva por prioridad: Las tareas críticas tienen prioridad.
  • Dinámica:
    • Basada en un plan: Se evalúa si una nueva tarea puede completarse a tiempo.
    • De menor esfuerzo: Se intenta cumplir con todos los plazos.

Planificación en Linux

Estructura task_struct

Linux guarda los procesos en una lista de tareas. Cada entrada es una estructura task_struct que describe el proceso (estado, prioridad, relaciones, permisos).

La variable state de task_struct puede ser: TASK_RUNNING, TASK_INTERRUPTIBLE, TASK_UNINTERRUPTIBLE, TASK_STOPPED, TASK_TRACED, EXIT_ZOMBIE.

Implementación de Hilos en Linux

En Linux, no hay diferencia formal entre procesos e hilos. Un hilo es un proceso que comparte recursos con otros. Cada hilo tiene su propia task_struct. La llamada clone() crea hilos, con banderas que indican qué recursos compartir.

Hebras Kernel

Creadas para operaciones en segundo plano. No están vinculadas a un proceso de usuario (puntero de memoria NULL). Se crean al arrancar el sistema con clone().

Terminación de Procesos

El kernel libera los recursos y notifica al padre. Ocurre con exit(), que puede ser explícita (en el código) o implícita (al finalizar main()).

Planificación de Tiempo Real

  • SCHED_FIFO
  • SCHED_RR
  • SCHED_DEADLINE

Planificación de Tiempo No Real

Prioridad 0; no se ejecutan mientras haya procesos de tiempo real.

  • SCHED_OTHER/SCHED_NORMAL: Reparto de tiempo con prioridades entre -20 y 19.
  • SCHED_BATCH: Para procesos intensivos en CPU, reduce cambios de contexto.
  • SCHED_IDLE: Mínima prioridad.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.