Asignacion de Procesadores






MODELOS DE ASIGNACIÓN


Los algoritmos de asignación intentan optimizar algo: 
Uso de las cpu: 
Maximizar el número de ciclos de cpu que se ejecutan para trabajos de los usuarios. 
Minimizar el tiempo de inactividad de las cpu. 
Tiempo promedio de respuesta: 
Minimizar no los tiempos individuales de respuesta sino los tiempos promedio de respuesta.
Tasa de respuesta: 
Minimizar la tasa de respuesta, que es el tiempo necesario para ejecutar un proceso en cierta máquina dividido por el tiempo que tardaría en cierto procesador de referencia.

Por lo general, cada procesador hace su planificación local (si tiene varios procesos en ejecución), sin preocuparse por lo que hacen los demás procesadores.

La dificultad básica se puede mostrar mediante un ejemplo, en el cual los procesos A y B se ejecutan en un procesador y los procesos C y D en otro.

Lo que se necesita es una forma de garantizar que los procesos con comunicación frecuente se ejecuten de manera simultánea.





PLANIFICACIÓN EN SISTEMAS DISTRIBUIDOS


Por lo general, cada procesador hace su planificación local (si tiene varios procesos en ejecución), sin preocuparse por lo que hacen los demás procesadores. Lo normal es que este método funcione. Sin embargo, si un grupo de procesos relacionados entre sí y con gran interacción se ejecutan en distintos procesadores, la planificación independiente no es el camino más eficiente.

La dificultad básica se puede mostrar mediante un ejemplo, en el cual los procesos A y B se ejecutan en un procesador y los procesos C y D en otro. El tiempo de cada procesador se comparte en pedazos de 100 milisegundos, donde A y C se ejecutan en los pedazos pares y B y D en los nones, como se muestra en la figura 4-20(a).

Supongamos que A envía muchos mensajes o lleva a cabo muchas llamadas a procedimientos remotos de D. Durante el tiempo 0, A inicia y llama de inmediato a D, que por desgracia no se ejecuta en ese momento, puesto que es el turno de C. Después de 100 milisegundos, se alternan los procesos, D obtiene el mensaje de A, lleva a cabo el trabajo y responde con rapidez. Puesto que B está ejecutándose, pasarán otros 100 milisegundos antes de que A obtenga la respuesta y pueda proseguir. El resultado neto es un intercambio de mensajes cada 200 milisegundos.

Lo que se necesita es una forma de garantizar que los procesos con comunicación frecuente se ejecuten de manera simultánea.

Aunque es difícil determinar en forma dinámica los patrones de común entre los procesos, en muchos casos, un grupo de procesos relacionados entre sí iniciarán juntos.






TOLERANCIA A FALLAS


    La promesa de los sistemas distribuidos sólo se puede cumplir cuando a la base hardware adecuada se le añaden políticas y mecanismos tolerantes a fallas. El objetivo del diseño y construcción de sistemas tolerantes a fallas consiste en garantizar que el sistema continúe funcionando de manera correcta como un todo, incluso en presencia de fallas.

     Se dice que un sistema falla cuando no cumple su especificación. En algunos casos, como en un sistema de ordenamiento distribuido de productos en un supermercado, una falla podría provocar la falta de algunos productos en la tienda. En otros casos, como en un sistema distribuido para el control de tráfico aéreo, una falla podría ser catastrófica. Como las computadoras y los sistemas distribuidos se utilizan cada vez más en misiones donde la seguridad es crítica, la necesidad de soportar las fallas cada vez es mayor.

   Un sistema consiste de un conjunto de componentes de hardware y software y son diseñados para proveer un servicio específico. Los componentes de un sistema pueden estar interrelacionados entre ellos. Un desperfecto de un sistema ocurre cuando el sistema no desempeña estos servicios de la manera especificada. Un estado erróneo en un sistema es un estado en el cual podría conducir a un fallo en el sistema. Un fallo es una condición física anormal, las causas de un fallo incluyen: errores de diseño (como errores en la especificación del sistema o en la implementación), problemas de fabricación, deterioro por el uso u otros problemas externos (como condiciones ambientales adversas, interferencia electromagnética, entradas imprevistas o el mal uso del sistema). Un error es una parte del estado del sistema la cual difiere de los valores esperados.

     Un error del sistema puede ser visto como una manifestación de mal funcionamiento del sistema, el cual podría conducir a un fallo del sistema. Es necesario entonces, que el sistema sea capaz de recuperarse de las fallas, necesitamos deshacernos del estado de error del sistema, en otras palabras, la recuperación de un fallo, es un proceso que involucra la restauración de un estado erróneo a un estado libre de error.





TRANSACCIONES 


        Una transacción es una colección de acciones que hacen transformaciones consistentes de los estados de un sistema preservando la consistencia del sistema. Una base de datos está en un estado consistente si obedece todas las restricciones de integridad definidas sobre ella. Los cambios de estado ocurren debido a actualizaciones, inserciones, y supresiones de información. Por supuesto, se quiere asegurar que la base de datos nunca entra en un estado de inconsistencia. Sin embargo, durante la ejecución de una transacción, la base de datos puede estar temporalmente en un estado inconsistente. El punto importante aquí es asegurar que la base de datos regresa a un estado consistente al fin de la ejecución de una transacción
Lo que se persigue con el manejo de transacciones es por un lado tener una transparencia adecuada de las acciones concurrentes a una base de datos y por otro lado tener una transparencia adecuada en el manejo de las fallas que se pueden presentar en una base de datos.




IMPORTANCIA EN LA COMUNIDAD DISTRIBUIDA


Las transacciones son un mecanismo estándar para manejar los cambios al estado del un sistema distribuido. Proveen un modelo para controlar el acceso concurrente a los datos y para manejar las fallas inherentes al cómputo distribuido. Si se permite que el trabajo que los objetos realizan, progrese concurrentemente sin considerar transacciones, lo único que se obtendrá será un caos total.
Una transacción es generalmente una unidad de trabajo que se hace a nombre de una aplicación o componente. Cada transacción puede estar compuesta de múltiples operaciones realizadas en datos que están dispersos en uno o varios procesos o en una o varias máquinas. Cada transacción asegura el trabajo de proteger la integridad del estado de un sistema al proveer cuatro garantías básicas conocidas como las propiedades ACID: atomicidad (atomicity), consistencia (consistency), aislamiento (isolation) y durabilidad (durability) y que se explican a continuación.
Una transacción tiene que ser atómica lo que significa que es indivisible; todas las operaciones deben ejecutarse o ninguna en lo absoluto. No debe haber posibilidad de que solo una parte se ejecute. En un sistema bancario, por ejemplo, una transferencia de dinero entre dos cuentas de cheques tiene que ser atómica; tomar dinero de una cuenta para agregarlo a otra. No es posible ejecutar una de las operaciones y la otra no. La atomicidad se garantiza a través de mecanismos de base de datos con los que se hace el seguimiento de la transacción. Si la transacción falla por cualquier razón, las actualizaciones que se hayan realizado hasta el momento serán deshechas. Solo si la transacción llega al fin los cambios se volverán parte de la base de datos. La propiedad de atomicidad permite escribir operaciones que emulan transacciones de negocio tales como retiros de cuentas de cheques, reservaciones de vuelo o compra y venta de bonos entre otras. Cada una de estas acciones, requiere actualizar varios datos y al implementarlas acciones en una transacción, se asegura que todas o ninguna de las actualizaciones se realizan. Aún más, la atomicidad garantiza que la base de datos se queda en un estado conocido después de la falla de una transacción lo que reduce el requerimiento de intervención manual. La terminación exitosa de una transacción se conoce como commit mientras que a la falla de una transacción se le conoce como abort.
Consistencia (Consistency). Una transacción mantendrá la consistencia de la base de datos. Esto es, si la base de datos se encuentra en un estado consistente antes de ejecutar la transacción, una vez que ésta termine la consistencia de la base de datos deberá conservarse. Por consistente se debe entender, internamente consistente. En términos de base de datos esto significa que se satisfacen todas las restricciones en cuanto a su integridad que incluyen:
Todos los valores de la llave primaria son únicos.
La base de datos mantiene integridad referencial lo que significa que los registros solo referencian información que existe.
Ciertos predicados se mantienen. Por ejemplo, la suma de los gastos es menor o igual al presupuesto.
A diferencia de la atomicidad, el aislamiento y la durabilidad, la consistencia es una práctica de programación. La atomicidad, el aislamiento y la durabilidad están aseguradas estén o no programadas para preservar la consistencia. Es responsabilidad del desarrollador de la aplicación asegurar que su programa preserva la consistencia.
Aislamiento (Isolation). La tercera propiedad de una transacción es el aislamiento. Se dice que un conjunto de transacciones está aislado si el efecto del sistema que las ejecuta es el mismo que si ejecutara cada una a la vez; las transacciones se ejecutan en secuencia. Tómese, por ejemplo, el caso de un sistema bancario en el que dos transacciones intentaran hacer un retiro de los últimos $200 de una cuenta de cheques. Si se permite que al mismo tiempo, dos transacciones consulten el saldo antes de afectarlo, ambas determinarán que hay fondos suficientes y realizarán el retiro. En cambio, si las transacciones se ejecutan en serie -una detrás de otra-, solo una de las transacciones será capaz de retirar los últimos $200. La siguiente encontrará el saldo de la cuenta en cero. El usuario final tiene la percepción de que su transacción es la única en el sistema. La base de datos típicamente usa técnicas de locking o versioning en los datos que cada transacción accede. El efecto de esto es hacer que la ejecución parezca en serie aunque, internamente, el sistema ejecuta las transacciones en paralelo. Por la importancia y el impacto que tiene el aislamiento (isolation) en la escalabilidad, se le ha dedicado un capítulo completo de este libro.

Durabilidad (Durability). Cuando una transacción termina de ejecutarse, todas sus actualizaciones se graban en algún tipo de medio de almacenamiento, típicamente disco, en donde se asegura que las actualizaciones no se perderán. Aun si el sistema operativo falla, los resultados de la transacción son almacenados en disco y podrán ser encontrados ahí cuando se recupere el sistema operativo. Más aún, la durabilidad a menudo debe mantenerse por un periodo largo. Por ejemplo, por cuestiones de auditoria  La durabilidad se obtiene por medio de un mecanismo que guarda en una bitácora (log) copia de todas las actualizaciones que una transacción realiza. Cuando se ejecuta el commit de la transacción, el sistema se asegura que todos los registros escritos en el log están en disco y entonces informa a la transacción que los resultados son durables. Si después del commit de la transacción y antes de escribirse a la base de datos, el sistema falla, es responsabilidad de éste reparar la base de datos lo que logra por medio de una lectura del log para verificar que se efectuó cada modificación hecha por una transacción committed. De no cumplirse esta condición, entonces vuelve a realizar las actualizaciones. Cuando esta actividad de recuperación se ha terminado, el sistema reanuda su operación normal. Cualquier nueva transacción encontrará un estado en la base de datos que incluye todas las actualizaciones. En resumen, las transacciones garantizan que los cambios al estado de un sistema se aplican atómicamente, dejan al sistema consistente, están aisladas una de otra mientras están en progreso y serán durables aun en casos de una falla catastrófica.




Procesos y Procesadores en Sistemas Distribuidos



PROCESOS Y PROCESADORES



Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por: Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador. Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa. Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.

Un microprocesador es un circuito electrónico integrado que actúa como unidad central de proceso de un ordenador, proporcionando el control de las operaciones de cálculo. Están formados por componentes extremadamente pequeños formados en una única pieza plana de poco espesor. Su componente principal son los semiconductores, principalmente silicio y germanio. Pueden llegar a tener varias decenas de millones transistores, además de otros componentes electrónicos como diodos, resistencias, condensadores todo ello en varios milímetros cuadrados.

HILOS Y MULTIHILOS

Un hilo es:
* Es una secuencia de código que se ejecuta dentro de un proceso.
* Procesos Ligeros (LWP)
* Hilos de instrucciones o hilos de control
* Comparte espacio de direcciones y otra información global con su proceso.
* Registros, pila, máscaras de señal y otros datos específicos de hilos son locales a cada hilo.



MODELOS DE SISTEMAS

En un sistema distribuido, con varios procesadores, un aspecto fundamental del diseño es cómo se los utiliza
* Los procesadores distribuidos se pueden organizar de varias formas:
* Modelo de estación de trabajo.
* Modelo de la pila de procesadores.
* Modelo híbrido.



MODELO DE ESTACIÓN DE TRABAJO

El sistema consta de estaciones de trabajo (PC) dispersas conectadas entre sí mediante una red de área local (LAN).
Pueden contar o no con disco rígido en cada una de ellas.
Los usuarios tienen:
  • Una cantidad fija de poder de cómputo exclusiva.
  • Un alto grado de autonomía para asignar los recursos de su estación de trabajo.
Uso de los discos en las estaciones de trabajo:
  • Sin disco:
    • Bajo costo, fácil mantenimiento del hardware y del software, simetría y flexibilidad.
    • Gran uso de la red, los servidores de archivos se pueden convertir en cuellos de botella.
  • Disco para paginación y archivos de tipo borrador:
    • Reduce la carga de la red respecto del caso anterior.
    • Alto costo debido al gran número de discos necesarios.
  • Disco para paginación, archivos de tipo borrador y archivos binarios (ejecutables):
    • Reduce aún más la carga sobre la red.
    • Alto costo y complejidad adicional para actualizar los binarios.
  • Disco para paginación, borrador, binarios y ocultamiento de archivos:
    • Reduce aún más la carga de red y de los servidores de archivos.
    • Alto costo.
    • Problemas de consistencia del caché.
  • Sistema local de archivos completo:
    • Escasa carga en la red.
    • Elimina la necesidad de los servidores de archivos.
    • Pérdida de transparencia.

MODELO DE PILA DE PROCESADORES


Se dispone de un conjunto de cpu que se pueden asignar dinámicamente a los usuarios según la demanda.
Los usuarios no disponen de estaciones de trabajo sino de terminales gráficas de alto rendimiento.
No existe el concepto de propiedad de los procesadores, los que pertenecen a todos y se utilizan compartidamente.
El principal argumento para la centralización del poder de cómputo como una pila de procesadores proviene de la teoría de colas:
  • Llamamos “l” a la tasa de entradas totales de solicitudes por segundo de todos los usuarios combinados.
  • Llamamos “m” a la tasa de procesamiento de solicitudes por parte del servidor.
  • Para una operación estable debe darse que “m > l”:
    • Se pueden permitir pequeños lapsos de tiempo en los que la tasa de entrada exceda a la de servicio.
  • Llamamos “T” al promedio de tiempo entre la emisión de una solicitud y la obtención de una respuesta completa:
    • T = 1 / ( m - l ).
    • Cuando “ l ” tiende a “0”“T” no tiende a “0”.
  • Supongamos que tenemos “n” multiprocesadores personales, cada uno con cierto número de cpu y con su propio sistema de colas con tasas “ l ” y “ m ” y tiempo “T”:
    • Si reunimos todas las cpu y formamos una sola pila de procesadores tendremos un solo sistema de colas en vez de “n” colas ejecutándose en paralelo.
    • La tasa de entrada será “n  l”, la tasa de servicio será “n m” y el tiempo promedio de respuesta será:
      • T1 = 1 / (n m - n  l) = 1 / n ( m -   l) = T / n.
    • Conclusión: si reemplazamos “n” pequeños recursos por uno grande que sea “n” veces más poderoso:
      • Podemos reducir el tiempo promedio de respuesta “n” veces.
El modelo de pila es más eficiente que el modelo de búsqueda de estaciones inactivas.


      En este modelo los procesadores se asignan dinámicamente a los usuarios según la demanda. A los usuarios se les dan terminales gráficas de alto rendimiento, ya que la mayoría de usuarios buscan una interfaz gráfica de calidad eficiente. Estos procesadores se utilizan compartidamente entre todos los usuarios, los cuales pueden obtener datos de la CPU durante periodos cortos, y luego regresan a la pila para ser utilizados por otros usuarios.


MODELO HÍBRIDO

Este modelo combina los dos modelos anteriores. Consta de estaciones de trabajo y una pila de procesadores. El trabajo interactivo se ejecuta en cada estación de trabajo, y el no interactivo o más pesado en la pila de procesadores, obteniendo una respuesta más rápida, un diseño sencillo y un uso de los recursos adecuado.

Se puede establecer una mediación al proporcionar a cada usuario una estación de trabajo personal y además tener una pila de procesadores. Aunque esta solución es más cara que cualquiera de los dos modelos puros, combina las ventajas de arribos. El trabajo interactivo se puede llevar a cabo en las estaciones de trabajo, con una respuesta garantizada. Sin embargo, las estaciones inactivas no se utilizan, lo cual hace más sencillo el diseño del sistema. Sólo se dejan sin utilizar. En vez de esto, todos los no interactivos se ejecutan en la pila de procesadores, así como todo el cómputo pesado en general. Este modelo proporciona una respuesta interactiva más rápida, un uso eficiente de los recursos y un diseño sencillo.

Sincronización en Sistemas Distribuidos



SINCRONIZACIÓN

     Se habla de sincronización cuando varios procesos se ejecutan a la vez con el propósito de completar una tarea y evitar así condiciones de carrera, que pudieran desembocar en un estado inesperado. También se habla de sincronización de datos cuando dos dispositivos se actualizan de forma que contengan los mismo datos.



SINCRONIZACIÓN DE RELOJES

     Un sistema distribuido debe permitir el apropiado uso de los recursos, debe encargarsede un buen desempeño y de la consistencia de los datos, además de mantener seguras todas estas operaciones

La sincronización de procesos en los sistemas distribuidos resulta más compleja que en los centralizados, debido a que la información y el procesamiento se mantienen en diferentes nodos. Un sistema distribuido debe mantener vistas parciales y consistentes de todos los procesos cooperativos y de cómputo. 

Tales vistas pueden ser provistas por los mecanismos de sincronización.
El término sincronización se define como la forma de forzar un orden parcial o total en cualquier conjunto de eventos, y es usado para hacer referencia a tres problemas distintos pero relacionados entre sí:
1.La sincronización entre el emisor y el receptor.
2.La especificación y control de la actividad común entre procesos cooperativos.
3.La serialización de accesos concurrentes a objetos compartidos por múltiples procesos.

Haciendo referencia a los métodos utilizados en un sistema centralizado, el cual hace uso de semáforos y monitores; en un sistema distribuido se utilizan algoritmos distribuidos para sincronizar el trabajo común entre los procesos y estos algoritmos.



RELOJES FÍSICOS

      La idea es proveer de un único bloque de tiempo para el sistema. Los procesos pueden usar la marca física del tiempo provista o leída de un reloj central para expresar algún orden en el conjunto de acciones que inician. La principal ventaja de este mecanismo es la simplicidad, aunque existen varios inconvenientes: el correcto registro del tiempo depende en la posibilidad de recibir correctamente y en todo momento, el tiempo actual desplegado por el reloj físico; los errores de transmisión se convierten en un impedimento para el orden deseado, el grado de exactitud depende de las constantes puestas en el sistema.

*Los valores de tiempo asignados a los eventos no tienen porqué ser cercanos alos tiempos reales en los que ocurren.
*En ciertos sistemas es importante la hora real del reloj:
        *Se precisan relojes físicos externos (más de uno).
        *Se deben sincronizar:
               *Con los relojes del mundo real.
               *Entre sí.
Desde antiguo el tiempo se ha medido astronómicamente. 
Se considera el día solar al intervalo entre dos tránsitos consecutivos del sol, donde el tránsito del sol es el evento en que el sol alcanza su punto aparentemente más alto en el cielo. 
El segundo solar se define como 1 / 86.400 de un día solar.
Como el período de rotación de la tierra no es constante, se considera el segundo solar promedio de un gran número de días.
Los físicos definieron al segundo como el tiempo que tarda el átomo de cesio 133 para hacer 9.192.631.770 transiciones:
        •Se tomó este número para que el segundo atómico coincida con el segundo solar promedio de 1958. :
        •Operan estaciones de radio de onda corta o satélites de comunicaciones.
        •Transmiten pulsos UTC con cierta regularidad establecida (cada segundo, cada 0,5 mseg, etc.).
        •Se deben conocer con precisión la posición relativa del emisor y del receptor:
                   o Se debe compensar el retraso de propagación de la señal.
                   o Si la señal se recibe por módem también se debe compensar por la ruta de la señal y                       la velocidad del módem.
                   o Se dificulta la obtención del tiempo con una precisión extremadamente alta.



ALGORITMOS PARA LA SINCRONIZACIÓN DE RELOJES





ALGORITMO DE LAMPORT


Lamport demostró que la sincronización de relojes es posible y presentó un algoritmo para lograrlo.
Lamport señaló que la sincronización de relojes no tiene que ser absoluta:
  • Si 2 procesos no interactúan no es necesario que sus relojes estén sincronizados.
  • Generalmente lo importante no es que los procesos estén de acuerdo en la hora, pero sí importa que coincidan en el orden en que ocurren los eventos.
Para ciertos algoritmos lo que importa es la consistencia interna de los relojes:
  • No interesa su cercanía particular al tiempo real (oficial).
  • Los relojes se denominan relojes lógicos.
Los relojes físicos son relojes que:
  • Deben ser iguales (estar sincronizados).
  • No deben desviarse del tiempo real más allá de cierta magnitud.
Para sincronizar los relojes lógicosLamport definió la relación ocurre antes de (happens-before):
  • Si “a” y “b” son eventos en el mismo proceso y “a” ocurre antes de “b”, entonces “a –> b” es verdadero.
  • “Ocurre antes de” es una relación transitiva:
    • Si “a –> b” y “b –> c”, entonces “a –> c”.
  • Si dos eventos “x” e “y” están en procesos diferentes que no intercambian mensajes, entonces “x –> y” no es verdadero, pero tampoco lo es “y –> x”:
    • Se dice que son eventos concurrentes.
Necesitamos una forma de medir el tiempo tal que a cada evento “a”, le podamos asociar un valor del tiempo “C(a)” en el que todos los procesos estén de acuerdo:
  • Se debe cumplir que:
    • Si “a –> b” entonces “C(a) < C(b)”.
    • El tiempo del reloj“C”, siempre debe ir hacia adelante (creciente), y nunca hacia atrás (decreciente).
