martes, 17 de abril de 2012

Unidad II. Comunicación En Los Sistemas Operativos Distribuidos.


2.2 Sincronización.
2.2.1 Relojes físicos.
2.2.2 Relojes lógicos.
2.2.3 Uso de la sincronización (manejo de cache, comunicaciones en grupo, exclusión mutua, elección transaccional atómica e interbloqueo).
2.3 Nominación.
2.3.1 Características y estructuras.
2.3.2 Tipos normales (usuarios y de sistemas).
2.3.3 Resolución y distribución.
2.3.4 Servidores y agentes de nombres.
2.3.5 Mapeo de direcciones.
2.3.6 Mapeo de rutas.
2.3.7 Modelo de Terry.






2.2 Sincronización.

Al mismo tiempo que a comunicación,  la sincronización es fundamental, de tal forma que los procesos:

Ø  Cooperan.
Ø  Se coinciden (sincronizan) entre sí.

Sección critica parte de la memoria RAM donde un proceso X1 usa una parte de Y, mientras que X2 se mete donde se se comparte una región y si los datos son compartidos tiene que hacerse otro proceso a menos que este lo acepte.

                                               


Ejemplo. Como se implantar las regiones críticas.
       Forma de asignar recursos en un sistema distribuido.

Los problemas relativos a las regiones críticas, exclusión mutua y la sincronización:
Generalmente se resuelven en sistemas de una sola cpu con métodos como los semáforos y los monitores:

Ø  Se basan en la memoria compartida.
Ø  No son aplicables a sistemas distribuidos.

2.2.1 Relojes físicos.

Las computadoras poseen un circuito para el registro del tiempo conocido como dispositivo reloj.

Ø  Señales de ritmo.
Ø  Mecanismo de control que hace que detenga el programa para realizar otra aplicación.
Ø  Manejo de fecha y hora.

Oscilador que gobierna las fases de ejecución de las instrucciones maquina se denomina reloj. Al momento de decir que nuestro microprocesador es de 5 GHz, se interpreta que el oscilador  tiene una velocidad interna de 5 GHz


Las señales producidas por el oscilador anterior o por otro se divide mediante un divisor de frecuencia para generar una interrupción externa, en un intervalo de tiempo a estas interrupciones de reloj o tics dan lugar al segundo concepto de reloj.


Ejemplo 1.


 /* reloj*/
#include<string.h>
#include<time.h>
int main (void)
{
struct tm t;
char str[80];
/*carga de la estructura*/
t.tm_sec=1; /*seconds*/
t.tm_min=30; /*minutes*/
t.tm_hour=9; /*hour*/
t.tm_mday=22; /*day of the month*/
t.tm_mon=11; /*month*/
t.tm_year=56; /*year_does not include centuri*/
t.tm_wday=4; /*day of the week*/
t.tm_yday=0; /*does not show in asctime*/
t.tm_isdst=0; /*is daylinght sarTime;does not show in asctime */


/*converts.structure to null terminated string*/
strcpy(str,asctime(&t));
printf(" \n la fecha y tiempo es %s\n",str);
return0;
}




Ejemplo 2.



#include<stdio.h>
#include<dos.h>
int main (void)
{
struct time t;
short hora;
while(1)
{
gettime (&t); //tomar la hora
hora=t.ti_hour; //formato 24 horas
if (hora>12)
{
hora=hora-12;
printf("\r\n %2d:%2dpm",hora,t.ti_min,t.ti_sec);
}
else
printf("\r'\n %2d:%2d;%odam",hora,t.ti_min,t.ti_sec);
}
return=; 77 ansic/c++

2.2.2 Relojes lógicos.


El algoritmode Lamport proporciona un orden de eventos sin ambigüedades, pero…

Ø  Señales de ritmo.
Ø  Mecanismo de control que hace que detenga el programa para realizar otra aplicación.
Ø  Manejo de fecha y hora.


Ø  Se precisan relojes físicos externos (más de uno).
Ø  Se deben sincronizar:

Ø  Con los relojes del mundo real.
Ø  Entre sí.

La medición del tiempo real con alta precisión no es sencilla, 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.


2.2.3 Uso de la sincronización (manejo de cache, comunicaciones en grupo, exclusión mutua, elección transaccional atómica e interbloqueo).


Ø  Memoria Caché 
En los sistemas de archivos convencionales, el fundamento para la memoria caché es la reducción de la E/S de disco (lo que aumenta el rendimiento), en un SAD el objetivo es reducir el tráfico en la red. Esquema Básico, el concepto de memoria caché es sencillo, si los datos necesarios para satisfacer la solicitud de acceso no se encuentran en la memoria cache, se trae una copia de servicio al usuario y los accesos se llevan a cabo con la copia de memoria caché. 

Ø  Exclusión Mutua
La exclusión mutua garantiza que sólo un proceso esté en una región crítica. Mientras que en sistemas distribuidos basa su funcionamiento en variantes de sistemas centralizados. Cuando un proceso distribuido desea entrar a una región crítica debe de enviar la solicitud a todos los demás procesos recibiendo respuestas de todos.



Si otro proceso hace la solicitud al “mismo tiempo” se tomará como criterio de desempate la marca de tiempo o prioridad.



Exclusión mutua en anillo: similar al manejo de redes con topología física y lógica en anillo (TokenRing, TokenBus) teniendo un mensaje especial llamada token para poder entrar a la sección crítica.


Ø  Transacciones atómicas



Un esquema para garantizar la adecuada sincronización de la información en sistemas centralizados como distribuidos son el uso de transacciones.

Las transacciones manejan 4 propiedades básicas: atómicas, consistentes, aisladas y durables (ACID por sus siglas en inglés).


Ø  Interbloqueo



Surge cuando un proceso busca el recurso ocupado por otro proceso y a su vez este proceso busca otro recurso, formado una cadenita que al final se cierra, por lo cual ningún proceso puede avanzar. Se manejan variantes de algoritmos centralizados para tratar de detectar, prevenir y eliminar interbloqueos.


2.3 Nominación.
  

Un nombre es más que una cadena de caracteres. Representa un punto de acceso hacia un objeto.

 La característica principal de un sistema de nombre son:

Ø  No debe de presentar ambigüedades
Ø  Para un momento dado
Ø  Un nombre refiere a uno
Ø  Sólo un recurso en el sistema.




Ejemplo.



/*nom1.c*/
#include<stdio.h>
#include<windows.h>
charnombre []={ " ",null};
int main (int)argc,char *argv[])
{
nombre=argv;

printf("\n el nombre y ruta del proceso es %s",nombre);




2.3.2 Tipos normales (usuarios y de sistemas).

Ø  Los nombres pueden ser absolutos o relativos dependiendo si la dirección a la cual están asociada se realiza de manera directa o bien a partir de la ubicación actual.
Ø  Los nombres pueden tener alias, los cuales son otros nombres con los cuales se referencia al mismo objeto. 
Ø  Los nombres también pueden ser de usuario o de sistema. Son de usuario cuando éste les asocia un identificador a un objeto. Son de sistema aquellos que el sistema operativo le asigna internamente a un objeto de usuario.



2.3.3 Resolución y distribución.

Ø  La resolución es el proceso de convertir un nombre hacia la ubicación real del recurso.
Ø  La distribución es el proceso por el cual un nombre puede difundirse a través de todo el sistema y ser reconocido por cualquier entidad en cualquier momento.


2.3.4 Servidores y agentes de nombres.


Un agente de usuario es una aplicación informática que funciona como cliente en un protocolo de red; el nombre se aplica generalmente para referirse a aquellas aplicaciones que acceden a la World Wide Web. Los agentes de usuario que se conectan a la Web pueden ser desde navegadores web hasta los web crawler de los buscadores, pasando por teléfonos móviles, lectores de pantalla y navegadores en Braille usados por personas con discapacidades.

Cuando un usuario accede a una página web, la aplicación generalmente envía una cadena de texto que identifica al agente de usuario ante el servidor. Este texto forma parte del pedido a través de HTTP, llevando como prefijo User-agent: o User-Agent: y generalmente incluye información como el nombre de la aplicación, la versión, el sistema operativo, y el idioma. Los bots, como los web crawlers, a veces incluyen también una URL o una dirección de correo electrónico para que el administrador del sitio web pueda contactarse con el operador del mismo.

La identificación de agente de usuario es uno de los criterios de exclusión utilizado por el Estándar de exclusión de robots para impedir el acceso a ciertas secciones de un sitio web.

Verificación del agente de usuario
La verificación del agente de usuario —técnica más conocida por su nombre en inglés, user agent sniffing— se refiere a la costumbre de ciertos sitios web de mostrar contenidos diferentes según el agente de usuario; en Internet, esto implica mostrar diferentes contenidos según el navegador web. Un triste ejemplo de esta práctica es Outlook 2003 Web Access, de Microsoft; Internet Explorer tiene acceso a funcionalidades no disponibles si se accede con otro navegador web. La verificación y consecuente discriminación según el agente de usuario es considerada generalmente una mala costumbre, porque implica un diseño diferente para cada situación. Generalmente se les recomienda a los responsables de sitios web que utilizan. 


2.3.5 Mapeo de direcciones.


El mapeo de direcciones corresponde en la relación de equivalencia entre un tipo de nombre a otro tipo de nombre; por ejemplo, de un nombre de usuario a un nombre de sistema.



Para poder ejecutar instrucciones, se debe tener un mecanismo de traducción de direcciones virtuales a reales. Para ello, se necesitan dos cosas.

Primero, el compilador manejará una dirección base más un desplazamiento al referirse a las instrucciones.

Segundo, el sistema operativo asignará como dirección base el número de página, al paginar al proceso.

De esta manera, puede buscarse el inicio de una página en memoria, sumarle el desplazamiento y así obtener la dirección real de una instrucción.



2.3.6 Mapeo de rutas.


El mapeo de direcciones corresponde en la relación de equivalencia entre un tipo de nombre a otro tipo de nombre; por ejemplo, de un nombre de usuario a un nombre de sistema.



Para poder ejecutar instrucciones, se debe tener un mecanismo de traducción de direcciones virtuales a reales. Para ello, se necesitan dos cosas.

Primero, el compilador manejará una dirección base más un desplazamiento al referirse a las instrucciones.

Segundo, el sistema operativo asignará como dirección base el número de página, al paginar al proceso.

De esta manera, puede buscarse el inicio de una página en memoria, sumarle el desplazamiento y así obtener la dirección real de una instrucción.



2.3.7 Modelo de Terry.

Ø  Facilidad centralizada de nombramiento
Ø  Facilidad replegada de nombramiento
Ø  Facilidad descentralizada de nombramiento
Ø  Facilidad distribuida de nombramiento
Ø  Facilidad jerárquica de nombramiento.


A continuación se muestra el caso de ejemplo de un sistema de nombres: el DNS

Ø  DNS se originó para sustituir el viejo esquema de almacenar los nombres de las máquinas en un archivo (/etc./hosts).
Ø  Actualmente existen diversas variantes de DNS como el DDNS o DNS dinámico.
Ø  Procesos como portmap, rmiregistry, orbd y UDDI se les considera servidores de nombres.
Ø  Las operaciones más comunes con los servidores de nombres son la resolución (obtención del nombre real a partir del abstracto) y la resolución inversa (obtención del nombre abstracto a partir del real).
Ø  Se puede utilizar el comando lookup o dig para hacer la resolución de nombres en sistemas DNS.












No hay comentarios:

Publicar un comentario