Planificación de Procesos, Hilos y Concurrencia en Sistemas Operativos
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,2 KB
Planificación de Procesos
Cuando hay varios procesos compitiendo por la CPU, el sistema operativo utiliza estrategias para decidir el orden de ejecución. Los algoritmos de planificación más comunes incluyen:
- FIFO (First In, First Out): El primer proceso que llega es el primero en ejecutarse.
- Round Robin (RR): Cada proceso recibe un pequeño intervalo de tiempo (quantum). Si no termina, pasa al final de la cola.
- Prioridad: Los procesos con mayor prioridad se ejecutan primero, independientemente de cuándo llegaron.
Hilos (Threads)
Un hilo es una unidad de ejecución más pequeña que un proceso. Los hilos permiten que diferentes partes de un programa se ejecuten en paralelo o alternadamente.
Características de los Hilos
- Comparten recursos: Los hilos de un mismo proceso usan el mismo espacio de memoria, lo que facilita la comunicación entre ellos.
- Menor sobrecarga: Crear y gestionar hilos consume menos recursos que los procesos.
- Ejecución concurrente: Los hilos pueden ejecutarse simultáneamente (en sistemas multicore) o alternarse en un solo núcleo.
- Sincronización: Necesitan mecanismos como semáforos o bloqueos para evitar conflictos al acceder a recursos compartidos.
Multitarea y Programación Concurrente
Estos términos definen cómo se gestionan múltiples tareas en un sistema:
- Multitarea: Un sistema operativo multitarea permite ejecutar varios procesos de forma "simultánea". En sistemas con un solo núcleo, esta "simultaneidad" es una alternancia rápida.
- Concurrente: En programación concurrente, varias tareas se ejecutan intercaladamente, pero no al mismo tiempo. Es ideal para sistemas con una sola CPU.
- Paralela: Las tareas realmente se ejecutan al mismo tiempo en diferentes núcleos de CPU. Aprovecha mejor los sistemas con múltiples procesadores.
- Distribuida: Permite dividir tareas entre varias máquinas conectadas por una red, ideal para grandes volúmenes de datos o cálculos.
Mecanismos de Sincronización en Java
Para gestionar el acceso a recursos compartidos y evitar condiciones de carrera, Java ofrece varios mecanismos:
synchronized: Bloquea el acceso a una sección crítica, permitiendo que solo un hilo a la vez la use.wait(): Pone un hilo en espera hasta que otro hilo lo despierte.notify()ynotifyAll(): Despiertan a uno o a todos los hilos en espera, respectivamente.- Semáforo: Controla cuántos hilos pueden acceder simultáneamente a un recurso.
- Mutex (
ReentrantLock): Implementa exclusión mutua con control manual (por ejemplo, permite probar si el recurso está disponible antes de intentar bloquearlo).
Tipos de Planificación de Procesos
La implementación del planificador puede variar en su comportamiento:
- Preemptiva: Si llega un proceso con mayor prioridad, interrumpe al que está ejecutándose en ese momento.
- Round Robin: Los hilos se turnan en intervalos fijos para repartir el tiempo de CPU de manera equitativa.
- Prioridades dinámicas: Ajusta las prioridades de los procesos en tiempo de ejecución para evitar la inanición (situación en la que un proceso de baja prioridad nunca se ejecuta).
Diferencias en la Planificación entre Sistemas Operativos
Los sistemas operativos implementan diferentes estrategias para la gestión de la CPU:
- Windows: Utiliza planificación preemptiva. Ajusta las prioridades dinámicamente para evitar la inanición de procesos.
- Linux: Emplea el Completely Fair Scheduler (CFS), que distribuye el tiempo de CPU de manera justa. Utiliza un enfoque basado en tiempo virtual para garantizar la equidad.