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