Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Trabajo Unidad 4

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA


LA EDUCACION UNIVERSITARIA
UNIVERSIDAD EXPERIMENTAL MARTIMA DEL CARIBE
ESTADO LA GUAIRA
SISTEMAS OPERATIVOS II
SOP-623
SECCIÓN: A

UNIDAD IV

Docente: Integrantes:
Saraí Martínez Pierina Reyes
C.I: 27.784.862
Javier Sánchez
C.I: 29.777.437
José Gómez
C.I: 27.225.837

Catia la mar, marzo 2024


INTRODUCCIÓN

Los sistemas distribuidos son un conjunto de componentes independientes que se

ejecutan en diferentes computadoras y se comunican a través de una red para lograr un

objetivo común. Estos sistemas se han convertido en la base de muchas aplicaciones

modernas, como la web, las redes sociales, los sistemas de comercio electrónico y la

computación en la nube.

En este trabajo, se definirán los conceptos clave para el funcionamiento de esta

clase de sistemas, como lo sería la sección crítica y se discutirán las razones por las que

es importante la exclusión mutu a, también se analizarán los diferentes algoritmos

centralizados y distribuidos y se acerca de los diferentes algoritmos de elección de líder

y se analizará su importancia en los sistemas distribuidos.


Sección crítica

Es una región de código que solo puede ser ejecutada por un hilo a la vez. Esto es

necesario para evitar que los hilos interfieran entre sí y corrompan datos o resultados.

Por lo general, la sección crítica termina en un tiempo determinado y el hilo, proceso o

tarea sólo tendrá que esperar un período determinado de tiempo para entrar.

Características

• Acceso exclusivo: Solo un hilo puede acceder a la sección crítica en un momento

dado.

• Mutualidad: Los hilos que intentan acceder a la sección crítica se bloquean si ya

está ocupada.

• Prioridad: Algunos mecanismos de sección crítica permiten a los hilos tener

prioridad sobre otros hilos.

Importancia

Garantizan la corrección y consistencia de los programas concurrentes. Sin

secciones críticas, pueden ocurrir varios problemas, como:

• Inconsistencia de datos: Si dos hilos están escribiendo en la misma variable al

mismo tiempo, los datos pueden corromperse.

• Resultados incorrectos: Si dos hilos están realizando cálculos al mismo tiempo,

los resultados pueden ser incorrectos.

• Condiciones de carrera: Situación en la que el resultado de un programa

depende del orden en que se ejecutan las instrucciones. Las condiciones de

carrera pueden ser difíciles de detectar y corregir.


Ejemplos

• Acceso a una impresora: Solo un hilo puede usar la impresora a la vez.

• Modificación de una variable compartida: Solo un hilo puede modificar la

variable compartida a la vez.

• Acceso a una base de datos: Solo un hilo puede acceder a la base de datos a

la vez.

Mecanismos de Implementación

• Semáforos: Es un objeto que cuenta el número de recursos disponibles. Un hilo

puede adquirir un semáforo si hay un recurso disponible. Si no hay recursos

disponibles, el hilo se bloqueará hasta que haya un recurso disponible.

• Mutex: Objeto que solo puede ser propiedad de un hilo a la vez. Un hilo puede

adquirir un mutex si no está ya en propiedad de otro hilo. Si ya está en propiedad

de otro hilo, el hilo se bloqueará hasta que esté disponible.

• Monitores: Encapsulan un conjunto de variables y métodos. Los hilos solo

pueden acceder a las variables y métodos del monitor a través de un conjunto de

operaciones bien definidas.

Exclusión mutua

Es un mecanismo que garantiza que solo un hilo a la vez pueda acceder a una

sección crítica del código ya que las existencias de estas, no son posibles sin un

mecanismo de exclusión mutua.

Algoritmos centralizados y distribuidos de exclusión mutua

• Algoritmos centralizados:

a. Poseen un servidor central que controla el acceso a la sección critica.


b. Son adecuados para un numero pequeño de procesos.

c. Poseen una escalabilidad limitada debido a que el servidor central puede

ocasionar un cuello de botella.

Algoritmo de Peterson

Permite que dos o más procesos compartan un recurso sin conflictos, utilizando

únicamente memoria compartida para la comunicación. Ejemplo:

Dos procesos (A y B) se turnan para acceder a la sección crítica. Cada proceso

indica su intención usando una bandera. Un proceso solo puede entrar si su bandera

está activa y el otro proceso en consecuencia no tendrá su bandera activa (evitando

acceso simultáneo).

Algoritmo de Dekker

Permite que dos procesos compartan un recurso sin conflictos, pero se diferencia

en su implementación, se diferencia del algoritmo de Peterson ya que este no funciona

mediante turnos lo que lo vuelve más simple. Ejemplo:

Dos procesos (A y B) tienen una variable booleana bandera cada uno, inicialmente

en false. Para entrar a la sección crítica, un proceso debe poner su bandera a true

mientras el otro proceso debe esperar cuando la bandera del otro proceso sea true. Si la

bandera del otro proceso es false, el proceso entra a la sección crítica. Al salir, el proceso