El algoritmo de Lamport asigna tiempos a los eventos.
Consideramos tres procesos que se ejecutan en diferentes máquinas, cada una con su propio reloj y velocidad (ver Figura 9.1:
  • El proceso “0” envía el mensaje “a” al proceso “1” cuando el reloj de “0” marca “6”.
  • El proceso “1” recibe el mensaje “a” cuando su reloj marca “16”.
  • Si el mensaje acarrea el tiempo de inicio “6”, el proceso “1” considerará que tardó 10 marcas de reloj en viajar.
  • El mensaje “b” de “1” a “2” tarda 16 marcas de reloj.
  • El mensaje “c” de “2” a “1” sale en “60” y llega en “56”, tardaría un tiempo negativo, lo cual es imposible.
  • El mensaje “d” de “1” a “0” sale en “64” y llega en “54”.
  • Lamport utiliza la relación “ocurre antes de”:
    • Si “c” sale en “60” debe llegar en “61” o en un tiempo posterior.
    • Cada mensaje acarrea el tiempo de envío, de acuerdo con el reloj del emisor.
    • Cuando un mensaje llega y el reloj del receptor muestra un valor anterior al tiempo en que se envió el mensaje:
      • El receptor adelanta su reloj para que tenga una unidad más que el tiempo de envío.

Ejemplo de tres procesos cuyos relojes corren a diferentes velocidades - El algoritmo de Lamport corrige los relojes.
Este algoritmo cumple nuestras necesidades para el tiempo global, si se hace el siguiente agregado:
  • Entre dos eventos cualesquiera, el reloj debe marcar al menos una vez.
  • Dos eventos no deben ocurrir exactamente al mismo tiempo.
Con este algoritmo se puede asignar un tiempo a todos los eventos en un sistema distribuido, con las siguientes condiciones:
  • Si “a” ocurre antes de “b” en el mismo proceso, “C(a) < C(b)”.
  • Si “a” y “b” son el envío y recepción de un mensaje, “C(a) < C(b)”.
  • Para todos los eventos “a” y “b”“C(a)” es distinto de “C(b)”.

ALGORITMO DE CRISTIAN

Es adecuado para sistemas en los que:
  • Una máquina tiene un receptor UTC, por lo que se la llama despachador del tiempo.
  • El objetivo es sincronizar todas las máquinas con ella.
Cada máquina envía un mensaje al servidor para solicitar el tiempo actual, periódicamente, en un tiempo no mayor que d / 2 r segundos.El despachador del tiempo responde prontamente con un mensaje que contiene el tiempo actual “CUTC”.
Cuando el emisor obtiene la respuesta puede hacer que su tiempo sea “CUTC”.
Un gran problema es que el tiempo no puede correr hacia atrás:
  • “CUTC no puede ser menor que el tiempo actual “C” del emisor.
  • La atención del requerimiento en el servidor de tiempos requiere un tiempo del manejador de interrupciones.
  • También se debe considerar el tiempo de transmisión.
El cambio del reloj se debe introducir de manera global:
  • Si el cronómetro genera 100 interrupciones por segundo:
    • Cada interrupción añade 10 mseg al tiempo.
    • Para atrasar solo agregaría 9 mseg.
    • Para adelantar agregaría 11 mseg.
La corrección por el tiempo del servidor y el tiempo de transmisión se hace midiendo en el emisor:
  • El tiempo inicial (envío) “T0”.
  • El tiempo final (recepción) “T1”.
  • Ambos tiempos se miden con el mismo reloj.
El tiempo de propagación del mensaje será (T1 - T0) / 2.Si el tiempo del servidor para manejar la interrupción y procesar el mensaje es “I”:
  • El tiempo de propagación será (T1 - T0 - I) / 2.
Para mejorar la precisión:
  • Se toman varias mediciones.
  • Se descartan los valores extremos.
  • Se promedia el resto.
El tiempo de propagación se suma al tiempo del servidor para sincronizar al emisor cuando éste recibe la respuesta.

ALGORITMO DE BERKELEY

En el algoritmo de Berkeley el servidor de tiempo:
  • Es activo.
  • Realiza un muestreo periódico de todas las máquinas para preguntarles el tiempo.
  • Con las respuestas:
    • Calcula un tiempo promedio.
    • Indica a las demás máquinas que avancen su reloj o disminuyan la velocidad del mismo hasta lograr la disminución requerida.
Es adecuado cuando no se dispone de un receptor UTC.

ALGORITMOS CON PROMEDIOS

Los anteriores son algoritmos centralizados.
Una clase de algoritmos descentralizados divide el tiempo en intervalos de resincronización de longitud fija:
  • El i -ésimo intervalo:
    • Inicia en “T0 + i R” y va hasta “T0 + (i + 1) R”.
    • “T0 es un momento ya acordado en el pasado.
    • “R” es un parámetro del sistema.
Al inicio de cada intervalo cada máquina transmite el tiempo actual según su reloj.
Debido a la diferente velocidad de los relojes las transmisiones no serán simultáneas.
Luego de que una máquina transmite su hora, inicializa un cronómetro local para reunir las demás transmisiones que lleguen en cierto intervalo “S”.
Cuando recibe todas las transmisiones se ejecuta un algoritmo para calcular una nueva hora para los relojes.
Una variante es promediar los valores de todas las demás máquinas.
Otra variante es descartar los valores extremos antes de promediar (los “m” mayores y los “m” menores).
Una mejora al algoritmo considera la corrección por tiempos de propagación.

Factores que han impedido el desarrollo de los sistemas distribuidos




AVANCES TECNOLOGICOS


    Es todo conocimiento científicamente comprobado, que conlleva a la creación o materialización  de un dispositivo, equipo, técnica o similar, el cual permitirá diseñar o crear bienes y servicios que facilitan nuestras necesidades como seres humanos. 

GLOBALIZACIÓN


*Transformaciones sociales, económicas y políticas.
*Proceso económico, tecnológico, social y cultural.
*Creciente comunicación e interdependencia. 

ASPECTOS EXTERNOS



Culturales

La integridad de la información  y otros recursos que pertenecen a individuos y organizaciones, se conjugan ambos mundos: el físico y el digital. Nace como es lógico la necesidad de compartir recursos.


Políticos

En el mundo físico  las organizaciones adoptan políticas de seguridad para poder compartir recursos dentro de unos limites especificados. Las políticas de seguridad hacen cumplir con la ayuda de los mecanismos de seguridad


Económicos

Es una forma de producción  distribución y consumo de aquellos bienes que tienen el fin de satisfacer una determinada fracción de nuestras necesidades. 




 INTEGRACIÓN


Permite disponer de la información que se necesite en diferentes formatos, gracias a la cooperracion que existe entre distintas herramientas en la red.
Cabe señalar, que esta integración se realiza por medio de un cliente los cuales realizan peticiones a los  servidores con respecto a los recursos de red.

Hoy por hoy resulta muy indispensable y crucial esta integración, ya que la divulgación de sistemas operativos libres  linux, y la imperial supremacía de windows en muchos de los casos, están en un uso combinado en distintas áreas de trabajo.








Introducción a los Sistemas Distribuidos







INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS



        La computación desde sus inicios ha sufrido muchos cambios, desde los grandes ordenadores que permitían realizar tareas en forma limitada y de uso un tanto exclusivo de organizaciones muy selectas, hasta los actuales ordenadores ya sean personales o portátiles que tienen las mismas e incluso mayores capacidades que los primeros y que están cada vez más introducidos en el quehacer cotidiano de una persona.

Los mayores cambios se atribuyen principalmente a dos causas, que se dieron desde las décadas de los setenta:

1. El desarrollo de los microprocesadores, que permitieron reducir en tamaño y costo a los ordenadores y aumentar en gran medida las capacidades de los mismos y su acceso a más personas.

2. El desarrollo de las redes de área local y de las comunicaciones que permitieron conectar ordenadores con posibilidad de transferencia de datos a alta velocidad.

Es en este contexto que aparece el concepto de "Sistemas Distribuidos" que se ha popularizado tanto en la actualidad y que tiene como ámbito de estudio las redes como por ejemplo: Internet, redes de teléfonos móviles, redes corporativas, redes de empresas, etc.

En consecuencia, el presente blog que lleva como tema "Sistemas Distribuidos", tiene como principal objetivo: "describir panorámicamente los aspectos relevantes que están involucrados en los Sistemas Distribuidos".

VIDEO INFORMATIVO

DEFINICIÓN DE LOS SISTEMAS DISTRIBUIDOS


      Son 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 PRINCIPALES Y DESCRIPCIÓN DE LOS SISTEMAS DISTRIBUIDOS



 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, está 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.


VENTAJAS




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.

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.

DESVENTAJAS




      El principal problema es el software, es el diseño, implantación y uso del software distribuido, pues presenta numerosos inconvenientes. Los principales interrogantes son los siguientes:

¿Qué tipo de S. O., lenguaje de programación y aplicaciones son adecuados para estos sistemas?.
¿Cuánto deben saber los usuarios de la distribución?.
¿Qué tanto debe hacer el sistema y qué tanto deben hacer los usuarios?.

La respuesta a estos interrogantes no es uniforme entre los especialistas, pues existe una gran diversidad de criterios y de interpretaciones al respecto.

Otro problema tiene que ver con las redes de comunicación. Por ejemplo: -Perdida de mensajes, saturación en el tráfico, etc.

Un problema que puede surgir al compartir datos es la seguridad de los mismos.

En general se considera que las ventajas superan a las desventajas, si estas últimas se administran seriamente.



CARACTERÍSTICAS CLAVES 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 auténtico reto.

Seguridad.- Reviste gran importancia por el valor intrínseco para los usuarios. Tiene tres componentes:



Confidencialidad.- Protección contra individuos no autorizados.

Integridad.- Protección contra la alteración o corrupción.

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:



Detección de fallos. Algunos fallos son detectables, con comprobaciones por ejemplo.

Enmascaramiento de fallos. Algunos fallos detectados pueden ocultarse o atenuarse.

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.

Recuperación frente a fallos. Tras un fallo se deberá tener la capacidad de volver a un estado anterior.

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:



De Acceso. Se accede a recursos locales y remotos de forma idéntica.

De ubicación. Permite acceder a los recursos sin conocer su ubicación.

De concurrencia. Usar un recurso compartido sin interferencia.

De replicación. Permite utilizar varios ejemplares de cada recurso.

Frente a fallos. Permite ocultar los fallos.

De movilidad. Permite la reubicación de recursos y clientes sin afectar al sistema.

De prestaciones. Permite reconfigurar el sistema para mejorar las prestaciones según su carga.

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.



CATEGORÍAS DE LOS SISTEMAS DISTRIBUIDOS



Modelo de Minicomputadoras.

Varias computadoras que soportan diferentes usuarios cada una y provee acceso a recursos remotos.
Por lo menos un usuario por cada computadora ( CPU < Usuarios ).


Modelo de Estación de Trabajo.

Varias estaciones (Por lo general cientos), donde cada usuario cuenta con una estación de trabajo (ET) y realiza en ella todo su trabajo. Requiere de un Sistema Operativo que soporte funciones de acceso y control remoto.
Un microprocesador por cada usuario ( CPU = Usuarios).
Las estaciones de trabajo cuentan con Interfaces Gráficas, CPU potentes y Memorias propias.


Modelo microprocesadores en Pooling.

Trata de utilizar uno o más microprocesadores dependiendo de las necesidades de los usuarios.
Primero los procesadores completan su tarea y posteriormente regresan a esperar una nueva asignación.
El número de microprocesadores normalmente es mayor a uno por usuario ( CPU > Usuarios ).


CONCEPTOS DE SOFTWARE



    Aunque el hardware es importante, el software lo es más. La imagen que presenta y la forma de pensar de los usuarios de un sistema, queda determinada en gran medida por el software del sistema operativo, no por el hardware.

Se puede distinguir dos tipos de sistemas operativos para los de varios CPU: los débilmente acoplados y los fuertemente acoplados.

El software débilmente acoplado permite que las máquinas y los usuarios de un sistema distribuido sean independientes entre sí en lo fundamental, pero que interactúen en cierto grado cuando sea necesario.

En el software fuertemente acoplado el programa de aplicación y el sistema operativo necesario para soportarlo, están muy acoplados.


Sistemas Operativos de red


    Los Sistemas Operativos de red permiten a los usuarios en estaciones de trabajo independientes la comunicación por medio de un sistema compartido de archivos, pero dejan que cada usuario domine su propia estación de trabajo.


Sistemas realmente distribuidos


     Los sistemas operativos distribuidos convierten toda la colección de hardware y software en un sistema integrado, muy parecido a un sistema tradicional de tiempo completo.


Sistemas de multiprocesador con tiempo compartido


    Los multiprocesadores con memoria compartida también ofrecen la imagen de único sistema, pero lo hacen mediante la vía de centralizar todo, por lo que en realidad, este caso es un sistema. Los multiprocesadores con memoria compartida no son sistemas distribuidos.



SISTEMA OPERATIVO DE RED



       El sistema operativo de red permite la interconexión de ordenadores para poder acceder a los servicios y recursos. Al igual que un equipo no puede trabajar sin un sistema operativo, una red de equipos no puede funcionar sin un sistema operativo de red. Si no se dispone de ningún sistema operativo de red, el equipo, no pueden compartir recursos y los usuarios no podran utilizar estos recursos.

Dependiendo del fabricante del sistema operativo de red, tenemos que el software de red para un equipo personal se puede añadir al propio sistema operativo del equipo o integrarse con él.

NetWare de Novell es el ejemplo más familiar y famoso de sistema operativo de red donde el software de red del equipo cliente se incorpora en el sistema operativo del equipo. El equipo personal necesita ambos sistema operativos para gestionar conjuntamente las funciones de red y las funciones individuales.

El software del sistema operativo de red se integra en un número importante de sistemas operativos conocidos, incluyendo Windows 2000 Server/Professional, Windows NT Server/Workstation, Windows 95/98/ME y Apple Talk.

Cada configuración (sistemas operativos de red y del equipo separados, o sistema operativo combinando las funciones de ambos) tiene sus ventajas e inconvenientes. Por tanto, nuestro trabajo como especialistas en redes es determinar la configuración que mejor se adapte a las necesidades de nuestra red.

Es un componente software de una computadora que tiene como objetivo coordinar y manejar las actividades de los recursos del ordenador en una red de equipos. Consiste en un software que posibilita la comunicación de un sistema informático con otros equipos en el ámbito de una red.


Comunicación en los Sistemas Distribuidos






MODELO CLIENTE-SERVIDOR



     La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Esta idea también se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.

La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.

Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.

La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.

La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se este utilizando en una red mixta.




CARACTERÍSTICAS

En la arquitectura Cliente-Servidor el remitente de una solicitud es conocido como cliente. 

Sus características son:
*Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).
*Espera y recibe las respuestas del servidor.
*Por lo general, puede conectarse a varios servidores a la vez.
*Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.
*Al contratar un servicio de redes, se debe tener en cuenta la velocidad de conexión que le otorga al cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre ronda entre 1 ms y 50 ms.

Al receptor de la solicitud enviada por el cliente se conoce como servidor. 

Sus características son:
*Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).
*Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.
*Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado).
*No es frecuente que interactúen directamente con los usuarios finales.



ARQUITECTURA DE DOS Y TRES CAPAS

    La arquitectura cliente/servidor genérica tiene dos tipos de nodos en la red: clientes y servidores. Consecuentemente, estas arquitecturas genéricas se refieren a veces como arquitecturas de dos niveles o dos capas.

Algunas redes disponen de tres tipos de nodos:
*Clientes que interactúan con los usuarios finales.
*Servidores de aplicación que procesan los datos para los clientes.
*Servidores de la base de datos que almacenan los datos para los servidores de aplicación.

Esta configuración se llama una arquitectura de tres-capas.

Ventajas de las arquitecturas n-capas:
La ventaja fundamental de una arquitectura n-capas comparado con una arquitectura de dos niveles (o una tres-capas con una de dos niveles) es que separa hacia fuera el proceso, eso ocurre para mejorar el balance la carga en los diversos servidores; es más escalable.

Desventajas de las arquitecturas de la n-capas:
Pone más carga en la red, debido a una mayor cantidad de tráfico de la red.
Es mucho más difícil programar y probar el software que en arquitectura de dos niveles porque tienen que comunicarse más dispositivos para terminar la transacción de un usuario.


OTROS MODELOS

       Existen otros tipos de modelos menos importantes pero no por ellos menos extendidos:


*Código Móvil: código que se traslada de un servidor a un cliente y que se ejecuta en el cliente (p.e. applets o activeX).

*Agente Móvil: es un programa que se traslada en la red, de un computador a otro, realizando una tarea para alguien. (p.e. recolecta información)

*Clientes Ligeros: en el cliente sólo se ejecuta una interfaz basada en ventanas, mientras que la aplicación si se ejecuta en un servidor remoto, usualmente muy potente (multiprocesador, clusters, etc.)


CATEGORÍAS DE SERVIDORES

*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.




RED DE COMUNICACIÓN

    Una red de comunicación es básicamente un conjunto o sistema de equipos informáticos conectados entre sí, por medio de dispositivos físicos que envían y reciben impulsos eléctricos, ondas electromagnéticas o cualquier otro medio para el transporte de datos con la finalidad de compartir datos, información recursos y ofrecer servicios.


Características

    En primer lugar las redes de comunicaciones se pueden distinguir en función de si el camino por el que circula la información es posible en ambos sentidos o uno solo. Asi, se tienen:

a) redes de comunicaciones unidireccionales en las que la información viaja desde un emisor a un receptor, no existiendo camino de retorno para la comunicación inversa. Este tipo de comunicaciones se suele encontrar en las redes de difusión o distribución.

b) redes de comunicaciones bidireccionales o interactivas: la información entre los extremos viaja en los dos sentidos, típicamente por el mismo camino, aunque también existen redes en que no tiene por que coincidir los caminos de ida y vuelta. Algunos ejemplos son las redes de telefonía y de datos.

c) redes híbridas, en las que se integran tipos diferentes de redes; por ejemplo, una red unidireccional para un sentido de la comunicación es combinada con otra red para el camino de retorno. Estas soluciones fragmentarias permiten tener, por ejemplo, servicios interactivos de televisión, en la que ésta es recibida por la red de difusión terrestre o por satélite, mientras que las selecciones del usuario y sus peticiones de vídeo bajo demanda (VoD), se envían por Internet (sobre la red telefónica).

En cuanto al ancho de banda, hay que señalar que los tipos de información que pueden circular por las redes son muy variados, en cuanto a su naturaleza, tratamiento, degradación y, particularmente de muy distinto ancho de banda. Dentro del ancho de banda de una señal quedan recogidas todas las frecuencias distintas que incorpora la señal. Las variaciones de frecuencia de una señal de voz son muy inferiores a las de una imagen movimiento (vídeo). La tecnología requerida en cada caso es muy distinta; la frecuencia es la variable fundamental del diseño de sistemas de comunicaciones. en sus aspectos de transporte de señal. De aquí, se puede hablar de redes de banda ancha cuando la información que manejan ocupa un rango de frecuencias elevado y de banda estrecha en caso contrario.

Además, en determinados usos de las redes de comunicaciones, uno de los extremos genera mucha más información que el otro, lo que tiene implicaciones relativas a la ubicación de las infraestructuras de mayor ancho de banda, en el sentido emisor-receptor o en el inverso. El grado de simetría se refiere a la distribución del flujo de información entre los dos extremos de la comunicación, distinguiéndose entre redes asimétricas y redes simétricas. En las primeras uno de los extremos de la comunicación genera mucha mayor cantidad de información que la otra parte y el mayor ancho de banda mayor se situará en el camino de emisor a receptor, siendo muy inferior el dispuesto en sentido contrario.

Por último si la información y el manejo que se hace de la misma es en formato digital, se puede hablar de redes digitales. Por el contrario si la información y/o el manejo de la misma es analógico, se trata de redes analógicas.



 INTERFACES DE UN SERVICIO DE ARCHIVO


  Un aspecto importante del modelo de archivo es si éstos se pueden modificar después de su creación. Existen algunos sistemas distribuidos que permiten únicamente las operaciones de archivos CREATE Y READ. Una vez creado un archivo no se puede modificar. Se dice que tal archivo es inmutable. Estos archivos facilitan el ocultamiento y duplicación de archivos, puesto que esto elimina todos los problemas asociados con la actualización de todas las copias de un archivo cada vez que éste se modifique.

La protección en los sistemas distribuidos utiliza la misma técnica de los procesos con un procesador: posibilidades y listas para control de acceso. En el caso de las posibilidades cada usuario tiene cierto boleto llamado posibilidad, para cada objeto al que tiene acceso. La posibilidad determina los tipos de accesos permitidos ( por ejemplo se permite la lectura pero no la escritura ).

Todos los esquemas de lista para el control de acceso asocian a cada archivo una lista implícita o explícita de los usuarios que pueden tener acceso a los archivos y la forma de dicho acceso. El esquema de UNIX es una lista para control de acceso simplificada, con los bits que controlan la lectura, escritura y ejecución de cada archivo, en forma independiente para el propietario, grupo del propietario y todas las demás personas.

Los servicios de archivos se pueden dividir en dos tipos, según si soportan un modelo carga /descarga o un modelo de acceso remoto. En el modelo carga/descarga el servicio de archivo sólo proporciona la lectura de un archivo y la escritura del mismo. En la lectura transfiere todo un archivo de uno de los servidores de archivos al cliente solicitante. La escritura transfiere todo un archivo en sentido contrario del cliente al servidor. Los archivos se pueden almacenar en memoria o en disco local, como sea necesario.

La ventaja del modelo carga/descarga es la sencillez del concepto. Los programas de aplicación buscan los archivos que necesitan y después lo utilizan de manera local. Los archivos modificados o nuevos se escriben de regreso al terminar el programa.

Además, la transferencia de archivos completos es muy eficiente. Sin embargo el cliente debe disponer de un espacio suficiente de almacenamiento para todos los archivos necesarios. Otra desventaja es que si sólo se necesita una pequeña fracción de un archivo, el traslado del archivo completo es un desperdicio.

El otro tipo de servicios de archivos el de acceso remoto, en este modelo se proporcionan un gran número de operaciones para abrir y cerrar archivos, leer y escribir parte de archivo, moverse a través de un archivo, examinar y modificar los atributos de archivos, etc. Mientras en el modelo carga/descarga el servicio de archivos sólo proporciona el almacenamiento físico y la transferencia, en este caso el sistema de archivos se ejecuta en los servidores y no en los clientes. Su ventaja es que no necesita mucho espacio por parte de los clientes, a la vez que elimina la necesidad de transferir archivo completos cuando sólo se necesita un parte de ellos.





LLAMADAS A PROCEDIMIENTOS REMOTOS

     En la actualidad son bastante comunes y utilizados por lo regular de manera diaria, pero son pocos conocen lo que son, las llamadas de procedimiento remoto o bien, PRC (Remote Procedure Call) por sus siglas en inglés.


     Una llamada de procedimiento remoto (RPC) consiste en un protocolo que permite a un software o programa ejecutar código en otra máquina remota sin preocuparse por la comunicación, por lo regular es bastante utilizado en el paradigma cliente y servidor. Existen varios tipos de RPC pero estos son los más comunes:
ONC RPC de Sun
DCE/RPC de OSF
Modelo de Objetos de Componentes Distribuidos de Microsoft DCOM

Éste último es el más utilizado debido a que, como ya hemos comentado en bastantes ocasiones, es el sistema operativo más utilizado y por tanto, los servicios (la mayoría) que ofrece su empresa creadora también lo son.

El ejemplo más común y el más claro con el que se puede explicar este tipo de protocolo son las famosas actualizaciones de Windows. El cliente (en este caso nuestro PC) se conecta con los servidores de Microsoft para solicitar actualizaciones, de haber alguna de éstas, se realiza el proceso de que caracteriza a los RPC. No solo existe este tipo de aplicación para este tipo de protocolo en realidad son bastantes los usos que se les pueden dar, pero este es el más sencillo y común de entender.



MIDDLEWARE

     Es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, software, redes, hardware y/o sistemas operativos. Éste simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones que son necesarias en los sistemas distribuidos. De esta forma se provee una solución que mejora la calidad de servicio, seguridad, envío de mensajes, directorio de servicio, etc.

     Funciona como una capa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El middleware abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas. Dependiendo del problema a resolver y de las funciones necesarias, serán útiles diferentes tipos de servicios de middleware. Por lo general el middleware del lado cliente está implementado por el Sistema Operativo, el cual posee las bibliotecas que ejecutan todas las funcionalidades para la comunicación a través de la red.



PROTOCOLOS DE COMUNICACION


Debido a la ausencia de memoria compartida, toda la comunicación en los sistemas distribuidos se basa en la transferencia de mensajes
Cuando el proceso “A” quiere comunicarse con el proceso “B”:
  • Construye un mensaje en su propio espacio de direcciones.
  • Ejecuta una llamada al sistema para que el S. O. busque el mensaje y lo envíe a través de la red hacia “B”.
  • Para evitar el caos, “A” “B” deben coincidir en el significado de los bits que se envíen.
Los puntos de acuerdo necesarios incluyen lo siguiente:
  • ¿Cuántos voltios hay que utilizar para un bit “0” y cuántos para un bit “1”?.
  • ¿Cómo sabe el receptor cuál es el último bit del mensaje?.
  • ¿Cómo puede detectar si un mensaje ha sido dañado o perdido, y qué debe hacer si lo descubre?.
  • ¿Qué longitud tienen los números, cadenas y otros elementos de datos y cuál es la forma en que están representados?.
La ISO (Organización Internacional de Estándares) desarrolló un modelo de referencia que(ver Figura 8.1) :
  • Identifica en forma clara los distintos niveles.
  • Estandariza los nombres de los niveles.
  • Señala cuál nivel debe realizar cuál trabajo.

Capas, interfaces y protocolos en el modelo OSI.


      Este modelo se denomina “modelo de referencia para interconexión de sistemas abiertos” (ISO OSI o modelo OSI
El “modelo OSI” está diseñado para permitir la comunicación de los sistemas abiertos:
  • Son aquellos preparados para comunicarse con cualquier otro sistema abierto mediante reglas estándar:
    • Establecen el formato, contenido y significado de los mensajes recibidos y enviados.
    • Constituyen los protocolos, que son acuerdos en la forma en que debe desarrollarse la comunicación(ver Figura 8.2)

Un mensaje típico tal como aparece en la red.

El “modelo OSI” distingue entre dos tipos generales de protocolos:
  • Orientados hacia las conexiones:
    • Antes de intercambiar los datos, el emisor y el receptor:
      • Establecen en forma explícita una conexión.
      • Probablemente negocien el protocolo a utilizar.
      • Al finalizar, deben terminar la conexión.
      • El teléfono es un sistema de comunicación orientado hacia la conexión.
  • Sin conexión:
    • No es necesaria una configuración de antemano.
    • El emisor transmite el primer mensaje cuando está listo.
    • El depósito de una carta en un buzón es una comunicación sin conexión.
Cada capa proporciona una interfaz con la otra capa por encima de ella; la interfaz consiste de un conjunto de operaciones para definir el servicio que la capa está preparada para ofrecer a sus usuarios.
El protocolo de la capa “n” utiliza la información de la capa “n”.
Cada protocolo de capa se puede cambiar independientemente de los demás:
  • Esto es de fundamental importancia.
  • Confiere gran flexibilidad.
La colección de protocolos utilizados en un sistema particular se llama una “suite de protocolo” o “pila de protocolo”.