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 ficherofd
(asociado a la tubería) y los guarda en el bufferbuf
. Retorna el número de bytes leídos. int write(int fd, void *buf, int cont);
- Intenta escribir
cont
bytes desde el bufferbuf
en el descriptor de ficherofd
(asociado a la tubería). Es necesario asignar datos abuf
antes de la escritura. Retorna el número de bytes escritos.