# Sistemas Comerciales.- Inicialmente fueron construidos con hardware dedicado y entornos centralizados, son, por sus características de distribución geográfica y necesidad de acceso a sistemas distintos, ideales para implementarse en sistemas distribuidos. Requieren ciertas características de fiabilidad, seguridad y protección. Algunos ejemplos son:
* Sistemas de reservas de líneas aéreas.
* Aplicaciones bancarias.
* Cajas y gestión de grandes almacenes.
# Redes WAN.- Debido al gran crecimiento de este tipo de redes (Internet), ha tomado gran importancia el intercambio de información a través de la red. Y para esto tenemos los siguientes ejemplos:
* Los servicios comunes que brinda Internet: Correo electrónico, servicio de noticias, transferencia de archivos, la Wrld Wide Web, etc.
# Aplicaciones Multimedia.- Son las últimas incorporaciones a los sistemas distribuidos. Estas aplicaciones imponen ciertas necesidades de hardware para poder tener una velocidad y regularidad de transferencia de una gran cantidad de datos. Los ejemplos de estos sistemas son:
* Videoconferencia.
* Televigilancia.
* Juegos multiusuarios.
* Enseñanza asistida por ordenador.
# Áreas de la informática aplicada a los Sistemas Distribuidos.- En este punto se tienen en cuenta toda la variedad de aplicaciones de los sistemas distribuidos, pues su diseño involucra a muchas áreas, por ejemplo:
* Comunicaciones.
* Sistemas operativos distribuidos.
* Base de datos distribuidas.
* Servidores distribuidos de ficheros.
* Lenguajes de programación distribuidos.
* Sistemas de tolerancia de fallos.
jueves, 7 de agosto de 2008
Desafíos de los Sistemas Distribuidos
* Heterogeneidad de los componentes.- La interconexión, sobre todo cuando se usa Internet, se da sobre una gran variedad de elementos hardware y software, por lo cual necesitan de ciertos estándares que permitan esta comunicación. Los Middleware, son elementos software que permiten una abstracción de la programación y el enmascaramiento de la heterogeneidad subyacente sobre las redes. También el middleware proporciona un modelo computacional uniforme.
* Extensibilidad.- Determina si el sistema puede extenderse y reimplementado en diversos aspectos (añadir y quitar componentes). La integración de componentes escritos por diferentes programadores es un autentico reto.
* Seguridad.- Reviste gran importancia por el valor intrínseco para los usuarios. Tiene tres componentes:
o Confidencialidad.- Protección contra individuos no autorizados.
o Integridad.- Protección contra la alteración o corrupción.
o Disponibilidad.- Protección contra la interferencia con los procedimientos de acceso a los recursos.
* Escalabilidad.- El sistema es escalable si conserva su efectividad al ocurrir un incremento considerable en el número de recursos y en el número de usuarios.
* Tratamiento de Fallos.- La posibilidad que tiene el sistema para seguir funcionando ante fallos de algún componente en forma independiente, pero para esto se tiene que tener alguna alternativa de solución. Técnicas para tratar fallos:
o Detección de fallos. Algunos fallos son detectables, con comprobaciones por ejemplo.
o Enmascaramiento de fallos. Algunos fallos detectados pueden ocultarse o atenuarse.
o Tolerancia de fallos. Sobre todo en Internet se dan muchos fallos y no es muy conveniente ocultarlos, es mejor tolerarlos y continuar. Ej: Tiempo de vida de una búsqueda.
o Recuperación frente a fallos. Tras un fallo se deberá tener la capacidad de volver a un estado anterior.
o Redundancia. Se puede usar para tolerar ciertos fallos (DNS, BD, etc.)
* Concurrencia. Compartir recursos por parte de los clientes a la vez.
* Transparencia. Es la ocultación al usuario y al programador de aplicaciones de la separación de los componentes en un sistema distribuido. Se identifican 8 formas de transparencia:
o De Acceso. Se accede a recursos locales y remotos de forma idéntica.
o De ubicación. Permite acceder a los recursos sin conocer su ubicación.
o De concurrencia. Usar un recurso compartido sin interferencia.
o De replicación. Permite utilizar varios ejemplares de cada recurso.
o Frente a fallos. Permite ocultar los fallos.
o De movilidad. Permite la reubicación de recursos y clientes sin afectar al sistema.
o De prestaciones. Permite reconfigurar el sistema para mejorar las prestaciones según su carga.
o Al escalado. Permite al sistema y a las aplicaciones expandirse en tamaño sin cambiar la estructura del sistema o los algoritmos de aplicación.
* Extensibilidad.- Determina si el sistema puede extenderse y reimplementado en diversos aspectos (añadir y quitar componentes). La integración de componentes escritos por diferentes programadores es un autentico reto.
* Seguridad.- Reviste gran importancia por el valor intrínseco para los usuarios. Tiene tres componentes:
o Confidencialidad.- Protección contra individuos no autorizados.
o Integridad.- Protección contra la alteración o corrupción.
o Disponibilidad.- Protección contra la interferencia con los procedimientos de acceso a los recursos.
* Escalabilidad.- El sistema es escalable si conserva su efectividad al ocurrir un incremento considerable en el número de recursos y en el número de usuarios.
* Tratamiento de Fallos.- La posibilidad que tiene el sistema para seguir funcionando ante fallos de algún componente en forma independiente, pero para esto se tiene que tener alguna alternativa de solución. Técnicas para tratar fallos:
o Detección de fallos. Algunos fallos son detectables, con comprobaciones por ejemplo.
o Enmascaramiento de fallos. Algunos fallos detectados pueden ocultarse o atenuarse.
o Tolerancia de fallos. Sobre todo en Internet se dan muchos fallos y no es muy conveniente ocultarlos, es mejor tolerarlos y continuar. Ej: Tiempo de vida de una búsqueda.
o Recuperación frente a fallos. Tras un fallo se deberá tener la capacidad de volver a un estado anterior.
o Redundancia. Se puede usar para tolerar ciertos fallos (DNS, BD, etc.)
* Concurrencia. Compartir recursos por parte de los clientes a la vez.
* Transparencia. Es la ocultación al usuario y al programador de aplicaciones de la separación de los componentes en un sistema distribuido. Se identifican 8 formas de transparencia:
o De Acceso. Se accede a recursos locales y remotos de forma idéntica.
o De ubicación. Permite acceder a los recursos sin conocer su ubicación.
o De concurrencia. Usar un recurso compartido sin interferencia.
o De replicación. Permite utilizar varios ejemplares de cada recurso.
o Frente a fallos. Permite ocultar los fallos.
o De movilidad. Permite la reubicación de recursos y clientes sin afectar al sistema.
o De prestaciones. Permite reconfigurar el sistema para mejorar las prestaciones según su carga.
o Al escalado. Permite al sistema y a las aplicaciones expandirse en tamaño sin cambiar la estructura del sistema o los algoritmos de aplicación.
Gestión de un Sistema de Archivos Distribuidos
Estructura del Sistema de Archivos Distribuidos
Básicamente, un sistema de archivos distribuidos está conformado por dos componentes principales, sobre las cuales reposa todo el funcionamiento efectivo que permite a un sistema distribuido almacenar programas y datos, así como mantenerlos disponibles a dicho sistema cuando este lo necesite, en las tareas relevantes al acceso de lectura y escritura.
Estos componentes son denominados servicio de archivos y servicio de directorios, los cuales se pasan a explicar de inmediato.
1. Servicio de Archivos
Este servicio, propio del sistema operativo, es el encargado de controlar y poner a disposición todas las operaciones, definiciones y características propias de los archivos del sistema. Este servicio no está relacionado en lo absoluto con el manejo de la lógica o significado interno de la data contenida en los archivos, ni mucho menos en la relación o jerarquización que esta data mantienen entre sí, puesto que todo ello es materia de interés y trabajo para los aplicativos que se ejecutan en el sistema y que acceden a estos datos contenidos en el archivo.
Realmente el servicio de archivos del sistema operativo se encarga de establecer el método de acceso que dispondrán los archivos, así como la organización que tendrán físicamente los datos dentro de ellos. Dependiendo del tipo de distribución y sistema operativo, se podrá establecer la conformación de los archivos como cadenas secuenciales de bytes, o bien como agrupación lógica secuencial de registros identificables o no. De aquí parte obviamente el método de acceso que aceptarán estos archivos para su lectura y escritura. Por ello nos encontramos en cada sistema operativo, distribuido o no, definiciones propias del sistema de archivos; tal es el caso de los archivos VSAM o QSAM en la plataforma centralizada mainframe, o sistemas de archivos FAT32 o NTFS en el sistema distribuido Windows, así como Ext2/Ext3 en Linux, entre otros.
Adicionalmente, el servicio de archivos tiene un papel primordial en cuanto al establecimiento de atributos o características de los archivos, con lo cual el sistema operativo establece políticas de acceso sobre los mismos. Aunque estos atributos no son parte de la data contenida en los archivos, permiten establecer parámetros de propiedad o autoría, permisología en el acceso bajo niveles de lectura, escritura, modificación y/o eliminación, así como atributos para bitácora de modificaciones.
2. Servicio de Directorios
Básicamente brinda las capacidades para la creación y eliminación de directorios en el sistema, los cuales contendrán internamente al conjunto de archivos. Así mismo, el servicio de directorios establece la estructura y nomenclatura que se aplicará a los nombres de archivos, así como a los nombres de los propios directorios. De esta manera, todas las piezas de software que requieran acceder datos contenidos en los archivos deberán hacerlo bajo esta nomenclatura.
º Niveles de Jerarquía en un Sistema de Archivos Distribuidos
El servicio de directorios del sistema operativo, permite que se establezca una relación de tipo jerárquica entre los archivos. Esta relación, al igual que se mencionó en la descripción del servicio de archivos, no está asociada a la data interna de los archivos. En este caso, se trata de mantener una relación jerárquica de arriba hacia abajo en cuanto a la definición de directorios dentro de directorios. Cuando entra en escena el concepto de subdirectorios, se permite entonces la agrupación lógica de archivos que guardan alguna relación entre sí.
El hecho de que los directorios puedan contener internamente subdirectorios, con una dimensionalidad máxima establecida por el propio sistema operativo, da origen a niveles de jerarquía en el sistema de archivos distribuidos, jerarquías que serán conocidas por todas las máquinas y procesos que conformen el sistema.
Básicamente, un sistema de archivos distribuidos está conformado por dos componentes principales, sobre las cuales reposa todo el funcionamiento efectivo que permite a un sistema distribuido almacenar programas y datos, así como mantenerlos disponibles a dicho sistema cuando este lo necesite, en las tareas relevantes al acceso de lectura y escritura.
Estos componentes son denominados servicio de archivos y servicio de directorios, los cuales se pasan a explicar de inmediato.
1. Servicio de Archivos
Este servicio, propio del sistema operativo, es el encargado de controlar y poner a disposición todas las operaciones, definiciones y características propias de los archivos del sistema. Este servicio no está relacionado en lo absoluto con el manejo de la lógica o significado interno de la data contenida en los archivos, ni mucho menos en la relación o jerarquización que esta data mantienen entre sí, puesto que todo ello es materia de interés y trabajo para los aplicativos que se ejecutan en el sistema y que acceden a estos datos contenidos en el archivo.
Realmente el servicio de archivos del sistema operativo se encarga de establecer el método de acceso que dispondrán los archivos, así como la organización que tendrán físicamente los datos dentro de ellos. Dependiendo del tipo de distribución y sistema operativo, se podrá establecer la conformación de los archivos como cadenas secuenciales de bytes, o bien como agrupación lógica secuencial de registros identificables o no. De aquí parte obviamente el método de acceso que aceptarán estos archivos para su lectura y escritura. Por ello nos encontramos en cada sistema operativo, distribuido o no, definiciones propias del sistema de archivos; tal es el caso de los archivos VSAM o QSAM en la plataforma centralizada mainframe, o sistemas de archivos FAT32 o NTFS en el sistema distribuido Windows, así como Ext2/Ext3 en Linux, entre otros.
Adicionalmente, el servicio de archivos tiene un papel primordial en cuanto al establecimiento de atributos o características de los archivos, con lo cual el sistema operativo establece políticas de acceso sobre los mismos. Aunque estos atributos no son parte de la data contenida en los archivos, permiten establecer parámetros de propiedad o autoría, permisología en el acceso bajo niveles de lectura, escritura, modificación y/o eliminación, así como atributos para bitácora de modificaciones.
2. Servicio de Directorios
Básicamente brinda las capacidades para la creación y eliminación de directorios en el sistema, los cuales contendrán internamente al conjunto de archivos. Así mismo, el servicio de directorios establece la estructura y nomenclatura que se aplicará a los nombres de archivos, así como a los nombres de los propios directorios. De esta manera, todas las piezas de software que requieran acceder datos contenidos en los archivos deberán hacerlo bajo esta nomenclatura.
º Niveles de Jerarquía en un Sistema de Archivos Distribuidos
El servicio de directorios del sistema operativo, permite que se establezca una relación de tipo jerárquica entre los archivos. Esta relación, al igual que se mencionó en la descripción del servicio de archivos, no está asociada a la data interna de los archivos. En este caso, se trata de mantener una relación jerárquica de arriba hacia abajo en cuanto a la definición de directorios dentro de directorios. Cuando entra en escena el concepto de subdirectorios, se permite entonces la agrupación lógica de archivos que guardan alguna relación entre sí.
El hecho de que los directorios puedan contener internamente subdirectorios, con una dimensionalidad máxima establecida por el propio sistema operativo, da origen a niveles de jerarquía en el sistema de archivos distribuidos, jerarquías que serán conocidas por todas las máquinas y procesos que conformen el sistema.
Sincronización en un Sistema Distribuido
Algoritmos para la Sincronización de Relojes
La sincronización de relojes en un sistema distribuido consiste en garantizar que los procesos se ejecuten en forma cronológica y a la misma vez respetar el orden de los eventos dentro del sistema. Para lograr esto existen varios métodos o algoritmos que se programan dentro del sistema operativo, entre los cuales tenemos:
1. Algoritmo de Cristian
Este algoritmo está basado en el uso del tiempo coordenado universal (siglas en inglés, UTC), el cual es recibido por un equipo dentro del sistema distribuido. Este equipo, denominado receptor de UTC, recibe a su vez solicitudes periódicas del tiempo del resto de máquinas del sistema a cada uno de los cuales les envía una respuesta en el menor plazo posible informando el tiempo UTC solicitado, con lo cual todas las máquinas del sistema actualicen su hora y se mantenga así sincronizado todo el sistema. El receptor de UTC recibe el tiempo a través de diversos medios disponibles, entre los cuales se menciona las ondas de radio, Internet, entre otros.
Un gran problema en este algoritmo es que el tiempo no puede correr hacia atrás:
* El tiempo del receptor UTC no puede ser menor que el tiempo de la máquina que le solicitó el tiempo.
* El servidor de UTC debe procesar las solicitudes de tiempo con el concepto de interrupciones, lo cual incide en el tiempo de atención.
* El intervalo de transmisión de la solicitud y su respuesta debe ser tomado en cuenta para la sincronización. El tiempo de propagación se suma al tiempo del servidor para sincronizar al emisor cuando éste recibe la respuesta.
2. Algoritmo de Berkeley
Un sistema distribuido basado en el algoritmo de Berkeley no dispone del tiempo coordenado universal (UTC); en lugar de ello, el sistema maneja su propia hora. Para realizar la sincronización del tiempo en el sistema, también existe un servidor de tiempo que, a diferencia del algoritmo de Cristian, se comporta de manera activa. Este servidor realiza un muestreo periódico del tiempo que poseen algunas de las máquinas del sistema, con lo cual calcula un tiempo promedio, el cual es enviado a todas las máquinas del sistema a fin de sincronizarlo.
2. Distribuido
Este algoritmo fue desarrollado a fin de eliminar el problema latente en el algoritmo centralizado. Por lo tanto, su enfoque está basado en no disponer de un único coordinador para el control de acceso a las secciones críticas del sistema distribuido.
En este sentido, cada proceso que requiere acceso a una sección crítica, envía su solicitud a todos los procesos existentes en el sistema, identificándose así mismo y a la sección crítica que desea acceder. Cada proceso receptor envía su respuesta al proceso solicitante, indicando una de las siguientes posibles respuestas:
o Sección crítica no en uso por el proceso receptor. Mensaje de respuesta: OK.
o Sección crítica en uso por el proceso receptor. Mensaje de respuesta: no aplica, coloca al proceso emisor en cola de espera.
o Sección crítica no en uso pero solicitada por el proceso receptor.
+ Mensaje de respuesta: OK, si la solicitud es anterior a la del receptor.
+ Mensaje de respuesta: No aplica, si la solicitud es posterior a la del receptor, coloca al proceso de emisor en cola de espera.
Sin embargo, este algoritmo también contiene un problema, consistente en que si un proceso presenta una falla no podrá enviar su respuesta ante la solicitud de un proceso emisor, por lo cual esto será interpretado como una negación de acceso, bloqueando a todos los procesos que soliciten acceso a cualquier sección crítica.
1. De Anillo de Fichas (Token Ring)
Este algoritmo establece un anillo lógico de procesos, controlado por software, a través del cual se hace circular una ficha o testigo (token) entre cada proceso. Cuando un proceso recibe la ficha, puede entrar a una sección crítica si lo requiere, procesar todas sus tareas, abandonar la sección crítica y entregar la ficha al próximo proceso del anillo. Este proceso se repite continuamente en el anillo de procesos. Cuando un proceso recibe la ficha y no requiere entrar a una sección crítica, pasa la ficha inmediatamente al siguiente proceso.
Este algoritmo contiene una debilidad, asociada a la posible pérdida de la ficha de control para el acceso a las secciones críticas. Si esto ocurre, los procesos del sistema asumirán que la ficha está en uso por algún proceso que se encuentra en la sección crítica.
2. De Elección
Estos algoritmos están diseñados para elegir un proceso coordinador. En los mismos, se garantiza que una vez realizada la elección del proceso coordinador, la misma concluya con el acuerdo de todos los procesos el sistema en la elección de un nuevo coordinador.
3. Del Grandulón (García Molina)
Este algoritmo se inicia cuando un proceso cualquiera determina que no hay respuesta a las solicitudes hechas al proceso coordinador. En este momento, este proceso envía a todos los procesos mayores que él un mensaje de elección del nuevo coordinador, lo cual puede conllevar a los siguientes escenarios:
o Un proceso, con un número mayor que el proceso emisor del mensaje, responda OK, con lo cual queda elegido como coordinador del sistema.
o Ningún proceso responde el mensaje de elección, con lo cual el proceso emisor queda electo como proceso coordinador.
1. De Anillo
Este algoritmo opera de manera similar al algoritmo del Grandulón, con la diferencia que en este método se presenta las siguientes variantes:
El mensaje de elección se hace circular a todos los procesos del sistema, y no solo a los procesos mayores que el emisor.
Cada proceso inscribe en el mensaje su identificación.
Una vez que el mensaje completa el anillo y regresa a proceso emisor, quien establece como nuevo coordinador al proceso con el número mayor.
Se hace circular a través del anillo un nuevo mensaje indicando quién es el coordinador del sistema.
1. Transacciones Atómicas
Es un método de sincronización a alto nivel, que a diferencia de los métodos revisados hasta el momento, no ocupa al programador en los aspectos de exclusión mutua, prevención de bloqueos y recuperación ante fallos. Por el contrario, este método orienta el esfuerzo del programador a los verdaderos problemas y esencia de la sincronización de sistemas distribuidos.
El concepto de transacciones atómicas consiste en garantizar que todos los procesos que conforman una transacción deben ejecutarse en forma completa y satisfactoria. De producirse falla en alguno de los procesos, toda la transacción falla, revirtiéndose la misma y procediéndose a su reinicio.
La sincronización de relojes en un sistema distribuido consiste en garantizar que los procesos se ejecuten en forma cronológica y a la misma vez respetar el orden de los eventos dentro del sistema. Para lograr esto existen varios métodos o algoritmos que se programan dentro del sistema operativo, entre los cuales tenemos:
1. Algoritmo de Cristian
Este algoritmo está basado en el uso del tiempo coordenado universal (siglas en inglés, UTC), el cual es recibido por un equipo dentro del sistema distribuido. Este equipo, denominado receptor de UTC, recibe a su vez solicitudes periódicas del tiempo del resto de máquinas del sistema a cada uno de los cuales les envía una respuesta en el menor plazo posible informando el tiempo UTC solicitado, con lo cual todas las máquinas del sistema actualicen su hora y se mantenga así sincronizado todo el sistema. El receptor de UTC recibe el tiempo a través de diversos medios disponibles, entre los cuales se menciona las ondas de radio, Internet, entre otros.
Un gran problema en este algoritmo es que el tiempo no puede correr hacia atrás:
* El tiempo del receptor UTC no puede ser menor que el tiempo de la máquina que le solicitó el tiempo.
* El servidor de UTC debe procesar las solicitudes de tiempo con el concepto de interrupciones, lo cual incide en el tiempo de atención.
* El intervalo de transmisión de la solicitud y su respuesta debe ser tomado en cuenta para la sincronización. El tiempo de propagación se suma al tiempo del servidor para sincronizar al emisor cuando éste recibe la respuesta.
2. Algoritmo de Berkeley
Un sistema distribuido basado en el algoritmo de Berkeley no dispone del tiempo coordenado universal (UTC); en lugar de ello, el sistema maneja su propia hora. Para realizar la sincronización del tiempo en el sistema, también existe un servidor de tiempo que, a diferencia del algoritmo de Cristian, se comporta de manera activa. Este servidor realiza un muestreo periódico del tiempo que poseen algunas de las máquinas del sistema, con lo cual calcula un tiempo promedio, el cual es enviado a todas las máquinas del sistema a fin de sincronizarlo.
2. Distribuido
Este algoritmo fue desarrollado a fin de eliminar el problema latente en el algoritmo centralizado. Por lo tanto, su enfoque está basado en no disponer de un único coordinador para el control de acceso a las secciones críticas del sistema distribuido.
En este sentido, cada proceso que requiere acceso a una sección crítica, envía su solicitud a todos los procesos existentes en el sistema, identificándose así mismo y a la sección crítica que desea acceder. Cada proceso receptor envía su respuesta al proceso solicitante, indicando una de las siguientes posibles respuestas:
o Sección crítica no en uso por el proceso receptor. Mensaje de respuesta: OK.
o Sección crítica en uso por el proceso receptor. Mensaje de respuesta: no aplica, coloca al proceso emisor en cola de espera.
o Sección crítica no en uso pero solicitada por el proceso receptor.
+ Mensaje de respuesta: OK, si la solicitud es anterior a la del receptor.
+ Mensaje de respuesta: No aplica, si la solicitud es posterior a la del receptor, coloca al proceso de emisor en cola de espera.
Sin embargo, este algoritmo también contiene un problema, consistente en que si un proceso presenta una falla no podrá enviar su respuesta ante la solicitud de un proceso emisor, por lo cual esto será interpretado como una negación de acceso, bloqueando a todos los procesos que soliciten acceso a cualquier sección crítica.
1. De Anillo de Fichas (Token Ring)
Este algoritmo establece un anillo lógico de procesos, controlado por software, a través del cual se hace circular una ficha o testigo (token) entre cada proceso. Cuando un proceso recibe la ficha, puede entrar a una sección crítica si lo requiere, procesar todas sus tareas, abandonar la sección crítica y entregar la ficha al próximo proceso del anillo. Este proceso se repite continuamente en el anillo de procesos. Cuando un proceso recibe la ficha y no requiere entrar a una sección crítica, pasa la ficha inmediatamente al siguiente proceso.
Este algoritmo contiene una debilidad, asociada a la posible pérdida de la ficha de control para el acceso a las secciones críticas. Si esto ocurre, los procesos del sistema asumirán que la ficha está en uso por algún proceso que se encuentra en la sección crítica.
2. De Elección
Estos algoritmos están diseñados para elegir un proceso coordinador. En los mismos, se garantiza que una vez realizada la elección del proceso coordinador, la misma concluya con el acuerdo de todos los procesos el sistema en la elección de un nuevo coordinador.
3. Del Grandulón (García Molina)
Este algoritmo se inicia cuando un proceso cualquiera determina que no hay respuesta a las solicitudes hechas al proceso coordinador. En este momento, este proceso envía a todos los procesos mayores que él un mensaje de elección del nuevo coordinador, lo cual puede conllevar a los siguientes escenarios:
o Un proceso, con un número mayor que el proceso emisor del mensaje, responda OK, con lo cual queda elegido como coordinador del sistema.
o Ningún proceso responde el mensaje de elección, con lo cual el proceso emisor queda electo como proceso coordinador.
1. De Anillo
Este algoritmo opera de manera similar al algoritmo del Grandulón, con la diferencia que en este método se presenta las siguientes variantes:
El mensaje de elección se hace circular a todos los procesos del sistema, y no solo a los procesos mayores que el emisor.
Cada proceso inscribe en el mensaje su identificación.
Una vez que el mensaje completa el anillo y regresa a proceso emisor, quien establece como nuevo coordinador al proceso con el número mayor.
Se hace circular a través del anillo un nuevo mensaje indicando quién es el coordinador del sistema.
1. Transacciones Atómicas
Es un método de sincronización a alto nivel, que a diferencia de los métodos revisados hasta el momento, no ocupa al programador en los aspectos de exclusión mutua, prevención de bloqueos y recuperación ante fallos. Por el contrario, este método orienta el esfuerzo del programador a los verdaderos problemas y esencia de la sincronización de sistemas distribuidos.
El concepto de transacciones atómicas consiste en garantizar que todos los procesos que conforman una transacción deben ejecutarse en forma completa y satisfactoria. De producirse falla en alguno de los procesos, toda la transacción falla, revirtiéndose la misma y procediéndose a su reinicio.
Procesamiento de transacciones.en Sistemas Distribuidos
Motivos del uso de transacciones.
Los sistemas distribuidos son potencialmente muy fiables debido a la posibilidad de proveer redundancia y autonomía de recursos en diferentes nodos, esto permite detectar y localizar fallas, sin embargo comúnmente tenemos varios aspectos que representan problemas para la integridad de los recursos y que a su vez motivan el uso de transacciones:
1. Dificultad para mantener consistencia en los datos.
2. Una misma vía de comunicación no siempre puede ser utilizada para proveer interacción entre 2 procesos.
3. Requerimientos de procesamiento en paralelo.
4. Manejo interactivo de uno o más usuarios
Definición de transacciones.
Las transacciones fueron originalmente desarrolladas para ser utilizadas dentro de los sistemas de base de datos, donde se usaba para auxiliar en el mantenimiento de los datos de las aplicaciones y que dependían de la consistencia de la información almacenada.
Las transacciones son un mecanismo que ayuda a simplificar la construcción de sistemas confiables a través de procesos que proveen soporte uniforme para invocar y sincronizar operaciones como:
* Operaciones de compartición de datos.
* Aseguramiento de la seriabilidad de las transacciones con otras.
* Atomicidad en su comportamiento.
* Recuperación de fallas provocadas en red y nodos.
El término transacción describe una secuencia de operaciones con uno o más recursos (por ejemplo una base de datos) que transforman su estado actual en un nuevo estado de consistencia.
Los sistemas distribuidos son potencialmente muy fiables debido a la posibilidad de proveer redundancia y autonomía de recursos en diferentes nodos, esto permite detectar y localizar fallas, sin embargo comúnmente tenemos varios aspectos que representan problemas para la integridad de los recursos y que a su vez motivan el uso de transacciones:
1. Dificultad para mantener consistencia en los datos.
2. Una misma vía de comunicación no siempre puede ser utilizada para proveer interacción entre 2 procesos.
3. Requerimientos de procesamiento en paralelo.
4. Manejo interactivo de uno o más usuarios
Definición de transacciones.
Las transacciones fueron originalmente desarrolladas para ser utilizadas dentro de los sistemas de base de datos, donde se usaba para auxiliar en el mantenimiento de los datos de las aplicaciones y que dependían de la consistencia de la información almacenada.
Las transacciones son un mecanismo que ayuda a simplificar la construcción de sistemas confiables a través de procesos que proveen soporte uniforme para invocar y sincronizar operaciones como:
* Operaciones de compartición de datos.
* Aseguramiento de la seriabilidad de las transacciones con otras.
* Atomicidad en su comportamiento.
* Recuperación de fallas provocadas en red y nodos.
El término transacción describe una secuencia de operaciones con uno o más recursos (por ejemplo una base de datos) que transforman su estado actual en un nuevo estado de consistencia.
Ventajas de los Sistemas Distribuidos
Con respecto a Sistemas Centralizados:
* Una de las ventajas de los sistemas distribuidos es la economía, pues es mucho más barato, añadir servidores y clientes cuando se requiere aumentar la potencia de procesamiento.
* El trabajo en conjunto. Por ejemplo: en una fábrica de ensamblado, los robots tienen sus CPUs diferentes y realizan acciones en conjunto, dirigidos por un sistema distribuido.
* Tienen una mayor confiabilidad. Al estar distribuida la carga de trabajo en muchas máquinas la falla de una de ellas no afecta a las demás, el sistema sobrevive como un todo.
* Capacidad de crecimiento incremental. Se puede añadir procesadores al sistema incrementando su potencia en forma gradual según sus necesidades.
Con respecto a PCs Independientes:
* Se pueden compartir recursos, como programas y periféricos, muy costosos. Ejemplo: Impresora Láser, dispositivos de almacenamiento masivo, etc.
1. Al compartir recursos, satisfacen las necesidades de muchos usuarios a la vez. Ejemplo: Sistemas de reservas de aerolíneas.
* Se logra una mejor comunicación entre las personas. Ejemplo: el correo electrónico.
* Tienen mayor flexibilidad, la carga de trabajo se puede distribuir entre diferentes ordenadores.
* Una de las ventajas de los sistemas distribuidos es la economía, pues es mucho más barato, añadir servidores y clientes cuando se requiere aumentar la potencia de procesamiento.
* El trabajo en conjunto. Por ejemplo: en una fábrica de ensamblado, los robots tienen sus CPUs diferentes y realizan acciones en conjunto, dirigidos por un sistema distribuido.
* Tienen una mayor confiabilidad. Al estar distribuida la carga de trabajo en muchas máquinas la falla de una de ellas no afecta a las demás, el sistema sobrevive como un todo.
* Capacidad de crecimiento incremental. Se puede añadir procesadores al sistema incrementando su potencia en forma gradual según sus necesidades.
Con respecto a PCs Independientes:
* Se pueden compartir recursos, como programas y periféricos, muy costosos. Ejemplo: Impresora Láser, dispositivos de almacenamiento masivo, etc.
1. Al compartir recursos, satisfacen las necesidades de muchos usuarios a la vez. Ejemplo: Sistemas de reservas de aerolíneas.
* Se logra una mejor comunicación entre las personas. Ejemplo: el correo electrónico.
* Tienen mayor flexibilidad, la carga de trabajo se puede distribuir entre diferentes ordenadores.
Sistema Cliente - Servidor
Definición:
Sistema donde el cliente es una máquina que solicita un determinado servicio y se denomina servidor a la máquina que lo proporciona. Los servicios pueden ser:
* Ejecución de un determinado programa.
* Acceso a un determinado banco de información.
* Acceso a un dispositivo de hardware.
Es un elemento primordial, la presencia de un medio físico de comunicación entre las máquinas, y dependerá de la naturaleza de este medio la viabilidad del sistema.
Categorías de Servidores:
A continuación se presenta una lista de los servidores más comunes:
* Servidores de archivos.- Proporciona archivos para clientes. Si los archivos no fueran tan grandes y los usuarios que comparten esos archivos no fueran muchos, esto sería una gran opción de almacenamiento y procesamiento de archivos. El cliente solicita los archivos y el servidor los ubica y se los envía.
* Servidores de Base de Datos.- Son los que almacenan gran cantidad de datos estructurados, se diferencian de los de archivos pues la información que se envía está ya resumida en la base de datos. Ejemplo: El Cliente hace una consulta, el servidor recibe esa consulta (SQL) y extrae solo la información pertinente y envía esa respuesta al cliente.
* Servidores de Software de Grupo.- El software de grupo es aquel, que permite organizar el trabajo de un grupo. El servidor gestiona los datos que dan soporte a estas tareas. Por ejemplo: almacenar las listas de correo electrónico. El Cliente puede indicarle, que se ha terminado una tarea y el servidor se lo envía al resto del grupo.
* Servidores WEB.- Son los que guardan y proporcionan Páginas HTML. El cliente desde un browser o link hace un llamado de la página y el servidor recibe el mensaje y envía la página correspondiente.
* Servidores de correo.- Gestiona el envío y recepción de correo de un grupo de usuarios (el servidor no necesita ser muy potente). El servidor solo debe utilizar un protocolo de correo.
* Servidor de objetos.- Permite almacenar objetos que pueden ser activados a distancia. Los clientes pueden ser capaces de activar los objetos que se encuentran en el servidor.
* Servidores de impresión.- Gestionan las solicitudes de impresión de los clientes. El cliente envía la solicitud de impresión, el servidor recibe la solicitud y la ubica en la cola de impresión, ordena a la impresora que lleve a cabo las operaciones y luego avisa a la computadora cliente que ya acabo su respectiva impresión.
* Servidores de aplicación.- Se dedica a una única aplicación. Es básicamente una aplicación a la que pueden acceder los clientes.
Componentes de Software:
Se distinguen tres componentes básicos de software:
* Presentación.- Tiene que ver con la presentación al usuario de un conjunto de objetos visuales y llevar a cabo el procesamiento de los datos producidos por el mismo y los devueltos por el servidor.
* Lógica de aplicación.- Esta capa es la responsable del procesamiento de la información que tiene lugar en la aplicación.
* Base de datos.- Esta compuesta de los archivos que contienen los datos de la aplicación.
Arquitecturas Cliente / Servidor
A continuación mostramos las arquitecturas cliente-servidor más populares:
* Arquitectura Cliente-Servidor de Dos Capas.- Consiste en una capa de presentación y lógica de la aplicación; y la otra de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:
o Cuando se requiera poco procesamiento de datos en la organización.
o Cuando se tiene una base de datos centralizada en un solo servidor.
o Cuando la base de datos es relativamente estática.
o Cuando se requiere un mantenimiento mínimo.
Sistema donde el cliente es una máquina que solicita un determinado servicio y se denomina servidor a la máquina que lo proporciona. Los servicios pueden ser:
* Ejecución de un determinado programa.
* Acceso a un determinado banco de información.
* Acceso a un dispositivo de hardware.
Es un elemento primordial, la presencia de un medio físico de comunicación entre las máquinas, y dependerá de la naturaleza de este medio la viabilidad del sistema.
Categorías de Servidores:
A continuación se presenta una lista de los servidores más comunes:
* Servidores de archivos.- Proporciona archivos para clientes. Si los archivos no fueran tan grandes y los usuarios que comparten esos archivos no fueran muchos, esto sería una gran opción de almacenamiento y procesamiento de archivos. El cliente solicita los archivos y el servidor los ubica y se los envía.
* Servidores de Base de Datos.- Son los que almacenan gran cantidad de datos estructurados, se diferencian de los de archivos pues la información que se envía está ya resumida en la base de datos. Ejemplo: El Cliente hace una consulta, el servidor recibe esa consulta (SQL) y extrae solo la información pertinente y envía esa respuesta al cliente.
* Servidores de Software de Grupo.- El software de grupo es aquel, que permite organizar el trabajo de un grupo. El servidor gestiona los datos que dan soporte a estas tareas. Por ejemplo: almacenar las listas de correo electrónico. El Cliente puede indicarle, que se ha terminado una tarea y el servidor se lo envía al resto del grupo.
* Servidores WEB.- Son los que guardan y proporcionan Páginas HTML. El cliente desde un browser o link hace un llamado de la página y el servidor recibe el mensaje y envía la página correspondiente.
* Servidores de correo.- Gestiona el envío y recepción de correo de un grupo de usuarios (el servidor no necesita ser muy potente). El servidor solo debe utilizar un protocolo de correo.
* Servidor de objetos.- Permite almacenar objetos que pueden ser activados a distancia. Los clientes pueden ser capaces de activar los objetos que se encuentran en el servidor.
* Servidores de impresión.- Gestionan las solicitudes de impresión de los clientes. El cliente envía la solicitud de impresión, el servidor recibe la solicitud y la ubica en la cola de impresión, ordena a la impresora que lleve a cabo las operaciones y luego avisa a la computadora cliente que ya acabo su respectiva impresión.
* Servidores de aplicación.- Se dedica a una única aplicación. Es básicamente una aplicación a la que pueden acceder los clientes.
Componentes de Software:
Se distinguen tres componentes básicos de software:
* Presentación.- Tiene que ver con la presentación al usuario de un conjunto de objetos visuales y llevar a cabo el procesamiento de los datos producidos por el mismo y los devueltos por el servidor.
* Lógica de aplicación.- Esta capa es la responsable del procesamiento de la información que tiene lugar en la aplicación.
* Base de datos.- Esta compuesta de los archivos que contienen los datos de la aplicación.
Arquitecturas Cliente / Servidor
A continuación mostramos las arquitecturas cliente-servidor más populares:
* Arquitectura Cliente-Servidor de Dos Capas.- Consiste en una capa de presentación y lógica de la aplicación; y la otra de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:
o Cuando se requiera poco procesamiento de datos en la organización.
o Cuando se tiene una base de datos centralizada en un solo servidor.
o Cuando la base de datos es relativamente estática.
o Cuando se requiere un mantenimiento mínimo.
Sistemas Distribuidos
Definición:
"Sistemas cuyos componentes hardware y software, que están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor".
Características:
* Concurrencia.- Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red.
* Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, esta más bien distribuida a los componentes.
* Fallos independientes de los componentes.- Cada componente del sistema puede fallar independientemente, con lo cual los demás pueden continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando.
Evolución:
Procesamiento central (Host).- Uno de los primeros modelos de ordenadores interconectados, llamados centralizados, donde todo el procesamiento de la organización se llevaba a cabo en una sola computadora, normalmente un Mainframe, y los usuarios empleaban sencillos ordenadores personales.
Los problemas de este modelo son:
* Cuando la carga de procesamiento aumentaba se tenía que cambiar el hardware del Mainframe, lo cual es más costoso que añadir más computadores personales clientes o servidores que aumenten las capacidades.
* El otro problema que surgió son las modernas interfases gráficas de usuario, las cuales podían conllevar a un gran aumento de tráfico en los medios de comunicación y por consiguiente podían colapsar.
Grupo de Servidores.- Otro modelo que entró a competir con el anterior, también un tanto centralizado, son un grupo de ordenadores actuando como servidores, normalmente de archivos o de impresión, poco inteligentes para un número de Minicomputadores que hacen el procesamiento conectados a una red de área local.
Los problemas de este modelo son:
* Podría generarse una saturación de los medios de comunicación entre los servidores poco inteligentes y los minicomputadores, por ejemplo cuando se solicitan archivos grades por varios clientes a la vez, podían disminuir en gran medida la velocidad de transmisión de información.
"Sistemas cuyos componentes hardware y software, que están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor".
Características:
* Concurrencia.- Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red.
* Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, esta más bien distribuida a los componentes.
* Fallos independientes de los componentes.- Cada componente del sistema puede fallar independientemente, con lo cual los demás pueden continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando.
Evolución:
Procesamiento central (Host).- Uno de los primeros modelos de ordenadores interconectados, llamados centralizados, donde todo el procesamiento de la organización se llevaba a cabo en una sola computadora, normalmente un Mainframe, y los usuarios empleaban sencillos ordenadores personales.
Los problemas de este modelo son:
* Cuando la carga de procesamiento aumentaba se tenía que cambiar el hardware del Mainframe, lo cual es más costoso que añadir más computadores personales clientes o servidores que aumenten las capacidades.
* El otro problema que surgió son las modernas interfases gráficas de usuario, las cuales podían conllevar a un gran aumento de tráfico en los medios de comunicación y por consiguiente podían colapsar.
Grupo de Servidores.- Otro modelo que entró a competir con el anterior, también un tanto centralizado, son un grupo de ordenadores actuando como servidores, normalmente de archivos o de impresión, poco inteligentes para un número de Minicomputadores que hacen el procesamiento conectados a una red de área local.
Los problemas de este modelo son:
* Podría generarse una saturación de los medios de comunicación entre los servidores poco inteligentes y los minicomputadores, por ejemplo cuando se solicitan archivos grades por varios clientes a la vez, podían disminuir en gran medida la velocidad de transmisión de información.
Sistema de archivos distribuido
Un sistema de archivos distribuido o sistema de archivos de red es un sistema de archivos de computadoras que sirve para compartir impresoras, archivos y otros recursos como un almacenamiento persistente en una red de computadoras. El primer sistema de este tipo fue desarrollado en la década de 1970, y en 1985 Sun Microsystems creó el sistema de archivos de red NFS el cual fue ampliamente utilizado como sistema de archivos distribuido. Otros sistemas notables utilizados fueron el sistema de archivos Andrew (AFS) y el sistema Server Message Block SMB, también conocido como CIFS.
La computación distribuida
La computación distribuida ha sido diseñada para resolver problemas demasiado grandes para cualquier supercomputadora y main-frame, mientras se mantiene la flexibilidad de trabajar en múltiples problemas más pequeños. Por lo tanto, la computación en grid es naturalmente un entorno multi-usuario; por ello, las técnicas de autorización segura son esenciales antes de permitir que los recursos informáticos sean controlados por usuarios remotos.
Suscribirse a:
Comentarios (Atom)