pone su bandera a false.

• Algoritmos distribuidos:

a. No poseen un servidor central, los procesos se coordinan entre sí para acceder

a la sección crítica.

b. Son más eficientes para un gran número de procesos.


c. Mayor escalabilidad al distribuir la carga entre los procesos.

Algoritmo de Ricart-Agrawala

Garantiza que solo un proceso pueda acceder a la sección crítica a la vez, evitando

conflictos de acceso y manteniendo la consistencia de los datos compartidos. Ejemplo:

Un proceso A quiere (want, puede ser false o true) entrar a la sección crítica y envía

su TS (variable temporal, timestamp) a los demás (B y C) y se comprueban sus estados,

B no quiere entrar (want es false) y su TS es mayor que el de A, por lo que envía un

mensaje de "concedido" a A. C está en la sección crítica (want es True) y su TS es menor

que el de A, por lo que envía un mensaje de "aplazado" a A, este recibe "concedido" de

B y "aplazado" de C. Como tiene al menos un "aplazado", no puede entrar a la sección

crítica y espera. Cuando C sale de la sección crítica, envía un mensaje de "liberado" a

A, recibe el "liberado" de C y como no tiene ningún "aplazado" pendiente, puede

finalmente entrar a la sección crítica.

Algoritmo de Bully

Su objetivo es elegir un único proceso para actuar como coordinador en situaciones

donde se detecta la posible falla de un coordinador anterior. Se le llama "Bully" (matón)

debido a la forma en que un proceso "más fuerte" (mayor identificador) puede forzar a

otros a reconocerlo como coordinador. Ejemplo:

Proceso C detecta que el coordinador B no responde y envía mensajes de

"elección" a A y D (ambos con identificadores más altos). A recibe el mensaje de C y,

como tiene el identificador más alto entre todos (A, C, D), envía un mensaje de "OK" a

C. D ignora el mensaje de C porque tiene un identificador menor. C recibe el "OK" de A


y se convierte en el nuevo coordinador. C envía mensajes a todos los procesos (A, B, D)

notificándoles su nuevo rol como coordinador.

Elección de Leader

Es el proceso de designar un único proceso entre varios (nodos) para que actúe

como coordinador o responsable de una tarea específica. Esto es crucial para garantizar

la consistencia de datos y evitar conflictos al acceder a recursos compartidos.

Razones para elegir un líder

• Evitar cuellos de botella: Un único líder puede distribuir la carga de trabajo y

mejorar la eficiencia.

• Simplificar la comunicación: Un único punto de contacto facilita la

coordinación entre los nodos.

• Mejorar la toma de decisiones: Un líder puede tener una visión global del

sistema y tomar decisiones más informadas.

• Facilitar la recuperación de errores: Un líder puede coordinar la recuperación

del sistema en caso de fallo.

Algoritmos de elección de líder

• Algoritmo de anillo: Los procesos pasan un token especial entre ellos. El

proceso que recibe el token por primera vez se convierte en el líder. Es tolerante

a fallos, pero puede ser lento en sistemas con un gran número de nodos.

• Algoritmo de Paxos: Ofrece mayor tolerancia a fallos y escalabilidad para un

número mayor de procesos. Es más complejo que el anterior, pero ofrece mayor

confiabilidad.
CONCLUSIÓN

En esta investigación, Se ha logrado profundizar en los conocimientos acerca

sección crítica, un concepto fundamental en los sistemas distribuidos, y en la exclusión

mutua, un conjunto de técnicas para garantizar que solo un proceso pueda acceder a

una sección crítica a la vez. Se han analizado diferentes algoritmos de exclusión mutua,

tanto centralizados como distribuidos, describiendo así sus diferencias y funcionalidades.

Finalmente, se ha abordado el tema de la elección de líder, un proceso crucial para

la coordinación y la gestión eficiente de los recursos en los sistemas distribuidos. Se han

presentado diferentes algoritmos de elección de líder y se ha analizado su importancia.

En general, esta investigación ha proporcionado una base sólida para comprender

los sistemas distribuidos, sus componentes clave y los algoritmos que se utilizan para

garantizar su correcto funcionamiento.


REFERENCIAS BIBLIOGRÁFICAS

Desconocido. (2008). Exclusión mutua. Recuperado de:

https://webprogramacion.com/exclusion-mutua/.

González G. (2023). Prácticas de sistemas operativos II. Recuperado de:

http://avellano.fis.usal.es/~ssooii/sesion7.htm.

Salguero E. (2018). Sistemas distribuidos, coordinación y acuerdo (II). Recuperado de:

https://medium.com/@edusalguero/sistemas-distribuidos-coordinacion-y-acuerdo-

aa0b18b444e7.

Wikipedia, la enciclopedia libre (2022). Sección critica. Recuperado de:

https://es.wikipedia.org/wiki/Secci%C3%B3n_cr%C3%ADtica.

Wikipedia, la enciclopedia libre (2024). Algoritmo de Ricart y Agrawala. Recuperado de:

https://es.wikipedia.org/wiki/Algoritmo_de_Ricart_y_Agrawala.

También podría gustarte