Está en la página 1de 3

Melanie Arline Espinoza Salazar.

FECHA: 25/enero/2024

Concurrencia de procesos
La concurrencia de procesos en sistemas operativos se refiere a la capacidad de ejecutar
múltiples procesos de manera aparentemente simultánea en un sistema computacional.
Esta capacidad es esencial para maximizar la utilización de los recursos del sistema y
proporcionar una experiencia fluida al usuario.
Dos o más procesos decimos que son concurrentes, paralelos, o que se ejecutan
concurrentemente, cuando son procesados al mismo tiempo, es decir, que para ejecutar
uno de ellos, no hace falta que se haya ejecutado otro.
En sistemas multiprocesador, esta ejecución simultánea podría conseguirse
completamente, puesto que podremos asignarle, por ejemplo, un proceso A al
procesador A y un proceso B al procesador B y cada procesador realizaran la ejecución
de su proceso.
Y un ejemplo de un problema de concurrencia sería el siguiente: dados dos procesos A
(productor) y B (consumidor) que se ejecutan indefinidamente en el tiempo, el proceso
A debe recibir tiempo de ejecución antes que B. Tras esto, el proceso B debe recibir su
oportunidad de ejecución, dando paso de nuevo al proceso A y así sucesivamente,
siguiendo un esquema de alternancia estricta.
Cuando tenemos un solo procesador se producirá un intercalado de las instrucciones de
ambos procesos, de tal forma que tendremos la sensación de que hay un paralelismo en
el sistema.

Sincronización
La sincronización es la transmisión y recepción de señales que tiene por objeto llevar a
cabo el trabajo de un grupo de procesos cooperativos.
Es la coordinación y cooperación de un conjunto de procesos para asegurar la
comparación de recursos de cómputo.
La sincronización entre procesos también permite intercambiar señales de tiempo
(ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones
específicas de precedencia impuestas por el problema que se resuelve.
La sincronización es el proceso de coordinar el acceso concurrente a recursos
compartidos, como la memoria o los archivos, para evitar condiciones de carrera, los
deadlocks y la inconsistencia de datos y garantizar la consistencia de los datos. Sin una
sincronización adecuada entre procesos, la actualización de variables compartidas puede
inducir a errores de tiempo relacionados con la concurrencia que son con frecuencia
difíciles de depurar.
Existen mecanismos de sincronización como: mutex o mutual exclusión el cual
garantiza que solo un proceso o hilo pueda acceder a un recurso compartido en un
momento dado. Un semáforo es un contador que se utiliza para controlar el acceso a los
recursos compartidos. Puede tener un valor entero y operaciones como “esperar”
(decrementar) y "señalar" (incrementar). Los semáforos se utilizan para coordinar el
acceso a recursos críticos entre múltiples procesos o hilos. Las Variables de condición
se utilizan junto con mutexes para permitir que los procesos o hilos esperen a que se
cumpla una condición antes de continuar su ejecución. Un monitor es una estructura de
datos que encapsula un mutex y una o más variables de condición. Proporciona una
forma conveniente de gestionar la sincronización y la exclusión mutua en un entorno
concurrente.

Exclusión mutua
La exclusión mutua es la actividad que realiza el sistema operativo para evitar que dos o
más procesos ingresen al mismo tiempo a un área de datos compartidos o accedan a un
mismo recurso.
En otras palabras, es un principio que garantiza que solo un proceso pueda acceder a un
recurso compartido en un momento dado. Se logra mediante el uso de mecanismos
como semáforos, mutex y variables de condición.
En sistemas de multiprogramación con un único procesador, los procesos se intercalan
en el tiempo para dar la apariencia de ejecución simultánea.
Por ejemplo, si dos procesos hacen uso al mismo tiempo de una variable global y ambos
llevan a cabo tanto operaciones de lectura como de escritura sobre dicha variable, el
orden en que se ejecuten estas lecturas y escrituras es crítico, puesto que se verá
afectado el valor de la variable.
Implementación de Exclusión Mutua:
 Los sistemas operativos proporcionan interfaces para crear, adquirir y liberar
mutexes, semáforos y variables de condición.
 Los programadores deben utilizar estos mecanismos de manera adecuada para
garantizar la exclusión mutua y evitar problemas de sincronización en sus
programas.
 Es importante tener cuidado al diseñar y programar sistemas concurrentes para
evitar condiciones de carrera y garantizar la consistencia de los datos
compartidos.

Interbloqueo
El interbloqueo (o deadlock en inglés) es una situación en la que dos o más procesos o
hilos quedan bloqueados permanentemente porque cada uno está esperando que el otro
libere un recurso que necesita para continuar.
Se produce un interbloqueo cuando 2 procesos compiten por el acceso exclusivo a un
recurso, pero no son capaces de poder obtener acceso exclusivo a él, porque el otro
proceso lo impide.
Muchas veces, el interbloqueo no es responsabilidad de las aplicaciones, sino del
sistema de gestión de recursos, y puede causar que el sistema se vuelva inestable o se
bloquee por completo.
Un ejemplo: Los procesos A y B se pueden interbloquear, aunque están escritos
correctamente

Planificación de proceso
La planificación de procesos se refiere a cómo determina el sistema operativo al orden
en que irá cediendo el uso del procesador a los procesos que lo vayan solicitando, y a las
políticas que empleará para que el uso que den a dicho tiempo no sea excesivo respecto
al uso esperado del sistema.

Objetivos de la Planificación de Procesos:

Equidad: Todos los procesos deben tener una oportunidad justa de acceso a los
recursos del sistema.

Eficiencia: Se debe maximizar la utilización de los recursos del sistema, como la


CPU y la memoria, para mejorar el rendimiento general del sistema.

Respuesta Rápida: Se debe minimizar el tiempo de respuesta de los procesos para


proporcionar una experiencia de usuario receptiva.

Balance de Carga: Se deben distribuir equitativamente los procesos entre los


núcleos de CPU disponibles para evitar la sobrecarga de algunos núcleos y
subutilización de otros.

Podemos hablar de tres tipos principales de planificación:

 A largo plazo: Decide qué procesos se cargarán en la memoria desde el


almacenamiento secundario para su ejecución. Es responsable de la admisión de
nuevos procesos al sistema.
 A mediano plazo: Se encarga de mover procesos entre la memoria principal y el
almacenamiento secundario para optimizar el uso de la memoria y mejorar el
rendimiento del sistema.
 A corto plazo: También conocida como planificación de CPU, se encarga de
decidir qué proceso se ejecutará a continuación y se encarga de asignar la CPU a
los procesos de manera eficiente

También podría gustarte