Vous êtes sur la page 1sur 4

Sistemas Distribuidos

Un sistema distribuido se define como una colección de computadores conectados por una red, y
con el software distribuido adecuado para que el sistema sea visto por los usuarios como una única
entidad capaz de proporcionar facilidades de computación.

Los sistemas distribuidos se implementan en diversas plataformas


hardware, desde unas pocas estaciones de trabajo conectadas por una
red de área local, hasta Internet, con una colección de redes extensas
interconectados, que en enlazan millones de ordenadores.

Características claves de los Sistemas


Distribuidos
 Cada elemento de cómputo tiene su propia memoria y su propio Sistema Operativo.
 Control de recursos locales y remotos.
 Sistemas Abiertos (Facilidades de cambio y crecimiento).
 Plataforma no estándar (Unix, NT, Intel, RISC, Etc.).
 Medios de comunicación (Redes, Protocolos, Dispositivos, Etc.).
 Capacidad de Procesamiento en paralelo.
 Dispersión y parcialidad.

Características principales que los definen:

Compartición de Recursos:
Los recursos en un sistema distribuido están físicamente encapsulados en una de las computadoras
y sólo pueden ser accedidos por otras computadoras mediante la red. Para que la compartición de
recursos sea efectiva, ésta debe ser manejada por un programa que ofrezca un interfaz de
comunicación permitiendo que el recurso sea accedido, manipulado y actualizado de una manera
fiable y consistente, este programa es el gestor de recursos.

Aperturas:
Un sistema puede ser abierto o cerrado con respecto a extensiones hardware o con respecto a las
extensiones software. La apertura de los sistemas distribuidos se determina principalmente por el
grado hacia el que nuevos servicios de compartición de recursos se pueden añadir sin perjudicar ni
duplicar a los ya existentes.

Concurrencia:
Cuando existen varios procesos en una única maquina decimos que se están ejecutando
concurrentemente. Si el ordenador está equipado con un único procesador central, la concurrencia
tiene lugar entrelazando la ejecución de los distintos procesos.

Escalabilidad:
Los sistemas distribuidos operan de manera efectiva y eficiente a
muchas escalas diferentes. La escala más pequeña consiste en dos
estaciones de trabajo y un servidor de fichero, cuando el tamaño y
complejidad de las redes de ordenadores crece, es un objetivo primordial
diseñar software de sistema distribuido que seguirá siendo eficiente y útil
con esas nuevas configuraciones de la red.

Tolerancia a Fallos
Los sistemas informáticos a veces fallan. Cuando se producen fallos en el software o en el hardware,
los programas podrían producir resultados incorrectos o podrían pararse antes de terminar el
proceso que estaban realizando. El diseño de sistemas tolerantes a fallos se basa en dos cuestiones,
complementarias entre sí: Redundancia hardware y recuperación del software.

Transparencia
La transparencia de un sistema distribuido va en conjunto con que todo el sistema funcione de
forma similar en todos los puntos de red, sin importar la posición del usuario, este mecanismo
permite trabajar a todos los usuarios como si se tratara de un equipo único.

Ventajas de los sistemas distribuidos


• Economía: Los microprocesadores ofrecen mejor relación precio/rendimiento que los mainframe.
• Velocidad: Tiene mayor poder de cómputo que un mainframe.
• Distribución inherente: Aplicaciones en máquinas separadas geográficamente.
• Confiabilidad: El sistema sobrevive a cualquier falla en una máquina.
• Datos Compartidos: Los usuarios tienen acceso a una base de datos común.
• Dispositivos Compartidos: Los usuarios comparten periféricos caros.
• Comunicación: facilita la comunicación persona apersona.
• Flexibilidad: Difunde la carga entre las máquinas disponibles en forma eficaz.

Desventajas de los sistemas distribuidos


• Software: Hay poco software disponible para sistemas distribuidos. La algorítmica es menos
controlable.

• Redes: Se pueden saturar o causar otros problemas.

Concurrencia (informática)
Los "Filósofos comiendo", problema clásico que implica el uso de concurrencia
En ciencias de la computación, concurrencia es una propiedad de los sistemas
en la cual los procesos de un cómputo se hacen simultáneamente, y pueden
interactuar entre ellos. Los cálculos (operaciones) pueden ser ejecutados en
múltiples procesadores, o ejecutados en procesadores separados físicamente o
virtualmente en distintos hilos de ejecución. Un sin número de modelos
matemáticos han sido desarrollados para cálculos de la concurrencia en
general incluyendo redes de Petri, procesos Calculi, el modelo máquina de accesos random en
paralelo, el Modelo Actor y el Lenguaje Reo.

También concurrente significa algo que se repite cada cierto tiempo en un mismo lugar.

Temas
Como los procesos en un sistema concurrente pueden interactuar entre ellos mismos mientras se
están ejecutando, el número de posibles rutas de ejecución en el sistema puede ser extremadamente
grande, y el resultado final puede ser indeterminado. El concurrente uso de recursos compartidos
puede ser una fuente de indeterminación dirigida a asuntos como Bloqueo mutuo, y Inanición
(starvation).

El diseño de sistemas concurrentes a menudo implican la búsqueda de técnicas confiables para


coordinar su ejecución, el intercambio de información, asignación de memoria, y una ejecución
programada para minimizar la respuesta de tiempo y maximizar el rendimiento o (cantidad de datos
que se pueden transmitir por un canal u otro dispositivo de entrada).2

Teoría

La teoría de la concurrencia ha sido un campo activo de investigación en Ciencias de la Computación.


En una de las primeras propuestas el trabajo de Carl Adam Petri fue un paso inicial en los inicios de
los 60. Desde esos tiempos una amplia variedad de formalismos han sido desarrollados para dar
ejemplos y razonar sobre la concurrencia.
Modelos

Una serie de formalismos para ejemplificar y comprender sistemas concurrentes han sido
desarrollados, incluyendo. 3
 La Máquina de Acceso Random Paralelos4
 El Modelo Actor
 Puentes computacionales y modelos como el BSP.
 Las Redes de Petri
 Procesos calculi
 El modelo de Comunicación Secuencial de Procesos
 Espacios de tuplas, e.g., Linda (lenguaje coordinado)
 SCOOP (software) (Programación orientada a objetos concurrente simple)
 Lenguaje Reo
Algunos de estos ejemplos de concurrencia están ante todo con la intención de sostener el
razonamiento y la especificación, mientras otros pueden ser usados a través de todo el ciclo de
desarrollo, incluyendo diseño, implementación, comprobación, experimentación y simulación de
sistemas concurrentes. Algunos de estos están basados en el paso de mensajes mientras otros tiene
diferente mecanismos para la concurrencia.

La proliferación de diferentes modelos de concurrencia ha motivado a algunos investigadores o


científicos a unificar estos modelos teóricos. Por ejmplo, Lee y Sangiovanni-Vincentelli han
demostrado que la entonces llamada "tagged-signal" puede ser usada para proporcionar un marco
de trabajo común para definir el denotational semantics de una variedad de modelos de concurrencia
diferentes,5 mientras Nielsen, Sassone, and Winskel han demostrado que category theory puede ser
usada para proporcionar un entendimiento similar al de los diferentes modelos.6
El teorema de la representación concurrente en el Actor model proporciona una manera para
representar los problemas concurrentes que están cercanos en el sentido de que no reciben
comunicación del exterior. (Otros sistemas concurrentes, ejemplo: process calculi puede ser
modelado en el Actor model usando a two-phase commit protocol.7)

En este sentido, S puede ser matemáticamente caracterizado en términos de todos sus posibles
comportamientos.

Lógica
Varios tipos de lógicas temporales8 pueden ser usados para ayudar a razonar sobre los sistemas
concurrentes. Algunas lógicas como la lógica temporal lineal y la lógica de árboles computacionales
permiten decidir por cuales estados puede pasar el sistema concurrente. La principal meta de estas
lógicas es en la escritura de especificaciones para los sistemas concurrentes.

Práctica
La programación concurrente envuelve lenguajes de programación y algoritmos usados para
implementar los sistemas concurrentes. La programación concurrente es considerada más general
que la programación paralela porque puede envolver comunicación de patrones dinámicamente. Los
sistemas paralelos siempre tienen un sistema de comunicación bien construido. La meta final de la
programación concurrente incluye correctness, performance and robustness. Sistemas concurrentes
como los Sistemas Operativos y sistemas de manejo de bases de datos están generalmente diseñados
para operar indefinidamente, incluyendo recuperación automática de las fallas, y no terminar su
ejecución inesperadamente. Algunos sistemas concurrentes implementan una concurrencia
transparente, en el cual las entidades de concurrencia computacional por un único recurso
compartido, pero las complejidades de las mismas están escondidas del programador.

Como ellas usan recursos compartidos, los sistemas concurrentes en general requieren la inclusión
de un tipo de arbiter en algún lugar en la implementación (normalmente en el hardware), para
controlar los accesos a esos recursos. El uso arbitrario introduce la posibilidad de indeterminacy in
concurrent computation que tiene mayores implicaciones en la práctica, incluyendo la correctitud y
el rendimiento.

Algunos modelos de programación concurrente incluyen coprocesses y deterministic concurrency.


En estos modelos, hilos de control explícitamente mantienen esos pequeños espacios de tiempos, ya
sea al sistema o a otro proceso.

Vous aimerez peut-être aussi