Conceptos Esenciales de Procesos 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,57 KB

Conceptos Fundamentales de Procesos y Concurrencia en Sistemas Operativos

La programación multiproceso considera la posibilidad de que múltiples procesos se ejecuten simultáneamente sobre el mismo código de programa.

Definiciones Clave

Proceso
Un programa que se encuentra en ejecución. Cada proceso tiene un identificador único y temporal asignado, conocido como PID (Process ID). Es común que un proceso genere otros procesos durante su ciclo de vida.
Llamadas al Sistema (System Calls)
Son la interfaz que el kernel proporciona para que los programas de usuario puedan acceder de forma segura a determinadas partes del sistema. Esto previene que instrucciones peligrosas sean ejecutadas directamente por programas de usuario, garantizando la estabilidad y seguridad del sistema.
Kernel
El componente central de un sistema operativo, responsable de gestionar los recursos del ordenador (CPU, memoria, dispositivos de E/S). Permite el uso de estos recursos a través de las llamadas al sistema. El kernel opera principalmente mediante interrupciones.
Interrupción
Una suspensión temporal de la ejecución de un proceso para ejecutar una rutina específica que maneje dicha interrupción. Una vez finalizada la rutina, la ejecución del proceso original se reanuda exactamente desde el punto donde fue interrumpido.

Tipos de Concurrencia y Programación

Concurrencia Real
Se produce cuando cada proceso se ejecuta sobre un procesador físico distinto. Esto solo es posible en sistemas multiprocesador y resulta en una ejecución verdaderamente paralela.
Concurrencia Virtual (Multiprogramación)
En sistemas con una única CPU, solo un proceso puede estar en ejecución en un momento dado. La CPU reparte su tiempo entre los procesos para simular una ejecución paralela. El sistema operativo (SO) se encarga de cambiar el proceso en ejecución después de un corto periodo de tiempo (time slice). Esto genera una ejecución pseudo-paralela o paralela aparente (no real).
Programación Concurrente
Se refiere a la gestión de múltiples procesos que pueden ejecutarse de forma pseudo-paralela en una única CPU (concurrencia virtual).
Programación Paralela
Si el procesador tiene varios núcleos (multitarea real), se pueden ejecutar varias instrucciones simultáneamente, lo que permite una verdadera programación paralela.
Multiprogramación
Permite que dos o más procesos residan en la memoria principal y compartan la misma CPU, ejecutándose por turnos (pseudo-paralelismo). Aunque solo un proceso puede estar activo en la CPU en un instante, la rápida alternancia crea la ilusión de simultaneidad.

Gestión de Procesos y Comunicación Inter-Procesos

El sistema operativo mantiene una tabla de procesos, donde se almacena un Bloque de Control de Proceso (PCB) para cada proceso.

Cambio de Contexto

El cambio de contexto es la operación mediante la cual el sistema operativo guarda el estado (contexto) del proceso que abandona la CPU en su PCB y carga el contexto del nuevo proceso que pasará a ocupar la CPU. Este mecanismo es fundamental para la multiprogramación.

Tuberías (Pipes)

Las tuberías, o "pipes", son un mecanismo de comunicación inter-procesos que conectan la salida estándar de un proceso con la entrada estándar de otro. Son flujos unidireccionales de bytes.

En la implementación de tuberías, se suelen usar descriptores de fichero:

  • P[1]: Lado de escritura de la tubería.
  • P[0]: Lado de lectura de la tubería.

Funciones para Operar con Tuberías

int read(int fd, void *buf, int cont);
Intenta leer cont bytes del descriptor de fichero fd (asociado a la tubería) y los guarda en el buffer buf. Retorna el número de bytes leídos.
int write(int fd, void *buf, int cont);
Intenta escribir cont bytes desde el buffer buf en el descriptor de fichero fd (asociado a la tubería). Es necesario asignar datos a buf antes de la escritura. Retorna el número de bytes escritos.

Entradas relacionadas: