Sop U-3 Comunicación entre procesos Flashcards

1
Q

Condiciones de competencia

A

situación en la cual dos o más procesos leen o escriben en algunos datos compartidos y el resultado final depende de quién ejecuta qué y en qué momento lo hace.

Una situación de carrera es como una carrera en la que dos personas intentan escribir en la misma pizarra al mismo tiempo. Si no se coordinan, el resultado final será un garabato ilegible. En informática, las situaciones de carrera pueden causar errores graves y dificultar el desarrollo de software.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Región crítica

A

parte del programa en la que se accede a la memoria compartida.
Para evitar las condiciones de competencia hay que cumplir con lo siguiente:
oDos procesos no pueden estar al mismo tiempo dentro de sus regiones críticas.
oNo pueden hacerse suposiciones sobre las velocidades ni el número de las CPUs.
oNingún proceso que se esté ejecutando fuera de su región crítica puede bloquear aotro proceso. oNingún proceso deberá tener que esperar de manera indefinida para entrar en su región crítica

Para evitar las condiciones de carrera (que dos personas entren al baño al mismo tiempo), debemos seguir algunas reglas:

Exclusión mutua: Solo una persona puede estar dentro del baño a la vez. Esto significa que si una persona está ocupando el baño, las demás deben esperar afuera.
Progreso: Ninguna persona puede ser bloqueada indefinidamente. Si alguien está esperando para entrar al baño, eventualmente tendrá su turno.
Esperar acotado: Ninguna persona que esté fuera del baño puede impedir que otra persona entre.
En términos de programación:

Región crítica: Es la parte del código donde se accede a un recurso compartido (como una variable global o una estructura de datos).
Exclusión mutua: Se logra utilizando mecanismos de sincronización como semáforos, mutex o monitores. Estos mecanismos garantizan que solo un proceso pueda estar dentro de la región crítica a la vez.
Progreso: Se debe evitar que los procesos se bloqueen indefinidamente. Esto se logra utilizando algoritmos de planificación adecuados.
Esperar acotado: Se debe evitar que un proceso bloquee a otros. Esto se logra diseñando los algoritmos de acceso a la memoria compartida de forma adecuada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Exclusión mutua

A

prohibir que más de un proceso lea o escriba datos al mismo tiempo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Con espera ocupada

A

Mientras un proceso está actualizando la memoria compartida en su región crítica, ningún otro proceso debe entrar en su propia región crítica y causar problemas.
→ Deshabilitando interrupciones: la solución más simple es hacer que cada proceso inhabilite todas las interrupciones al ingresar a su región crítica y las vuelva a habilitar al salir de ella.
→ Variable de cierre o de bloqueo: utilizar una variable compartida que inicialmente es cero (desbloqueado). Pueden generar inconsistencias en la lectura de los datos por interrupciones de reloj en tiempos inoportunos.
→ Instrucción TSL:Esta lee el contenido de la palabra de memoria bloqueo, la coloca en el registro RX y luego guarda un valor distinto a cero en la dirección de memoriabloqueo.
→ Alternancia estricta:esta solución usa una variable de cerradura, pero el acceso depende de los valores de las variables, por lo que no hay posibilidad de que entren los
Desventaja de estas alternativasRequieren espera activa. Es decir, cuando un proceso quiere entrar en su región crítica, verifica si tal ingreso está permitido. Si no lo está, el proceso entra en un ciclo corto para esperar hasta que lo esté.

Técnicas para evitar que dos personas usen la cabina al mismo tiempo:

Deshabilitar interrupciones: Es como si la persona que entra a la cabina apagara el teléfono para que nadie la interrumpa durante su llamada. Sin embargo, si alguien más quiere usar la cabina, tendrá que esperar hasta que la primera persona termine y vuelva a encender el teléfono.
Variable de cierre: Es como poner un cartel en la puerta de la cabina que diga “Ocupado” o “Libre”. Pero si alguien cambia el cartel mientras otra persona está leyendo, podría haber confusión.
Instrucción TSL: Es como un mecanismo automático que cambia el cartel de “Libre” a “Ocupado” al mismo tiempo que lo lee. Sin embargo, si hay un retraso muy pequeño, otra persona podría intentar entrar al mismo tiempo.
Alternancia estricta: Es como tener un turno para usar la cabina. Pero si alguien se salta el turno, puede causar problemas.
Desventaja común: Espera activa

En todas estas técnicas, si una persona quiere usar la cabina y está ocupada, tiene que esperar afuera y revisar constantemente si ya está libre. Esto es como estar parado frente a la cabina y mirar por la ventana cada segundo para ver si alguien sale. Esta espera constante consume muchos recursos del sistema y puede afectar el rendimiento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Sin espera ocupada

A

Optimiza el uso de la CPU, evitando consultar constantemente la posibilidad de ingresar a la sección crítica. Utilización de dos primitivas de sincronización:
✓sleep: llamada al sistema que produce que el proceso se bloquee o desactive.
✓wakeup: permite activar un proceso que estaba suspendido o bloqueado.

Imagina una cola en un banco:

Cola: Representa la región crítica. Solo una persona puede ser atendida por el cajero a la vez.
Clientes: Representan los procesos. Cada cliente quiere ser atendido por el cajero (acceder a la región crítica).
Cajero: Representa el recurso compartido.
¿Cómo funciona el sistema de colas?

Sleep (dormir): Cuando un cliente llega al banco y el cajero está ocupado, en lugar de quedarse parado frente a la caja mirando si el cajero se libera, el cliente se sienta en una silla y espera su turno. Esto es como la función sleep: el proceso se bloquea y deja de consumir tiempo de CPU hasta que sea su turno.
Wakeup (despertar): Cuando el cajero termina de atender a un cliente, busca al siguiente en la cola y lo despierta. Esto es como la función wakeup: el proceso que estaba esperando es activado y puede continuar su ejecución.
¿Por qué es más eficiente que las técnicas anteriores?

Menor consumo de CPU: Al bloquearse, los procesos no consumen tiempo de CPU mientras esperan su turno. Esto es más eficiente que estar constantemente verificando si pueden acceder a la región crítica.
Mejor organización: La cola garantiza que los procesos sean atendidos en orden de llegada, evitando así situaciones de competencia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Problema productor - consumidor

A

dos procesos comparten un buffer de tamaño fijo. Elproductor coloca la información allí y el consumidor, la saca.
Los problemas de este modelo surgen cuando el productor quiere colocar un nuevo elemento en el búfer, pero este ya está lleno. La solución es que el productor sedesactive y se vuelva a activar cuando el consumidor haya sacado uno o más elementos. Asimismo, si el consumidor quiere sacar un elemento del búfer y ve que está vacío, se desactiva hasta que el productor coloca algo allí y lo activa. Utiliza las primitivas sleep y wakeup

Imagina una fábrica de galletas:

Fábrica: Representa el sistema completo.
Horno: Es el buffer. Tiene un tamaño limitado (solo cabe un cierto número de galletas).
Obrero: Es el productor. Él hornea las galletas y las coloca en el horno.
Vendedor: Es el consumidor. Él saca las galletas del horno para venderlas.
El problema:

Horno lleno: Si el horno está lleno y el obrero quiere meter otra galleta, debe esperar a que el vendedor saque una.
Horno vacío: Si el vendedor quiere sacar una galleta y el horno está vacío, debe esperar a que el obrero hornee una nueva.
La solución con sleep y wakeup:

sleep: Es como decirle al obrero o al vendedor: “Si el horno está lleno/vacío, siéntate a descansar hasta que te avisemos”.
wakeup: Es como decirle al obrero o al vendedor: “Levántate, el horno está listo para que pongas/saques galletas”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Semáforos

A

variable entera que cuenta la cantidad de “wakeup” almacenados para uso futuro
Operaciones:
*UP → S = S + 1
*DOWN → S = S – 1
✓Acción atómica → la acción de evaluar el valor de un semáforo, modificarlo y ejecutar un sleep se realizan en forma conjunta en indivisible.
✓Cada recurso es controlado por uno o más semáforos
Tipos de semáforos:
*Semáforos de sincronización
*Semáforos binarios → garantizan la exclusión mutua

Imagina una puerta con un contador de personas:

Puerta: Representa el recurso compartido.
Contador: Representa el semáforo. Cuenta cuántas personas pueden entrar a la vez.
Personas: Representan los procesos.
Operaciones del contador:

UP (sumar): Es como si una persona saliera de la habitación. El contador aumenta en 1, indicando que hay un espacio libre.
DOWN (restar): Es como si una persona entrara a la habitación. El contador disminuye en 1. Si el contador llega a 0, significa que la habitación está llena y la siguiente persona debe esperar.
Acción atómica:

La acción de leer el contador, cambiarlo y tomar una decisión (entrar o esperar) debe ser muy rápida y no puede ser interrumpida por otra persona. Es como si el contador tuviera un botón que, al presionarlo, realiza todas estas operaciones de una sola vez.

Tipos de semáforos:

Semáforos de sincronización: Sirven para sincronizar la ejecución de varios procesos. Por ejemplo, un semáforo puede indicar que un proceso debe esperar hasta que otro termine una tarea.
Semáforos binarios: Son como un interruptor de luz: solo tienen dos valores (0 o 1). Se utilizan para garantizar que solo un proceso pueda acceder a un recurso compartido a la vez (exclusión mutua).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Monitores

A

conjunto de procedimientos, variables y estructuras de datos, agrupados en un módulo o paquete.
✓Sólo puede haber activo UN proceso en un monitor en un momento determinado
✓Si se define la Sección Crítica como un procedimiento monitor → se garantiza laexclusión mutua

Imagina un baño público con una sola llave:

Baño: Representa el monitor. Es un lugar donde se realizan ciertas acciones (como lavarse las manos) de forma exclusiva.
Llave: Representa el acceso al monitor. Solo una persona puede tener la llave a la vez.
Personas: Representan los procesos. Cada persona quiere usar el baño (acceder al monitor).
¿Cómo funciona el sistema de la llave?

Una sola llave: Solo una persona puede tener la llave del baño en un momento dado. Esto garantiza que solo una persona pueda estar dentro del baño a la vez.
Procedimientos: Cada acción que se realiza dentro del baño (lavarse las manos, peinarse, etc.) es como un procedimiento del monitor.
Variables: El estado del baño (si está ocupado o libre) puede ser representado por una variable dentro del monitor.
¿Cómo se garantiza la exclusión mutua?

Al tener una sola llave, se asegura que solo una persona pueda entrar al baño a la vez. Esto es equivalente a decir que solo un proceso puede ejecutar un procedimiento del monitor en un momento dado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Mensajes

A

método de comunicación entre procesos utilizado en entornos centralizados y distribuidos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Mensajes (Características)

A

Tipos de comunicación:
Sincrónica→ el proceso emisor y receptor deben acordar previamente el intercambio de informaciónA
sincrónica→ utilización de un buffer (almacenamiento intermedio) entre elproceso emisor y receptor
Longitud de los mensajes:
Fija→ los datos y/o la cabecera tienen la misma longitud.
Variable→ los datos y la cabecera pueden variar en longitud.

Tipos de Comunicación:

Sincrónica: Imagina una conversación telefónica. Tanto tú como la otra persona deben estar disponibles al mismo tiempo para mantener la conversación. Es como un baile: ambos tienen que seguir el mismo ritmo y estar en la misma página.
Asincrónica: Piensa en un correo electrónico. Tú puedes enviar un mensaje en cualquier momento y la otra persona lo leerá cuando quiera. Es como dejar una nota en el refrigerador: el mensaje estará ahí esperando.
Longitud de los mensajes:

Fija: Imagina un tren de carga. Cada vagón tiene un tamaño fijo y solo puede transportar una cantidad determinada de carga. Los mensajes de longitud fija son como estos vagones: tienen un tamaño predefinido.
Variable: Piensa en un camión. La carga que lleva el camión puede variar en tamaño, desde una pequeña caja hasta un gran contenedor. Los mensajes de longitud variable son como este camión: pueden tener diferentes tamaños.
Combinando los conceptos:

Comunicación sincrónica con mensajes fijos: Es como una conversación por walkie-talkie. Los mensajes deben ser cortos y concisos, y ambos interlocutores deben estar escuchando al mismo tiempo.
Comunicación sincrónica con mensajes variables: Imagina una videoconferencia. La cantidad de información que se transmite puede variar mucho (video, audio, texto) y ambos participantes deben estar conectados al mismo tiempo.
Comunicación asincrónica con mensajes fijos: Es como enviar un telegrama. Los mensajes tienen una longitud fija y pueden ser entregados en cualquier momento.
Comunicación asincrónica con mensajes variables: Es como enviar un correo electrónico con archivos adjuntos. El tamaño del correo puede variar dependiendo del contenido.
El buffer:

El buffer es como una bandeja de entrada. En el caso del correo electrónico, el buffer es el servidor donde se almacenan los mensajes hasta que el destinatario los lee. En el caso de una impresora, el buffer almacena los datos que se van a imprimir hasta que la impresora está lista.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Transferencia de Mensajes

A

Este método utiliza dos primitivas, send y receive, que son llamadas al sistema, noconstrucciones del lenguaje. Específicamente, cada una se estructura:
o send (destino, mensaje): envía un mensaje a un destino dado.
o receive (origen, mensaje): recibe un mensaje de un origen dado.
Si no hay mensajes disponibles, el receptor puede bloquearse hasta que llegue uno, o bien, regresar de inmediato con un código de error.

Tú: Eres un proceso que quiere enviar o recibir mensajes.
Otras personas: Son otros procesos con los que te quieres comunicar.
Send: Es como escribir una carta y enviarla por correo. Tú escribes el mensaje y especificas el destino (la dirección de la otra persona).
Receive: Es como revisar tu buzón. Cuando alguien te envía un mensaje, lo recibes en tu buzón (una especie de almacén temporal). La función receive te permite extraer el mensaje y ver de quién proviene (el origen).
¿Qué pasa si no hay mensajes nuevos?

Bloquearse: Es como esperar sentado frente a tu buzón hasta que llegue una carta. Si no hay nada, te quedas esperando.
Regresar con error: Es como abrir tu buzón y ver que está vacío. En este caso, la función receive te devuelve un mensaje indicando que no hay nuevos mensajes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Autenticación

A

se debe autenticar el emisor antes de procesar los mensajes provenientes de dicho proceso

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Rendimiento

A

cantidad de mensajes que se envían por unidad de tiempo. Normalmente se expresan en bps (bits per second)
*Kbps = 10^3 bps
*Mbps = 10^6bps
*Gbps = 109^bps

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly