Académique Documents
Professionnel Documents
Culture Documents
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.
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.
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).
Teoría
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.
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.