Está en la página 1de 24

SINCRONIZACIÓN ENTRE

{ PROCESOS.
GUÍA
1.) Comunicación entre Procesos.

2.) Mecanismos de
Sincronización:
*Síncrona y Asíncrona.
*Sección Crítica.
*Semáforos.
*Monitores.

3.) Regiones Críticas.

4.) Problemas Clásicos de la


Comunicación entre Procesos.
INTRODUCCIÓN

En esta Exposición vamos a tratar de


ciertos temas que vieron a
continuación, para así esclarecer sus
dudas, y poder argumentar de cada
uno de ellos, esperando de que este
Trabajo sea de su Agrado y que les
haya llenado de buenas
expectativas.
PROCESO

SINCRÓNI
ZACIÓN

- PROCESO: Formalmente un proceso es “Una unidad de


actividad que se caracteriza por la ejecución de una
secuencia de instrucciones, un estado actual, y un conjunto
de recursos del sistema asociados”.
- SINCRONIZACIÓN: es el funcionamiento coordinado en la
resolución de una tarea encomendada con el fin de obtener
un orden de ejecución correcto y evitar así estados
inesperados.
SINCRONIZACIÓN
ENTRE
PROCESOS.
Conjunto de Protocolos y mecanismos, utilizados para preservar la integridad y
consistencia del sistema del sistema cuando varios procesos concurrentes
comparten recursos que son reutilizables en series.
La Sincronización entre Procesos puede definirse como la necesidad que
tienen algunos procesos de bloquearse en determinadas circunstancias y ser
despertados cuando ocurren ciertos eventos.

Un caso típico en el cual se requiere sincronización ocurre cuando un proceso


inicia una lectura y va a utilizar en la siguiente instrucción la información leída.
En este caso se debe esperar a que la operación de E/S termine para poder
continuar la ejecución .
COMUNICACIÓN
ENTRE
PROCESOS.
La Comunicación entre Procesos es necesaria si se desea que
varios procesos puedan colaborar para realizar una misma tarea.
Es una función básica de los sistemas operativos.
Los procesos pueden comunicarse entre sí a través de compartir
espacios de memoria, ya sean variables compartidas o buffers, o
a través de las herramientas provistas por las rutinas de IPC. La
IPC provee un mecanismo que permite a los procesos
comunicarse y sincronizarse entre sí, normalmente a través de
un sistema de bajo nivel de paso de mensajes que ofrece
la red subyacente.
La comunicación se establece siguiendo una serie de reglas
(protocolos de comunicación). Los protocolos desarrollados
para internet son los mayormente usados: IP (capa de
red), protocolo de control de transmisión (capa de transporte)
y protocolo de transferencia de archivos, protocolo de
transferencia de hipertexto (capa de aplicación).
El SO ofrece mecanismos básicos de comunicación, que permiten
transferir cadenas de bytes. Deben ser los procesos que se comunican
quienes interpreten el significado de las cadenas transferidas para su
labor coordinada.
El sistema operativo provee mínimamente dos primitivas, enviar y
recibir, normalmente llamadas send y receive. Asimismo, debe
implementarse un enlace de comunicación entre los procesos de la
comunicación. Este enlace puede ser unidireccional o multidireccional
según permita la comunicación en solo uno o en varios sentidos.

Los procesos deben nombrarse uno a otro explícitamente:

*send (P, mensaje) – envía mensaje al proceso P.


*receive (Q, mensaje) – recibe un mensaje del proceso Q.
MECANISMOS
DE SINCRONIZACIÓN.

Los mecanismos de comunicación y sincronización son dinámicos.


Es decir, cuando se necesita un mecanismo de este estilo, se crea,
usa y destruye, de forma que no se establezca de forma definitiva
ningún mecanismo de comunicación, ya que ellos podrían producir
efectos indeseados. Es decir, la comunicación es algo puntual.

Los servicios básicos de comunicación son:

Crear: el proceso solicita la creación del mecanismo


Enviar o Escribir: el proceso emisor envía información al proceso
receptor
Recibir o Leer: el proceso receptor recibe información
Destruir: el proceso solicita la destrucción del mecanismo de
comunicación.
Entre esos mecanismos
podemos mencionar:
*Sección Crítica

*Exclusión Mútua

*Síncrona

*Asíncrona

*Semáforos

*Monitores.
SECCIÓN CRÍTICA

En programación concurrente, se define como a la porción


de código de un programa de computador el cual accede a
un recurso compartido (estructura de datos o dispositivo)
que no debe de ser accedido por más de un hilo en
ejecución (thread). La sección crítica por lo general termina
en un tiempo determinado y el hilo, proceso o tarea solo
tendrá que esperar un período determinado de tiempo para
entrar. Se necesita de un mecanismo de sincronización en
la entrada y salida de la sección crítica para asegurar la
utilización exclusiva del recurso, por ejemplo un semáforo.
EXCLUSIÓN MÚTUA

Se usan en programación concurrente para evitar que


entre más de un proceso a la vez en la sección crítica.
La mayor parte de estos recursos son las señales,
contadores, colas y otros datos que se emplean en la
comunicación entre el código que se ejecuta cuando se
da servicio a una interrupción y el código que se ejecuta
el resto del tiempo. Se trata de un problema de vital
importancia porque, si no se toman las precauciones
debidas, una interrupción puede ocurrir entre dos
instrucciones cualesquiera del código normal y esto
puede provocar graves fallos.
SÍNCRONA

Es el intercambio de información por Internet en tiempo real. Es un


concepto que se enmarca dentro de la comunicación mediada por
computadora, que es aquel tipo de comunicación que se da entre
personas y que está mediatizada por ordenadores.
La comunicación sincrónica es aquella “en la que los usuarios, a
través de una red telemática, coinciden en el tiempo y se
comunican entre sí mediante texto, audio y/o vídeo”. Por ejemplo,
en una vídeo conferencia, los interlocutores implicados conversan al
mismo tiempo, siendo necesario que, tanto emisor, como receptor se
encuentren conectados al mismo tiempo.
ASÍNCRONA

Es aquella comunicación que se establece entre personas


de manera diferida en el tiempo, es decir, cuando no existe
coincidencia temporal. Un ejemplo de comunicación
asincrónica es la casa de papel; actualmente este tipo de
comunicación se desarrolla a través de ordenadores o
computadores.
En la asincrónica, continúa el autor, “los participantes utilizan
el sistema de comunicación en tiempos diferentes”. Sería el
caso del correo electrónico, por ejemplo, pues el receptor
puede leer el mensaje en cualquier momento después de
que el receptor lo envíe, sin que se produzca esa
simultaneidad en la comunicación.
El emisor hace el envío y prosigue su
ejecución. El SO ofrece
un almacenamiento intermedio para
guardar la información enviada, hasta
que el receptor la solicite.

Los dos procesos han de ejecutar


servicios de forma simultánea. El
emisor ha de ejecutar el servicio
enviar mientras el receptor
ejecuta recibir.
SEMÁFOROS

Una abstracción más general es el semáforo, que permite, sobre la


base de las primitivas de dormir y despertar, almacenar los eventos
ya producidos y despertar un único proceso bloqueado cuando se
produce un evento pendiente. Un semáforo lleva asociada una cola
de procesos bloqueados en él y una cuenta de señales de despertar
recibidas, lo que permite su utilización general para gestionar
recursos, como vamos a ver.
Se definen dos operaciones atómicas sobre un semáforo:
s: bajar (s) — también: p(s), down(s), wait(s), ...
subir (s) — también: v(s), up(s), signal(s), ...
Cuando un proceso ejecuta bajar(s), si la cuenta asociada a s es
mayor que cero el proceso continúa y la cuenta se decrementa; en
caso contrario, el proceso se bloquea. Cuando un proceso ejecuta
subir(s), se incrementa la cuenta; si hay procesos bloqueados
despierta a uno.
MONITORES

Los monitores son estructuras de un lenguaje de programación que


ofrecen una funcionalidad equivalente a la de los semáforos y que
son más fáciles de controlar.
Los monitores fueron propuestos por Brich Hansen y mejorados por
Hoare para poder utilizar procesos automáticos de sincronización. Un
módulo monitor encapsula la mutua exclusión de datos y
procedimientos que pueden acceder a los datos protegidos. Los
usuarios pueden hacer llamadas a estos procedimientos usando al
monitor como una tabla de estado para determinar cuando proceder y
cuando suspender operaciones.
REGIÓN CRÍTICA

Región crítica de un proceso es la fase o etapa en la vida de


ese proceso concurrente en la cual accede a un recurso crítico
para modificarlo o alterarlo.
El uso adecuado de la concurrencia entre procesos exige la
capacidad de definir secciones críticas y hacer cumplir la
exclusión mutua. Cualquier servicio o capacidad que dé soporte
para la exclusión mutua debe cumplir con un protocolo de
sincronización, que tiene los requisitos siguientes:
Debe cumplirse la exclusión mutua: sólo un proceso de entre
todos los que poseen secciones críticas por el mismo recurso u
objeto compartido, debe tener permiso para entrar en ella en un
instante dado.
PROBLEMAS CLÁSICAS
DE LA COMUNICACIÓN ENTRE

PROCESOS
EL PROBLEMA DE LA SECCIÓN CRÍTICA:
Este es uno de los problemas que con mayor frecuencia aparece
cuando se ejecutan procesos concurrentes tanto si son
cooperantes como independientes. Considérese un sistema
compuesto por N procesos {P1, P2, …, PN} en el que cada uno
tiene un fragmento de código, que se denomina sección crítica.
Dentro de la sección crítica, los procesos pueden estar
accediendo y modificando variables comunes, registros de una
base de datos, un archivo, en general cualquier recurso
compartido. La característica más importante de este sistema es
que cuando un proceso se encuentra ejecutando código de la
sección crítica, ningún otro proceso puede ejecutar en su sección.
EL PROBLEMA DEL PROCESADOR-CONSUMIDOR:
Es uno de los problemas más habituales que surge cuando se
programan aplicaciones utilizando procesos concurrentes. En este
tipo de problemas, uno o más procesos, que se denominan
productores, generan cierto tipo de datos que son utilizados o
consumidos por otros procesos, que se denominan consumidores. Un
claro ejemplo de este tipo de problemas es el del compilador que se
describió anteriormente. En este ejemplo el compilador hace las
funciones de productor al generar el código ensamblador que
consumirá el proceso ensamblador para generar el código máquina.
En la figura representa la estructura clásica de este tipo de procesos.
EL PROBLEMA DE LOS ESCRITORES-LECTORES:
En este problema existe un determinado objeto, que puede ser un
archivo, un registro dentro de un archivo, etc., que va a ser utilizado y
compartido por una serie de procesos concurrentes. Algunos de estos
procesos sólo van a acceder al objeto sin modificador, mientras que
otros van a acceder al objeto para modificar su contenido. Esta
actualización implica leerlo, modificar su contenido y escribirlo. A los
primeros procesos se les denomina lectores y a los segundos se les
denomina escritores. En este tipo de problemas existe una serie de
restricciones que han de seguirse: - Sólo se permite que un escritor
tenga acceso al objeto al mismo tiempo. Mientras el escritor esté
accediendo al objeto, ningún otro proceso lector ni escritor podrá
acceder a él. – Se permite, sin embargo, que múltiples lectores
tengan acceso al objeto, ya que ellos nunca van a modificar el
contenido del mismo.
COMUNICACIÓN CLIENTE-SERVIDOR:
En el modelo cliente-servidor, los procesos llamados servidores ofrecen
una serie de servicios a otros procesos que se denominan clientes. El
proceso servidor puede residir en la misma máquina que el cliente o en
una distinta, en cuyo caso la comunicación deberá realizarse a través de
una red de interconexión. Muchas aplicaciones y servicios de red, como
el correo electrónico y la transferencia de archivos, se basan en este
modelo. En este tipo de aplicaciones es necesario que el sistema
operativo ofrezca servicios que permitan comunicarse a los procesos de
cliente y servidor. Cuando los procesos ejecutan en la misma máquina, se
pueden emplear técnicas basadas en memoria compartida o archivos. Sin
embargo, este modelo de comunicación suele emplearse en aplicaciones
que ejecutan en computadores que no comparten memoria y, por tanto,
se usan técnicas basadas en paso de mensajes.

También podría gustarte