martes, 12 de julio de 2011

UNIDAD 1 Los sistemas operativos en ambientes distribuidos.

UNIDAD 1 LOS SISTEMAS OPERATIVOS EN AMBIENTES DISTRIBUIDOS.


1.1 Sistemas Distribuidos

Definición:
Un sistema distribuido es una colección de computadoras independientes; es decir autónomas, que aparecen ante los usuarios del sistema como una única computadora. Esta definición tiene dos aspectos:
Ø  Hardware: las maquinas son autónomas
Ø  Software: los usuarios piensan que el sistema es como una única computadora.
 
Algunos ejemplos que se pueden mencionar acerca de los sistemas operativos distribuidos son:
Ø  Una red de estaciones de trabajo en un departamento de una universidad o compañía, donde además de cada estación personal, podría existir una pila de procesadores en el cuarto de máquinas, que no esté asignado a usuarios específicos sino que se utilicen de manera dinámica cuando sea necesario.
Ø  Una fábrica de robots, donde los robots actúan como dispositivos periféricos unidos a la misma computadora central.
Ø  Un banco con muchas sucursales por el mundo, cada oficina tiene una computadora maestra para guardar las cuentas locales y el manejo de las transacciones locales, la cuál se puede comunicar con cualquier computadora de la red. Las transacciones hechas se realizan sin importar dónde se encuentre la cuenta o el cliente.


1.1.1 Ventajas Desventajas contra Sistemas Centralizados

Ø  Economía: es la razón número uno de la tendencia hacia los sistemas distribuidos ya que estos sistemas tienen en potencia una proporción precio/desempeño mucho mejor que la de un sistema centralizado.
Ø  Velocidad: un sistema distribuido puede tener mayor poder de cómputo que una mainframe.
Ø  Distribución inherente: otra razón para la construcción de un sistema distribuido es que ciertas aplicaciones son distribuidas en forma inherente; es decir, algunas aplicaciones utilizan máquinas que están separadas a cierta distancia.
Ø  Confiabilidad: un sistema distribuido ofrece mayor confiabilidad: al distribuir la carga de trabajo en muchas máquinas, la falla de un circuito descompondrá a lo más una máquina y el resto seguirá intacto.
Ø  Crecimiento por incrementos: si se necesita añadir poder de cómputo a la compañía, con un sistema distribuido, podrían añadirse sólo más procesadores al sistema, lo que permite un desarrollo gradual conforme surjan las necesidades.

Ventajas de los sistemas distribuidos con respecto de las PC independientes
Ø  Datos compartidos: Un sistema distribuido permite que varios usuarios tengan acceso a una base de datos común.
Ø  Dispositivos compartidos: De igual manera, se pueden compartir periféricos entre diversos usuarios como puede ser una impresora.
Ø  Comunicación: un sistema distribuido facilita la comunicación entre computadoras aisladas con el e-mail, por ejemplo.
Ø  Flexibilidad: Un sistema distribuido difunde la carga de trabajo entre las máquinas disponibles en la forma más eficaz en cuanto a los costos.
Desventajas de los sistemas distribuidos
Ø  Software: No hay mucha experiencia en el diseño, implantación y uso del software distribuido, además existe poco software para los sistemas distribuidos en la actualidad.
Ø  Redes: Una vez que el sistema llega a depender de la red, la pérdida o saturación de ésta puede negar algunas de las ventajas que el sistema distribuido debía conseguir.
Ø  Seguridad: si las personas pueden tener acceso a los datos en todo el sistema, entonces también pueden tener acceso a datos con los que no tienen nada que ver.


1.1.2 Modelo Cliente Servidor
El modelo cliente-servidor de un sistema distribuido es el modelo más conocido y más ampliamente adoptado en la actualidad. Hay un conjunto de procesos servidores, cada uno actuando como un gestor de recursos para una colección de recursos de un tipo, y una colección de procesos clientes, cada uno llevando a cabo.

