1. Procesos:
- Cada proceso tiene su propio espacio de direcciones, datos y recursos.
- Son entidades independientes y se comunican a través de mecanismos como tuberías, enchufes y memoria compartida.
- El núcleo Unix cambia entre procesos rápidamente, dando la ilusión de la ejecución paralela.
2. Hilos:
- Los hilos son procesos livianos que comparten el mismo espacio de direcciones y recursos.
- Ofrecen una forma más eficiente de implementar la concurrencia que los procesos, ya que tienen menos gastos generales.
- Los hilos se pueden crear y administrar utilizando bibliotecas como Posix Threads (PTHreads).
Conceptos clave:
- Corte de tiempo: La CPU asigna una pequeña porción de tiempo a cada proceso o rosca, cambiando rápidamente entre ellos.
- Multiplexación: El kernel gestiona múltiples tareas al intercalar su ejecución, dando la impresión de ejecución paralela.
- Sincronización: Mecanismos como mutexes, semáforos y variables de condición se utilizan para coordinar el acceso a recursos compartidos entre tareas concurrentes.
- Comunicación entre procesos (IPC): Métodos como tuberías, enchufes y memoria compartida permiten a los procesos intercambiar datos y sincronizar sus operaciones.
Ventajas de concurrencia en Unix:
- Mejora de la capacidad de respuesta: Los usuarios pueden interactuar con el sistema mientras se ejecutan otras tareas.
- Aumento de rendimiento: Múltiples tareas se pueden ejecutar simultáneamente, mejorando el rendimiento general del sistema.
- Compartir recursos: Múltiples tareas pueden compartir los mismos recursos, reducir la sobrecarga de memoria y mejorar la eficiencia.
Ejemplos de concurrencia en Unix:
- Procesos de fondo: Tasks like printing or downloading files can run in the background while the user interacts with other applications.
- Web servers: Múltiples solicitudes de clientes se pueden manejar simultáneamente por un solo proceso de servidor web.
- Sistemas de bases de datos: Las transacciones concurrentes aseguran que la integridad de los datos se mantenga mientras múltiples usuarios acceden a la base de datos.
nota: Si bien la concurrencia en UNIX da la ilusión de la ejecución paralela, el verdadero paralelismo requiere múltiples CPU.