miércoles, 2 de mayo de 2012

Unidad III. Procesos y Procesadores En Los Sistemas Distribuidos.



3.1 Procesos y procesadores conceptos básicos.
3.2 Hilos y multihilos. 3.3 Modelos de procesadores. 
3.3.1 De estación de trabajo.      
   3.3.2 De pila de procesadores.      
   3.3.3 Híbrido.
3.4 Asignación de procesadores.       
  3.4.1 Modelos y algoritmos con sus aspectos de diseño e implantación. 
3.5 Coplanificación. 
3.6 Tolerancia a fallos. 
3.7 Sistemas distribuidos de tiempo real.






3.1 Procesos y procesadores conceptos básicos.


La forma en que se reparte  el uso de la CPU  entre los procesos tiene un enorme impacto en el rendimiento de un sistema multiprogramado, por lo que siempre se ha prestado una gran  atención a las políticas de planificación que se implementan y se han elaborado multitud de  conceptos relacionados con ello. 


Los procesadores distribuidos se pueden organizar de varias formas:

Ø  v  Modelo de estación de trabajo.
Ø  v  Modelo de la pila de procesadores.
Ø  v  Modelo híbrido.


3.2 Hilos y multihilos.


Ø  v  Threads llamados procesos ligeros o contextos de ejecución.
Ø  v  Típicamente, cada thread controla un único aspecto dentro de un programa.
Ø  v  Todos los threads comparten los mismos recursos, al contrario que los procesos en donde cada uno tiene su propia copia de código y datos (separados unos de otros).

Los sistemas operativos generalmente implementan hilos de dos maneras:

Ø   MULTIHILO APROPIATIVO
    Permite al sistema operativo determinar cuándo debe haber un cambio de contexto.
    La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenómeno conocido como inversión de prioridades y otros problemas.
Ø  MULTIHILO COOPERATIVO

    Depende del mismo hilo abandonar el control cuando llega a un punto de detención, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.


3.3 MODELOS DE PROCESADORES
La historia de los microprocesadores comienza en el año 1971, con el desarrollo por parte de Intel del procesador 4004, para facilitar el diseño de una calculadora.
La época de los PC (Personal Computer), podemos decir que comienza en el año 1978, con la salida al mercado del procesador Intel 8086.

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

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.
Con disco: 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.

3.3.2 MODELO DE PILA DE PROCESADORES
Este modelo basa su funcionamiento en la teoría de colas.
En general este modelo puede reducir significativamente el tiempo de espera al tener una sola cola de procesadores a repartir.
La capacidad de cómputo se puede gestionar de mejor forma si se tiene micros con mayores capacidades.

3.3.3 HÍBRIDO.

Los sistemas híbridos combinan una variedad de buses de instrumentación y plataformas en un sistema. A través de sistemas híbridos, se puede lograr la flexibilidad para combinar los instrumentos independientemente del bus, permitiendo elegir los instrumentos más adecuados para sus necesidades de aplicación.

Características  de los Sistemas Híbridos.

Ø   Combina las mejores características del modelo de estación de trabajo y de pila de procesadores teniendo un mejor desempeño en las búsquedas y mejor uso de los recursos
Ø   Aumento en flexibilidad, los sistemas híbridos proporcionan una longevidad mayor para el sistema de pruebas con la habilidad para usar hardware y software existente, y aún así incorporar nuevas tecnologías con mayor desempeño y menor costo

3.4 ASIGNACIÓN DE PROCESADORES.

Esta estrategia  consiste como su nombre lo indica,  en dedicar un grupo de procesadores a una aplicación mientras dure esta aplicación, de manera que cada hilo de la aplicación se le asigna un procesador.

3.4.1 MODELOS Y ALGORITMOS CON SUS ASPECTOS DE DISEÑO E IMPLANTACIÓN.

Los principales Aspectos son:
Ø   Algoritmos deterministas vs. heurísticos.
Ø   Algoritmos centralizados vs. distribuidos.
Ø   Algoritmos óptimos vs. subóptimos.
Ø   Algoritmos locales vs. globales.
Ø  Algoritmos iniciados por el emisor vs. iniciados por el receptor.
  

3.5 COPLANIFICACiÓN
                                                        
Concepto de coplanificación:

Ø  Toma en cuenta los patrones de comunicación entre los procesos durante la planificación
Ø  Debe garantizar que todos los miembros del grupo se ejecuten al mismo tiempo.
Ø  Cada procesador debe utilizar un algoritmo de planificación ROUND ROBIN.

3.6 TOLERANCIA A FALLOS.

La tolerancia a fallos es un aspecto crítico para aplicaciones a gran escala, ya que aquellas simulaciones que pueden tardar del orden de varios días o semanas para ofrecer resultados deben tener la posibilidad de manejar cierto tipo de fallos del sistema o de alguna tarea de la aplicación.


3.7 SISTEMAS DISTRIBUIDOS DE TIEMPO REAL.

Sistemas distribuidos
Un sistema distribuido está formado por un conjunto de computadores autónomos conectados para conseguir un objetivo común
Ventajas:

Ø   Rendimiento
Ø   Fiabilidad
Ø   Cercanía a los elementos del entorno físico
Ø   Flexibilidad
Ø   Características:
Ø   1. Se activan por evento o por tiempo.
Ø  2. Su comportamiento debe ser predecible.
Ø   3. Debe ser tolerante a fallas.
Ø   4. La comunicación en los sistemas distribuidos de tiempo real debe de ser de alto desempeño.


CLASIFICACIÓN
Ø   Los sistemas de tiempo real se clasifican en general en dos tipos dependiendo de los serio de sus tiempos limites y de las consecuencias de omitir uno de ellos.
Ø  v  Sistema de tiempo real suave: significa que no existe problema si se rebasa un tiempo.
Ø  v  Sistema de tiempo real duro: es aquel en el que un tiempo límite no cumplido puede resultar catastrófico.










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.












martes, 14 de febrero de 2012

Unidad I. Sistemas Operativos En Ambientes Distribuidos



1.1 Sistemas Distribuidos.
  1.1.1 Ventajas Y Desventajas Contra Los Sistemas Centralizados.
     1.1.2 Modelo Cliente - Servidor.
     1.1.3 Características De Hardware.
     1.1.4 Características Del Software.
     1.1.5 Direccionamiento Lógico Y Físico.
1.2 Concepto Y Características De Los  Sistemas Operativos de Red (SOR).
1.3 Concepto Y Características Del Sistemas Operativos Distribuidos (SOD).



1.1 Definición Sistemas Distribuidos.

Un Sistema Distribuido es aquel en donde el Hardware y Software, se comunican mediante el paso de mensajes, donde los ordenadores están conectados en red, estableciendo comunicación mediante un esquema Cliente - Servido (el cual se vera mas adelante). 



                                   
1.1.1 Ventajas Y Desventajas Contra Los Sistemas Centralizados.

Ventajas.
  • Compartir información así como dispositivos periféricos entre más de un usuario.
  • Permiten dividir las cargas de trabajo entre diferentes computadoras de manera más eficaz.
  •  Cuando un nodo de procesamiento falla, el sistema en general sigue funcionando.
  •  Ejecución concurrente de procesos.

Desventajas.
  • No se tiene la experiencia suficiente en el diseño, implantación y uso del software distribuido.
  • Las redes pueden llegar a perder mensajes, latencia de las comunicaciones o saturación de mensajes.
  • Fragilidad que puede sufrir la información que puede llegar a estar disponible para un gran número de usuarios del sistema.







1.1.2 Modelo Cliente - Servidor.



Este modelo reparte las tareas entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes.


  • Cliente es quien hace peticiones a otro programa.
  • Servidor es quien le da respuesta.


A continuación se puede apreciar como se lleva a cabo el modelo Cliente - Servidor.

                                                          



 1.1.3 Características De Hardware.
  • Redes 
  • Hardware
  • Sistemas Operativos
  • Middleware


                                 




1.1.4 Características Del Software.

Existen varias características del Software pero se podría decir que las características que mas resaltan son  esenciales:

  1. El número de flujo de instrucciones 
  2. Número de flujos de datos.
Después son estas características.
  1. Aplicaciones generales de productividad en oficinas.
  2. Aplicaciones que utilizan una interfaz gráfica de usuario (GUI) para permitir al usuario seleccionar las tablas y columnas cuyos datos desea ver.
  3. Aplicaciones que utilizan instrucciones del lenguaje general para determinar los datos que el usuario desea ver.
  4. Aplicaciones de la línea de negocios que almacenan sus datos en bases de datos SQL Server. Estas aplicaciones pueden incluir aplicaciones de otros proveedores o escritas internamente.
  5. Sistemas de bases de datos distribuidos desde los que se replican datos SQL Server en varias bases de datos o se ejecutan consultas distribuidas.
  6. Almacenamientos de datos en los que los datos se extraen de los sistemas de procesamiento de transacciones en línea (OLTP) y se resumen para el análisis dirigido a la toma de decisiones.







1.1.5 Direccionamiento Lógico Y Físico.

Se le llama dirección lógica a una dirección generada por la CPU. Mientras que al cambio a la que es vista por la  unidad de memoria se denomina dirección física. Proceso por el cual los datos son incorporados al ordenador hasta que sean transmitidos al medio este proceso es llamado encapsulación. Estos datos son formateados, segmentados, identificados con el direccionamiento lógico y físico para finalmente ser enviados al medio. 









1.2 Concepto Y Características De Los  Sistemas Operativos de Red (SOR).

Concepto SOR.

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 sistemas informático con otros equipos en el ámbito de una red.


Características.



Colección de sistemas operativos locales, acompañado de servidores de impresión, de archivos, etc., conectados por medio de una red.

Se ejecutan como funciones locales autónomas a la administración de dispositivos, de procesos, de entradas y salidas, de archivos y recursos en general.





1.3 Concepto Y Características Del Sistemas Operativos Distribuidos (SOD).

Concepto SOD.

Los sistemas operativos distribuidos desempeñan las mismas funciones que un sistema operativo normal,  con la diferencia de trabajar en un entorno distribuido. Facilita el acceso y la gestión de los recursos distribuidos en la red.Donde los usuarios pueden acceder a recursos remotos de la misma forma que lo hacen para los recursos locales. 

Los sistemas distribuidos deben de ser muy confiables y estables ya que si un componente del sistema se descompone otro componente debe de ser capaz de reemplazarlo inmediatamente y no afectar los procesos del sistema.


Características.


Los sistemas operativos distribuidos están basados en las ideas básicas:

  • Transparencia.
  • Eficiencia.
  • Flexibilidad.
  • Escalabilidad.



Existen dos esquemas básicos: Los Fuertemente Acoplados y los débiles.

  • Un sistema fuertemente acoplado es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. 
  • Un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.