Computing">
Unidad 1 Arquitectura de Un Sistema Distribuido
Unidad 1 Arquitectura de Un Sistema Distribuido
Unidad 1 Arquitectura de Un Sistema Distribuido
INGENIERÍA EN COMPUTACIÓN
ALUMNO:
CONTRERAS VIDAL EMMANUEL
PROFESORA:
SALAS JIMENEZ VERONICA
GRUPO:
8CM12
2023
1.1 INTRODUCCION A LOS SISTEMAS DISTRIBUIDOS
Características: Los sistemas distribuidos son conocidos por su capacidad de compartir recursos,
escalabilidad, y tolerancia a fallos. Estas características les permiten adaptarse a las demandas
cambiantes y garantizar la disponibilidad.
Evolución: A lo largo del tiempo, los sistemas distribuidos han evolucionado en términos de tecnología
y aplicaciones. Han pasado de sistemas centralizados a entornos más distribuidos y descentralizados.
Base de Datos Distribuida: En sistemas distribuidos, las bases de datos pueden estar distribuidas en
múltiples nodos, lo que permite un acceso eficiente a la información desde diferentes ubicaciones.
Los sistemas distribuidos son una arquitectura informática que se compone de múltiples dispositivos
de hardware o software que cooperan para lograr un objetivo común. Sus características clave son:
1.2.1 Heterogeneidad
La heterogeneidad en los sistemas distribuidos se refiere a la diversidad y diferencia que puede existir
entre los elementos que componen una red de computadoras interconectadas. Aquí se exploran
algunos aspectos clave de la heterogeneidad en los sistemas distribuidos:
1.2.2 Extensibilidad
La extensibilidad en los sistemas distribuidos se refiere a la capacidad de un sistema para ser ampliado
o extendido, permitiendo la incorporación de nuevos componentes, tecnologías o funcionalidades sin
interrumpir el funcionamiento actual.
Adaptabilidad: Los sistemas distribuidos deben ser adaptables a medida que cambian los requisitos y
las tecnologías. La extensibilidad permite agregar nuevas características para mantenerse actualizado.
Seguridad: La extensibilidad debe gestionarse con cuidado para evitar vulnerabilidades de seguridad.
Se deben implementar medidas adecuadas para proteger el sistema contra amenazas.
Evolución Gradual: La extensibilidad permite una evolución gradual en lugar de una reescritura
completa, lo que ahorra tiempo y recursos.
1.2.3 Seguridad
Tolerancia a Fallos: Los sistemas distribuidos deben ser capaces de tolerar fallas de componentes
individuales sin que ello afecte significativamente el sistema en su conjunto. Esto implica la capacidad
de detectar, aislar y recuperarse de fallos.
Recuperación: En caso de fallos, los sistemas deben contar con mecanismos de recuperación que
permitan restaurar el estado operativo normal. Esto puede incluir la redundancia de datos o
componentes.
Transparencia: Los sistemas distribuidos pueden ofrecer transparencia en cuanto al control de errores,
lo que significa que los usuarios pueden no ser conscientes de las fallas o recuperaciones que ocurren
en segundo plano.
Seguridad: El control de errores también está relacionado con la seguridad. Se deben implementar
medidas para prevenir y detectar ataques que podrían comprometer la integridad de los datos.
1.2.6 Concurrencia
Carencia de Reloj Global: En sistemas distribuidos, la falta de un reloj global complica la coordinación
entre procesos concurrentes. Se utilizan algoritmos y técnicas específicas para abordar este desafío.
1.2.7 Transparencia
Separación de Preocupaciones: Permite separar las preocupaciones del usuario de las complejidades
técnicas del sistema. Los usuarios pueden centrarse en su trabajo sin preocuparse por la ubicación de
los recursos.
Facilita la Escalabilidad: La transparencia permite que el sistema distribuido sea escalable sin que los
usuarios finales noten cambios en su funcionalidad. Se pueden agregar más recursos o componentes
de manera transparente.
Cliente-Servidor
El servidor es el punto central que proporciona acceso a recursos compartidos, como bases de datos
o servicios, lo que garantiza la integridad y la consistencia de los datos.
Dividir las aplicaciones en componentes cliente y servidor facilita el desarrollo, ya que los equipos
pueden trabajar en paralelo en diferentes partes del sistema.
Ejemplos Comunes:
Ejemplos de aplicaciones cliente-servidor incluyen aplicaciones web (navegador como cliente, servidor
web como servidor) y sistemas de correo electrónico (cliente de correo y servidor de correo).
Los servicios proporcionados por múltiples servidores son fundamentales para la distribución de tareas
y recursos por lo que, en un entorno distribuido, múltiples servidores pueden ofrecer diversos servicios.
Estos servidores pueden estar ubicados en diferentes lugares físicos y pueden ejecutarse en diferentes
plataformas.
Balanceo de Carga: Se pueden utilizar algoritmos de balanceo de carga para distribuir las solicitudes
de los clientes entre varios servidores. Esto mejora el rendimiento y evita la sobrecarga de un servidor
específico.
Distribución Geográfica: Los servicios pueden distribuirse geográficamente para reducir la latencia y
acelerar el acceso a los datos o recursos.
Interacción Cliente-Servidor: Los clientes interactúan con estos servidores a través de protocolos de
red estándar, solicitando servicios o recursos específicos.
Los servidores proxy y la caché son componentes clave en los sistemas distribuidos, y afectan
significativamente su funcionamiento:
1. Servidor Proxy:
Un servidor proxy, o simplemente proxy, es un intermediario entre los clientes y los servidores de
destino. Actúa como un servidor representante que recibe solicitudes de los clientes y las reenvía a los
servidores adecuados.
Los servidores proxy pueden utilizarse para diversos fines, como el almacenamiento en caché de
contenido web, el filtrado de tráfico, la ocultación de direcciones IP de los clientes y la mejora de la
seguridad.
En sistemas distribuidos, los servidores proxy a menudo se utilizan para mejorar el rendimiento al
almacenar en caché datos o recursos comunes, reduciendo así la carga en los servidores de origen y
acelerando la entrega de contenido a los clientes.
2. Caché:
La caché es una memoria de acceso rápido que almacena datos utilizados con frecuencia para acelerar
su recuperación. En sistemas distribuidos, la caché se utiliza para almacenar copias temporales de
datos o recursos para reducir la latencia y mejorar la eficiencia.
Los servidores de caché pueden estar distribuidos en múltiples ubicaciones geográficas para
proporcionar datos cercanos a los clientes, lo que reduce la carga en los servidores centrales y mejora
la experiencia del usuario.
En sistemas distribuidos, la caché también se utiliza para mantener copias locales de datos, lo que
reduce la necesidad de acceder a servidores remotos y mejora la capacidad de respuesta del sistema.
Los procesos de igual a igual (peer-to-peer o P2P) son un enfoque fundamental en los sistemas
distribuidos donde los nodos en la red colaboran directamente entre sí sin la necesidad de un servidor
centralizado.
Definición de P2P
Un sistema P2P, que significa "Peer-to-peer" o "de igual a igual," es una red de computadoras en la
que los nodos (computadoras o dispositivos) interactúan entre sí directamente, sin depender de
servidores centralizados. En un sistema P2P, cada nodo tiene roles tanto de cliente como de servidor,
lo que significa que pueden compartir recursos y servicios con otros nodos en la red.
Igualdad: Todos los nodos en la red P2P tienen igualdad de roles y derechos. No hay una jerarquía
clara de servidores y clientes.
Intercambio directo: Los nodos pueden comunicarse y compartir recursos directamente entre sí
sin pasar por un servidor central. Esto permite un intercambio eficiente y directo de datos.
Recursos compartidos: Los nodos pueden compartir archivos, ancho de banda, potencia de
procesamiento u otros recursos directamente entre ellos.
Escalabilidad horizontal: Los sistemas P2P pueden escalar horizontalmente, lo que significa
que, al agregar más nodos a la red, el rendimiento de la red mejora. Esto se debe a que cada
nuevo nodo aporta recursos adicionales, como capacidad de almacenamiento y ancho de
banda, lo que distribuye la carga de trabajo de manera más efectiva.
Mayor número de nodos: A medida que la red P2P crece en tamaño, también aumentan los
recursos totales del sistema, lo que contribuye a su escalabilidad. Cuantos más nodos estén
conectados, mejor será el funcionamiento de la red.
Resistencia a fallos: La resistencia a fallos es una característica clave de los sistemas P2P (Peer-to-
Peer) que les permite mantener la operatividad incluso en situaciones adversas. A continuación, se
destacan aspectos clave relacionados con la resistencia a fallos en sistemas P2P:
Tolerancia a fallos de red: Los sistemas P2P a menudo implementan esquemas de tolerancia a
fallos de red que les permiten adaptarse a problemas de conectividad y mantener la
comunicación entre pares, incluso cuando algunos nodos enfrentan dificultades de conexión.
Ausencia de un único punto de fallo: Los sistemas P2P se caracterizan por no depender de un
servidor central. Esto significa que no hay un único punto de fallo en la red, lo que mejora
significativamente su resistencia a los problemas.
Distribución geográfica: La distribución geográfica de los nodos en una red P2P también
contribuye a su resistencia a fallos, ya que los problemas locales no afectan a toda la red.
Los modelos de sistemas, a pesar de sus diferencias, comparten propiedades esenciales, incluyendo
la comunicación entre procesos a través del envío de mensajes en una red de computadoras.
Los modelos simplifican sistemas complejos al abstraer elementos esenciales, lo que facilita la
comprensión y el razonamiento sobre el comportamiento del sistema.
Se destaca la importancia de conocer y comprender qué hacen nuestros diseños y en qué se basan.
Esto permite determinar si un diseño funcionará en un sistema específico y demostrar propiedades del
sistema mediante técnicas matemáticas.
Estas propiedades son aplicables a cualquier sistema que cumpla con las premisas establecidas en el
modelo.
Los aspectos de los sistemas distribuidos que queremos capturar en nuestros modelos fundamentales
están destinados a ayudarnos a discutir y razonar sobre:
Fallo: Aborda la importancia de identificar y clasificar fallos en sistemas distribuidos, incluyendo fallos
de hardware y software, con el objetivo de analizar sus posibles efectos y diseñar sistemas capaces de
mantener su funcionamiento incluso en presencia de fallos.
Seguridad: Señala la vulnerabilidad de los sistemas distribuidos a ataques tanto desde el exterior como
desde el interior, y enfatiza la necesidad de definir y clasificar los posibles modos de ataque. Esto
proporciona la base para analizar amenazas y diseñar sistemas resistentes a ellas.
MODELO DE INTERACCIÓN
En sistemas distribuidos, múltiples procesos interactúan de manera compleja. Pueden cooperar para
proporcionar servicios o lograr objetivos comunes.
Los sistemas distribuidos son más complejos que programas simples controlados por algoritmos
secuenciales. Requieren algoritmos distribuidos que describen los pasos que deben seguir todos los
procesos del sistema, incluyendo la transmisión de mensajes entre ellos.
Cada proceso en un sistema distribuido tiene su propio estado, que consta de datos a los que puede
acceder y actualizar. Este estado es privado y no puede ser accedido ni actualizado por otros procesos.
Latencia: Se refiere al tiempo que lleva que un mensaje enviado por un proceso llegue a otro. Incluye
el tiempo de transmisión de bits a través de la red, el tiempo de acceso a la red (mayor cuando está
congestionada) y el tiempo empleado por los servicios de comunicación del sistema operativo.
Ancho de banda: Es la cantidad total de información que puede transmitirse en un período de tiempo
determinado en una red de computadoras. Cuando muchos canales de comunicación utilizan la red,
deben compartir el ancho de banda disponible.
Fluctuación (jitter): Se refiere a las variaciones en el tiempo que se necesita para completar la entrega
de una serie de mensajes. Esto es especialmente importante para los datos multimedia, ya que las
fluctuaciones pueden causar distorsiones en la reproducción de audio u otros medios.
Cada computadora en un sistema distribuido tiene su propio reloj interno, y los procesos locales
obtienen el valor del tiempo actual de estos relojes.
Incluso si dos procesos leen sus relojes al mismo tiempo, sus relojes locales pueden mostrar valores
de tiempo diferentes debido a las derivas del reloj y las tasas de deriva variables.
La tasa de deriva del reloj se refiere a la proporción en que el reloj de una computadora difiere del reloj
de referencia perfecto.
Para corregir los tiempos del reloj de las computadoras, se pueden utilizar enfoques como receptores
de radio que obtienen lecturas de tiempo de un GPS. Sin embargo, esto puede no ser práctico para
cada computadora, por lo que una computadora con una fuente de tiempo precisa, como un GPS,
puede enviar mensajes de temporización a otras computadoras en la red.
La concordancia final entre los tiempos de los relojes locales está influenciada por los retrasos variables
en la transmisión de mensajes.
Sistemas Distribuidos Síncronos: En estos sistemas, se imponen límites conocidos tanto en el tiempo
de ejecución de cada etapa de un proceso como en el tiempo de recepción de mensajes y las tasas de
deriva de los relojes. Aunque es difícil obtener valores realistas y garantizados para estos límites,
modelar un algoritmo como un sistema síncrono puede proporcionar una idea de su comportamiento
en un sistema distribuido real. Esto es útil para detectar fallos y garantizar ciertas condiciones en el
rendimiento.
Ordenamiento de eventos.
Como ejemplo en un intercambio de mensajes en una lista de correo, donde los mensajes pueden
llegar en un orden diferente debido a los retardos en la red. La sincronización perfecta de relojes no es
realista en sistemas distribuidos, por lo que se propone un modelo de tiempo lógico desarrollado por
Lamport para ordenar eventos sin depender completamente de relojes precisos.
El tiempo lógico asigna números a eventos para representar su ordenamiento, de modo que eventos
más recientes tienen números mayores. Esto permite inferir el orden en que ocurrieron los eventos,
incluso si los relojes no están perfectamente sincronizados. El texto también menciona ejemplos de
asignación de números a eventos en procesos diferentes para ilustrar cómo funciona el ordenamiento
lógico.
MODELO DE FALLO
El modelo de fallo en sistemas distribuidos ayuda a comprender y clasificar los posibles problemas que
pueden surgir en los procesos y la comunicación, incluyendo fallos por omisión, fallos arbitrarios y fallos
de temporización.
Los "fallos por omisión" se refieren a situaciones en las que los procesos o los canales de comunicación
en un sistema distribuido no pueden realizar las acciones que se esperaba que realizaran.
Fallos por omisión de procesos: Un ejemplo importante de fallo por omisión de procesos es cuando un
proceso sufre un "fracaso" o "crash", lo que significa que se detiene abruptamente y no realiza más
acciones de programa. Esto se conoce como fallo-parada (fail-stop) si otros procesos pueden detectar
con certeza que ha fallado. Por lo general, se utiliza un mecanismo de timeout para detectar estos
fallos, lo que implica que, si un proceso no responde en un tiempo determinado, se considera que ha
fallado. Sin embargo, en un sistema asíncrono, los timeouts pueden indicar simplemente que un
proceso no está respondiendo, sin garantizar que se haya producido un fallo.
Fallos por omisión de comunicaciones: Estos fallos se refieren a problemas en las primitivas de
comunicación, como el envío y la recepción de mensajes. Un ejemplo es la pérdida de mensajes, donde
un canal de comunicación no transporta un mensaje desde el emisor al receptor. Esto puede ocurrir
debido a la falta de espacio en un búfer de recepción intermedio o errores en la red que no permiten
que el mensaje pase correctamente.
Los fallos pueden ser categorizados según su severidad, y la mayoría de los fallos en sistemas
distribuidos se consideran benignos. Esto incluye los fallos por omisión, fallos de temporización y fallos
de rendimiento. Los fallos benignos son aquellos que no causan un colapso completo del sistema, pero
aún pueden afectar su funcionamiento normal.
Los "fallos arbitrarios" se refieren a la peor categoría de fallos posibles, en la que pueden ocurrir
cualquier tipo de error o comportamiento inesperado en un proceso o canal de comunicación en un
sistema distribuido.
Fallos arbitrarios
Fallos arbitrarios en procesos: En el caso de los procesos, esto significa que pueden omitir pasos
necesarios para su funcionamiento adecuado o realizar pasos que no deberían realizar. En otras
palabras, los fallos arbitrarios en los procesos implican que pueden comportarse de manera
impredecible y no necesariamente responder de manera coherente a las invocaciones o peticiones.
Estos fallos son particularmente difíciles de detectar, ya que no siguen un patrón fijo y pueden variar
ampliamente.
Fallos arbitrarios en canales de comunicación: En cuanto a los canales de comunicación, esto significa
que los contenidos de los mensajes pueden estar corruptos, los mensajes pueden ser inexistentes o,
en casos extremos, algunos mensajes auténticos pueden ser entregados más de una vez. Sin embargo,
es menos común experimentar fallos arbitrarios en los canales de comunicación, ya que el software de
comunicación generalmente está diseñado para detectar y rechazar mensajes fallidos. Por ejemplo, se
utilizan sumas de comprobación (checksums) para detectar mensajes corruptos y números de
secuencia para detectar mensajes faltantes o duplicados.
Fallos de temporización.
Los fallos de temporización son problemas que surgen en sistemas distribuidos síncronos cuando se
imponen límites de tiempo a la ejecución de procesos, la entrega de mensajes y la velocidad del reloj.
Cualquier incumplimiento de estos límites puede resultar en la falta de disponibilidad de respuestas
para los clientes dentro de un intervalo de tiempo dado.
Los sistemas operativos de tiempo real se diseñan específicamente para garantizar la temporización,
pero son más complejos de crear y pueden requerir hardware redundante. En cambio, la mayoría de
los sistemas operativos de propósito general, como UNIX, no tienen restricciones de tiempo real.
Enmascaramiento de fallos.
La comunicación fiable en un canal con fallos por omisión se basa en la validez y la integridad de los
mensajes. La validez garantiza que todos los mensajes salientes lleguen eventualmente a su destino,
mientras que la integridad asegura que los mensajes recibidos sean idénticos a los enviados y que no
haya duplicados. Las amenazas a la integridad pueden provenir de protocolos que no rechazan
mensajes duplicados y de usuarios malintencionados que insertan mensajes falsos. Se pueden
implementar medidas de seguridad para mantener la integridad frente a tales amenazas.
MODELO DE SEGURIDAD
El modelo arquitectónico sirve como base para el modelo de seguridad en sistemas distribuidos. La
seguridad se logra protegiendo los procesos, los canales de comunicación y los objetos encapsulados
contra el acceso no autorizado. La protección se centra en objetos, pero se aplica a todos los tipos de
recursos.
Protección de objetos.
Los objetos se administran mediante un servidor que permite a los usuarios lanzar programas cliente
para realizar operaciones sobre ellos. Los derechos de acceso especifican quién puede realizar estas
operaciones en un objeto. Los usuarios son beneficiarios de estos derechos, y se asocia a cada
invocación y resultado una autoridad llamada principal, que puede ser un usuario o un proceso. El
servidor verifica la identidad del principal y los derechos de acceso antes de ejecutar una operación.
En cuanto a la seguridad en las interacciones entre procesos que envían mensajes, se reconoce que
los mensajes están expuestos a ataques, ya que la red y el servicio de comunicación son vulnerables.
Esto es especialmente crítico en aplicaciones que manejan información financiera, confidencial o
clasificada. Se plantea la necesidad de analizar y detectar amenazas a los procesos y mensajes en
estos sistemas y se sugiere un modelo para el análisis de amenazas de seguridad.
Amenazas a procesos
El enemigo en la seguridad de sistemas distribuidos es capaz de enviar y leer mensajes entre procesos,
lo que puede llevar a ataques como la suplantación de identidad o la interceptación de mensajes. Estas
amenazas se dividen en tres categorías: amenazas a procesos, amenazas a los canales de
comunicación y denegación de servicio.
Para protegerse contra estas amenazas, se utilizan técnicas de seguridad como la criptografía y la
autenticación. La criptografía se utiliza para mantener los mensajes seguros, mientras que la
autenticación verifica la identidad de los emisores de mensajes. Además, se construyen canales
seguros que garantizan la privacidad, integridad y autenticidad de los datos transmitidos.
También hay otras amenazas, como los ataques de denegación de servicio y el código móvil, que
pueden dificultar las actividades de los usuarios autorizados. El diseño de sistemas seguros debe
considerar todas estas amenazas y evaluar los riesgos y consecuencias de cada una para equilibrar la
efectividad y el costo de las medidas de seguridad necesarias.
El conjunto de protocolos TCP/IP consta de varios protocolos individuales que trabajan juntos para
permitir la comunicación de datos en una red. Los dos protocolos principales dentro de TCP/IP son:
IP (Protocolo de Internet): IP es el protocolo que se encarga de enrutar los paquetes de datos a través
de la red y de identificar los dispositivos en la red mediante direcciones IP únicas. IPv4 (versión 4) e
IPv6 (versión 6) son dos versiones del protocolo IP que se utilizan en Internet. IPv4 es la versión más
común, pero debido a la creciente demanda de direcciones IP y la limitación de direcciones en IPv4, se
ha adoptado gradualmente IPv6 para abordar esta limitación.
La relación entre el Protocolo TCP/IP y los sistemas distribuidos es significativa porque TCP/IP es el
protocolo de comunicación fundamental que subyace en la mayoría de las redes y sistemas
distribuidos. Los sistemas distribuidos son entornos en los que múltiples computadoras o dispositivos
trabajan juntos de manera cooperativa y coordinada para lograr un objetivo común. TCP/IP facilita la
comunicación y el intercambio de datos entre los componentes distribuidos de estos sistemas.
En el contexto de TCP/IP, un servicio se refiere a una aplicación o función específica que se ejecuta en
un dispositivo o servidor en una red. Los servicios son programas o procesos que ofrecen
funcionalidades específicas a otros dispositivos o usuarios en la red.
Cada servicio tiene una identificación única conocida como número de puerto, que se utiliza para dirigir
las solicitudes entrantes a la aplicación o servicio correcto en el dispositivo destino. Por ejemplo, el
servicio web utiliza el puerto 80 para recibir solicitudes HTTP.
Puertos (Ports):
Los puertos se dividen en dos categorías principales: puertos bien conocidos (well-known ports) y
puertos registrados (registered ports). Los puertos bien conocidos van del 0 al 1023 y están reservados
para servicios ampliamente utilizados y estandarizados, como HTTP (puerto 80) o FTP (puerto 21). Los
puertos registrados van del 1024 al 49151 y se utilizan para servicios registrados en la IANA (Internet
Assigned Numbers Authority). Los puertos restantes, del 49152 al 65535, se utilizan para puertos
dinámicos y privados.
Cuando un dispositivo envía datos a otro dispositivo en una red, especifica un número de puerto de
origen (source port) y un número de puerto de destino (destination port) en el encabezado de la
comunicación. Estos números de puerto permiten a los dispositivos en la red dirigir los datos al servicio
correcto en el dispositivo destino.
Los puertos son esenciales para la multiplexación y la demultiplexación de datos en una red, lo que
significa que múltiples servicios pueden funcionar en el mismo dispositivo y compartir la misma
dirección IP, ya que se diferencian por sus números de puerto.
Procesos
Los procesos pueden comunicarse entre sí a través de la red mediante la transmisión de mensajes o
datos. En un sistema distribuido, varios procesos pueden ejecutarse en diferentes dispositivos y
colaborar para lograr una tarea común.
Los procesos pueden ser tanto servidores como clientes. Los servidores proporcionan servicios o
recursos a otros procesos, mientras que los clientes utilizan esos servicios o recursos.
Los procesos en un sistema distribuido pueden ser locales (ejecutándose en el mismo dispositivo) o
remotos (ejecutándose en dispositivos diferentes en la red).
Dominios:
Los dominios se utilizan para establecer límites y restricciones de acceso en un sistema distribuido. Los
recursos y procesos dentro de un dominio pueden tener ciertos permisos y políticas de acceso
compartidos, y estos pueden diferir de un dominio a otro.
Los dominios son útiles para la administración de la seguridad y el control de acceso en un sistema
distribuido. Pueden utilizarse para definir quién tiene acceso a qué recursos y servicios dentro del
sistema.
En un sistema distribuido, es común que existan múltiples dominios que representen diferentes niveles
de seguridad o diferentes departamentos de una organización. Cada dominio tiene su propia política
de seguridad y conjunto de reglas de acceso.
Es decir, los procesos son las unidades de ejecución de programas en un sistema distribuido, mientras
que los dominios son ámbitos o conjuntos de recursos y procesos que comparten políticas de seguridad
comunes. Los procesos colaboran y se comunican en un sistema distribuido, mientras que los dominios
establecen límites y restricciones de acceso para garantizar la seguridad y la administración adecuada
de los recursos y servicios en la red distribuida. Estos conceptos son esenciales para la administración
y la seguridad efectiva en entornos de sistemas distribuidos.
REFERENCIAS
https://www.infor.uva.es/~fdiaz/sd/2004_05/doc/SD_TE01_20050221.pdf
https://cs.uns.edu.ar/~sd/data/apuntes/SD-2020-mod%2002.pdf
Lopez Fuentes, F. se A. (2015). Sistemas distribuidos [PDF]. Juan Carlos Rosas Ramírez.
http://dccd.cua.uam.mx/libros/archivos/03IXStream_sistemas_distribuidos.pdf
Echaiz, J., & Ardenghi, J. R. (s. f.). Carga Compartida en Sistemas Distribuidos Heterogeneos.
http://sedici.unlp.edu.ar/bitstream/handle/10915/21318/Documento_completo.pdf?sequence=1
&isAllowed=y
https://www.tamps.cinvestav.mx/~vjsosa/clases/sd/sistemas_distribuidos_panorama.pdf
SISTEMAS DISTRIBUIDOS CON COMPONENTES. (s. f.). UV. Recuperado 1 de septiembre de 2023,
de https://www.uv.mx/iiesca/files/2013/01/distribuidos1999-2000.pdf
MUÑOZ ESCOÍ, Concurrencia y sistemas distribuidos. Valencia: Universidad Politécnica F.D. [et al] (2012).
Coulouris, G., Dollimore, J., & Kindberg, T. (2001). Sistemas distribuidos: conceptos y diseño (3.a