Una tarea que requiere acceso a algunos recursos hardware y software compartidos. Los gestores de recursos a su vez podrían necesitar acceder a recursos compartidos manejados por otros procesos, así que algunos procesos son ambos clientes y servidores. En el modelo, cliente-servidor, todos los recursos compartidos son mantenidos y manejados por los procesos servidores. Los procesos clientes realizan peticiones a los servidores cuando necesitan acceder a algún recurso. Si la petición es valida, entonces el servidor lleva a cabo la acción requerida y envía una respuesta al proceso cliente.
El termino proceso se usa aquí en el sentido clásico de los sistemas operativos. Un proceso es un programa en ejecución. Consiste en un entorno de ejecución con al menos un thread de control.
El modelo cliente-servidor nos da un enfoque efectivo y de propósito general para la compartición de información y de recursos en los sistemas distribuidos. El modelo puede ser implementado en una gran variedad de entornos software y hardware. Las computadoras que ejecuten los programas clientes y servidores pueden ser de muchos tipos y no existe la necesidad de distinguir entre ellas; los procesos cliente y servidor pueden incluso residir en la misma maquina.
En esta visión simple del modelo cliente-servidor, cada proceso servidor podría ser visto como un proveedor centralizado de los recursos que maneja. La provisión de recursos centralizada no es deseable en los sistemas distribuidos. Es por esta razón
Por lo que se hace una distinción entre los servicios proporcionados a los clientes y los servidores encargados de proveer dichos servicios. Se considera un servicio como una entidad abstracta que puede ser provista por varios procesos servidores ejecutándose en computadoras separadas y cooperando vía red.
El modelo cliente-servidor se ha extendido y utilizado en los sistemas actuales con servicios manejando muchos diferentes tipos de recursos compartidos - correo electrónico y mensajes de noticias, ficheros, sincronización de relojes, almacenamiento en disco, impresoras, comunicaciones de área extensa, e incluso las interfaces gráficas de usuario. Pero no es posible que todos los recursos que existen en un sistema distribuido sean manejados y compartidos de esta manera; algunos tipos de recursos deben permanecer locales a cada computadora de cara a una mayor eficiencia - RAM, procesador, interfaz de red local. Estos recursos clave son manejados separadamente por un sistema operativo en cada maquina; solo podrían ser compartidos entre procesos localizados en el mismo ordenador.
Aunque el modelo cliente-servidor no satisface todos los requisitos necesarios para todas las aplicaciones distribuidos, es adecuado para muchas de las aplicaciones actuales y provee una base efectiva para los sistemas operativos distribuidos de propósito general.


1.1.3 Características Hardware Sistemas Distribuidos
Con el paso de los años, se han propuesto diversos esquemas de clasificación para los sistemas de cómputo con varios CPU, pero ninguno de ellos ha tenido un éxito completo ni se ha adoptado de manera amplia. A continuación se muestra la taxonomía presentada por Flynn (1972) que considera dos características esenciales:
El número de flujo de instrucciones
Número de flujos de datos.
SISD (Single Instruction, Single Data): Una computadora con un flujo de instrucciones y uno de datos. Todas las computadoras tradicionales de un procesador caen dentro de esta categoría.
SIMD (Single Instruction, Multiple Data): Un flujo de Instrucciones y varios flujos de datos. Este tipo se refiere a ordenar procesadores con unidad de instrucción que busca una instrucción y después instruye a varias unidades de datos para que la lleven a cabo en paralelo, cada una con sus propios datos.
MISD (Multiple Instruction, Single Data): Un flujo de varias instrucciones y un flujo de datos. Ninguna computadora conocida se ajusta a este modelo.
MIMD (Multiple Instruction, Multiple Data): Un grupo de computadoras independientes, cada una con su propio contador del programa y datos. Todos los sistemas distribuidos son MIMD.
Las computadoras MIMD se clasifican en dos grupos aquellas que tienen memoria compartida, que por lo general se llaman multiprocesadores y aquellas que no, que a veces reciben el nombre de multicomputadoras. La diferencia esencial es ésta: en un multiprocesador, existe un espacio de direcciones virtuales, compartido por todos los CPU. En contraste, en una multicomputadora, cada máquina tiene su propia memoria.
Cada una de estas categorías se puede subdividir, con base en la arquitectura de la red de interconexión: con bus y con conmutador. En la primera queremos indicar que existe una red, plana de base, bus, cable u otro medio que conecta todas las máquinas. Los sistemas con conmutador no tienen sólo una columna vertebral como en la televisión por cable, sino que tienen cables individuales de una máquina a otra y utilizan varios patrones diferentes de cableado.
Otra dimensión de la taxonomía es que, en ciertos sistemas, las máquinas están fuertemente acopladas y en otras están débilmente acopladas. En un sistema fuertemente acoplado, el retraso que se experimenta al enviar un mensaje de una computadora a otra es corto y la tasa de transmisión de los datos, es decir, el número de bits por segundo que se puede transferir, es alta. En un sistema débilmente acoplado ocurre lo contrario: el retraso de los mensajes entre las máquinas es grande y la tasa de transmisión de los datos es baja. Los sistemas fuertemente acoplados tienden a utilizarse como sistemas distribuidos aunque esto no siempre es cierto.

1.1.4 Características Software Sistemas Distribuidos
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: 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.
 Los fuertemente acoplados: En el software fuertemente acoplado el programa de aplicación y el sistema operativo necesario para soportarlo, están muy acoplados.

1.1.5 Direccionamiento Lógico- Físico Sistemas Distribuidos
Una dirección generada por la CPU se denomina dirección lógica en cambio a la que es percibida por unidad de memoria se denomina dirección física.
Los esquemas de vinculación de direcciones durante la compilación y durante la carga dan pie a un entorno en el que las direcciones lógicas y físicas son las mismas. En cambio, la ejecución del esquema de vinculación de direcciones durante la ejecución produce un entorno en el que las direcciones lógicas y físicas difieren. En este caso la dirección lógica suele llamarse dirección virtual.
Direccionamiento lógico y físico El proceso desde que los datos son incorporados al ordenados hasta que se transmiten al medio se llama encapsulación. Estos datos son formateados, segmentados, identificados con el direccionamiento lógico y físico para finalmente ser enviados al medio. A cada capa del modelo OSI le corresponde una PDU (Unidad de Datos) siguiendo por lo tanto el siguiente orden de encapsulamiento: 
v  DATOS
v  SEGMENTOS
v  PAQUETES
v  TRAMAS-BITS 
v  CAPA TRANSMITE
v  APLICACIÓN DATOS
v  PRESENTACIÓN 
v  SESIÓN 
v  TRANSPORTE SEGMENTOS
v  RED PAQUETES
v  ENLACE DE DATOS TRAMAS
v  FÍSICA BITS
Debido a que posiblemente la cantidad de los datos sean demasiados, la capa de transporte desde de origen, se encarga de segmentarlos para así ser empaquetados debidamente, esta misma capa en el destino se encargara de reensamblar los datos y colocarlos en forma secuencial, ya que no siempre llegan a su destino en el orden en que han sido segmentados, así mismo acorde al protocolo que se este utilizando habrá corrección de errores. Estos segmentos son empaquetados (paquetes o datagramas) e identificados en la capa de red con la dirección lógica o IP correspondiente al origen y destino. Ocurre lo mismo con la dirección MAC en la capa de enlace de datos formándose las tramas o frames para ser transmitidos a través de alguna interfaz.

1.2 Concepto Características Sor
Son aquellos sistemas que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.
El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red mas ampliamente usados son: Linux,Novell Netware, Personal Netware, LAN Manager, Windows NT Server UNIX.
Una posibilidad es el software débilmente acoplado en hardware débilmente acoplado: Es una solución muy utilizada. Ej.: una red de estaciones de trabajo conectadas mediante una LAN. Cada usuario tiene una estación de trabajo para su uso exclusivo: Tiene su propio S. O. La mayoría de los requerimientos se resuelven localmente. Es posible que un usuario se conecte de manera remota con otra estación de trabajo: Mediante un comando de “login remoto”. Se convierte la propia estación de trabajo del usuario en una terminal remota enlazada con la máquina remota. Los comandos se envían a la máquina remota. La salida de la máquina remota se exhibe en la pantalla local. Para alternar con otra máquina remota, primero hay que desconectarse de la primera: En cualquier instante solo se puede utilizar una máquina. Las redes también disponen de un comando de copiado remoto de archivos de una máquina a otra: Requiere que el usuario conozca: La posición de todos los archivos. El sitio donde se ejecutan todos los comandos. Una mejor solución consiste en un sistema de archivos global compartido, accesible desde todas las estaciones de trabajo: Una o varias máquinas soportan al sistema de archivos: Son los “servidores de archivos”. Los “servidores de archivos”: Aceptan solicitudes de los programas de usuarios: Los programas se ejecutan en las máquinas no servidoras, llamadas “clientes”. Las solicitudes se examinan, se ejecutan y la respuesta se envía de regreso. Generalmente tienen un sistema jerárquico de archivos. Las estaciones de trabajo pueden importar o montar estos sistemas de archivos: Se incrementan sus sistemas de archivos locales. Se pueden montar los servidores en lugares diferentes de sus respectivos sistemas de archivos: Las rutas de acceso a un determinado archivo pueden ser diferentes para las distintas estaciones. Los distintos clientes tienen un punto de vista distinto del sistema de archivos. El nombre de un archivo depende: Del lugar desde el cual se tiene acceso a él. De la configuración del sistema de archivos. El S. O. de este tipo de ambiente debe: Controlar las estaciones de trabajo en lo individual. Controlar a los servidores de archivo. Encargarse de la comunicación entre los servidores. Todas las máquinas pueden ejecutar el mismo S. O., pero esto no es necesario. Si los clientes y los servidores ejecutan diversos S. O., como mínimo deben coincidir en el formato y significado de todos los mensajes que podrían intercambiar. Esquemas como este se denominan “sistema operativo de red”: Cada máquina tiene un alto grado de autonomía. Existen pocos requisitos a lo largo de todo el sistema.

1.3 Concepto Características del Sod
A continuación se analiza en forma breve algunos de los aspectos claves del diseño con los que deben trabajar las personas que piensan construir un sistema operativo distribuido:
Transparencia
Diseñar el sistema de forma que todas las personas piensen que la colección de máquinas es tan sólo un sistema de tiempo compartido, de un procesador, a la manera antigua.
La transparencia se puede lograr en dos niveles distintos. Lo más fácil es ocultar la distribución a los usuarios, aunque también es posible hacer que el sistema sea transparente para los programas.
Los distintos tipos de transparencia en un sistema distribuido son:
·         Transparencia de localización: los usuarios no pueden indicar la localización de los recursos.
·         Transparencia de migración: los recursos se pueden mover a voluntad sin cambiar sus nombres.
·         Transparencia de réplica: los usuarios no pueden indicar el número de copias existentes.
·         Transparencia de concurrencia: varios usuarios pueden compartir recursos de manera automática.
·         Transparencia de paralelismo: las actividades pueden ocurrir en paralelo sin el conocimiento de los usuarios.
Flexibilidad
El diseño de un sistema distribuido debe hacerse con la idea de facilitar los cambios futuros. A este respecto, los micros núcleos son superiores a los núcleos monolíticos.
Confiabilidad
Uno de los objetivos originales de la construcción de sistemas distribuidos fue el hacerlos más confiables que los sistemas con un procesador. La idea es que si una máquina falla, alguna otra máquina se encargue del trabajo. En otras palabras, en teoría, la confiabilidad global del sistema podría ser el OrBooleano de la confiabilidad de los componentes.
Un aspecto importante dentro de la confiabilidad es la disponibilidad que se refiere a la fracción de tiempo en que se puede utilizar el sistema.
Otro aspecto de la confiabilidad general es la seguridad. Los archivos y otros recursos deben ser protegidos contra el uso no autorizado.
También otro aspecto de la confiabilidad es la tolerancia de fallas. Los sistemas distribuidos se deben diseñar de forma que escondan las fallas; es decir, ocultarlo a los usuarios.
Desempeño
Cuando se ejecuta una aplicación en un sistema distribuido, no debe parecer peor que su ejecución en un procesador. Se pueden utilizar diversas métricas de desempeño. El tiempo de respuesta es una, pero también lo son el rendimiento, uso del sistema y cantidad consumida de la capacidad de la red. Además es frecuente que el resultado de cualquier parámetro dependa de la naturaleza de éste.
Escalabilidad
Los sistemas distribuidos operan de manera efectiva y eficiente a muchas escalas diferentes. La escala más pequeña consiste en dos estaciones de trabajo y un servidor de ficheros, mientras que un sistema distribuido construido alrededor de una red de área local simple podría contener varios cientos de estaciones de trabajo, varios servidores de ficheros, servidores de impresión y otros servidores de propósito específico. A menudo se conectan varias redes de área local para formar internetworks, y éstas podrían contener muchos miles de ordenadores que forman un único sistema distribuido, permitiendo que los recursos sean compartidos entre todos ellos.
Tanto el software de sistema como el de aplicación no deberían cambiar cuando la escala del sistema se incrementa. La necesidad de escalabilidad no es solo un problema de prestaciones de red o de hardware, sino que esta íntimamente ligada con todos los aspectos del diseño de los sistemas distribuidos. El diseño del sistema debe reconocer explícitamente la necesidad de escalabilidad o de lo contrario aparecerán serias limitaciones.
La demanda de escalabilidad en los sistemas distribuidos ha conducido a una filosofía de diseño en que cualquier recurso simple -hardware o software- puede extenderse para proporcionar servicio a tantos usuarios como se quiera. Esto es, si la demanda de un recurso crece, debería ser posible extender el sistema para darla servicio. Por ejemplo, la frecuencia con la que se accede a los ficheros crece cuando 
Se incrementa el número de usuarios y estaciones de trabajo en un sistema distribuido. Entonces, debe ser posible añadir ordenadores servidores para evitar el cuello de botella que se produciría si un solo servidor de ficheros tuviera que manejar todas las peticiones de acceso a los ficheros. En este caso el sistema deberá estar diseñado de manera que permita trabajar con ficheros replicados en distintos servidores, con las consideraciones de consistencias que ello conlleva.
Cuando el tamaño y complejidad de las redes de ordenadores crece, es un objetivo primordial diseñar software de sistema distribuido que seguirá siendo eficiente y útil con esas nuevas configuraciones de la red. Resumiendo, el trabajo necesario para procesar una petición simple para acceder a un recurso compartido debería ser prácticamente independiente del tamaño de la red. Las técnicas necesarias para conseguir estos objetivos incluyen el uso de datos replicados, la técnica asociada de caching, y el uso de múltiples servidores para manejar ciertas tareas, aprovechando la concurrencia para permitir una mayor productividad.
Estructuración
La estructuración de un sistema Operativo define como están organizadas sus partes y que comúnmente especifican el funcionamiento del mismo.
En Sistemas Distribuidos Utilizan normalmente los siguientes métodos tradicionales de estructuración de un Sistema Operativo.
Núcleo Monolítico: Es el método tradicional de estructurar Sistemas Operativos, esto se lleva a cabo a través de un gran núcleo monolítico que contiene todas las funciones y servicios provistos por el Sistema Operativo. Existen casos entre los Sistemas Distribuidos donde el uso de un bloque monolítico grande no es de mucha utilidad para los servicios ofrecidos por el Sistema Operativo (Estaciones sin disco, estaciones con medios locales de almacenamiento, estaciones con procesadores matemáticos específicos, etc.).
Núcleo Colectivo: En esta estructura se tiene una colección de procesos que son ampliamente independientes unos de otros. Los servicios del Sistema Operativo (Administración de memoria distribuida, sistemas de archivos distribuidos, sincronización distribuida, procesos RPC, administración de tiempos, etc.) son implementados como procesos independientes. El núcleo del Sistema Operativo (Comúnmente llamado Microkernel) soporta la interacción entre los procesos que proveen los servicios al Sistema Operativo, también provee los servicios típicamente esenciales para cada computadora tal como la administración de tareas. El microkernel se ejecuta en todas las computadoras del sistema, mientras que los otros procesos pueden o no correr según se requiera.
Sistema Orientado a Objetos: Estos sistemas son estructurados utilizando el concepto de objetos, donde cada uno de los servicios es implementado como un objeto del sistema y que en términos de un ambiente de objeto, se le conoce como colección. Cada objeto encapsula una estructura de datos y define un conjunto de operaciones para ese objeto, de manera que cada uno de estos objetos corresponden a un tipo definido, por ejemplo: Objetos de procesos, directorios o archivos. Este modelo se puede cambiar con la estructura colectiva y las técnicas de separación de funciones y mecanismos. 






















1 comentario: