You are on page 1of 9

2011

Sistemas Operativos I Juan Antonio Nez Pomposo

[SISTEMAS DISTRIBUIDOS]
Breve ensayo

Remontndonos un poco al pasado, recordamos que finales de los aos 50 los ordenadores comenzaron a ser comercialmente disponibles pero eran muy caros adems de que no se aprovechaban del todo. El problema se solucion con la aparicin de computadoras multiusuario, pero no eran muy accesibles para el pblico en general hasta la aparicin en los 80 s de las PC, este tipo de mquinas tenan la ventaja de tener un precio accesible, pero era un poco difcil acceder a recursos de alta calidad y/o especializados, lo que minaba en su productividad. La solucin a este problema vino de la mano con la aparicin de redes de alta velocidad, en las que se podan interconectar computadoras de todo tipo, ya sea grandes, pequeas, especializadas o de uso general mediante una red de comunicaciones lo cual permiti compartir y aprovechar recursos. Con esta unin entre PC y LAN s nacieron los sistemas de red, donde los usuarios pueden hacer uso de los recursos que les ofrece la red de ordenadores donde slo necesitan saber con qu recursos cuanta cada mquina para saber dnde buscar cuando lo necesiten. El siguiente paso fueron los sistemas distribuidos, donde los usuarios pueden saber que hay un universo de mquinas conectadas, pero no es necesario que conozcan todas explcitamente. Las PC que forman el sistema distribuido slo saben que hay recursos por toda la red de los cuales conocen su nombre o identificador, y acceden a ellos del mismo modo que accederan a un recurso local, sin tener que conectarse explcitamente a la mquina propietaria para utilizar tal recurso. Es aqu donde podemos definir el concepto que diferencia los sistemas de red de los sistemas distribuidos, este concepto es la transparencia. En el sistema distribuido la composicin y estructura de la red pasa desapercibida por el usuario, es decir no la ve ni le importa; slo le importan los recursos disponibles o el tipo de recursos disponibles, sin tener en cuenta en qu mquina estn realmente ubicados. La idea de los sistemas distribuidos ya tiene mucho tiempo, pero an se encuentra en completo desarrollo y por lo mismo hay distintas ideas y concepciones de o que debe de ser un sistema distribuido. A continuacin citar algunas definiciones populares. Lamport: Un sistema distribuido es aquel que deja de funcional cuando se estropea una mquina de la que ni siquiera habamos odo hablar Tanenbaum: Se trata de un conjunto de ordenadores independientes e intercomunicados entre s por una red y provistos de software distribuido tal que el usuario lo percibe como si fuera un nico ordenador Al final podemos deducir que lo importante de un sistema distribuido es el compartimiento fcil y eficiente de recursos entre mltiples usuarios, donde cada usuario ve al sistema como un todo. Un sistema distribuido puede verse como un sistema formado por varios ordenadores haciendo algo conjuntamente, dando tres caractersticas inmediatas:

Compuesto por mltiples ordenadores. Un sistema distribuido est constituido por ms de un sistema independiente, cada uno como una o ms CPU, memoria local, memoria secundaria y en general conexiones con perifricos de acceso inmediato. Hay interconexin entre ellos. Es claro que si varios ordenadores distintos van a interactuar entre s para llevar a cabo una tarea, tienen que estar conectados de alguna forma. Tiene unestado compartido. Si las computadoras realizan un trabajo conjuntamente, deben mantener un estado compartido, es decir, todas las computadoras tienen la misma visin del estado del sistema distribuido

Pero, para construir un sistema distribuido que se comporte como se supone que esperan los usuarios, se requiere considerar 2 caractersticas muy importantes: Consistencia y transparencia. La consistencia es una necesidad imperativa, pues sin ella el sistema no funcionara, la transparencia si bien es algo que caracteriza a los sistemas distribuidos, su ausencia no impide que el sistema funcione, no obstante es algo deseable, pues entre ms transparente es un sistema distribuido, ms se le puede considerar con tal. En los sistemas distribuidos el problema de la inconsistencia cobra mayor dimensin, tanto por la importancia como por la cantidad de situaciones en las que pueden producirse problemas, pues un sistema distribuido es un nico sistema formado por mltiples mquinas independientes. Ya que es un nico sistema, tiene que tener un nico estado global compartido por todos los equipos que lo componen. Este estado global se refiere a tablas de mantenimiento del sistema, la hora actual, o datos que estn compartidos por procesos en distintas mquinas, etc. Con las consideraciones anteriores un sistema distribuido puede producir inconsistencias de los siguientes tipos.      Inconsistencia de actualizacin Inconsistencia de replicacin Inconsistencia de cach Inconsistencia de reloj Inconsistencia de interfaz de usuario

La inconsistencia de actualizacin se puede producir cuando varios procesos acceden concurrentemente a un dato para actualizarlo, puesto que la actualizacin de todo el dato no se realiza como una nica operacin atmica en exclusin mutua. En un sistema distribuido es una inconsistencia muy importante por la cantidad de usuarios que estos sistemas llegan a tener, puesto que de hecho la propia gestin del sistema distribuido depende de datos de control del sistema operativo en cada equipo de la red. Esta inconsistencia se evita utilizando transacciones, que son primitivas equivalentes a la entrada y salida de la regin crtica que se utilizan para proteger la consistencia de un dato compartido.

Adems asegura que las operaciones incluidas en la transaccin o se ejecutan todas o no se efecta ninguna. En la inconsistencia de rplica puede presentarse debido a que un conjunto de datos deba mantenerse replicado en diferentes computadoras, pudiendo lgicamente ser modificados en cualquiera de ellas y por consiguiente tales datos no sean iguales en todas las mquinas al mismo tiempo. Para evitar esta inconsistencia se utiliza el multicast que consiste en el envo inmediato de una modificacin a todas las mquinas, para que todas tengan la misma versin de los datos. Por otro lado, hablamos de la inconsistencia de cach cuando se da el siguiente caso: Como sabemos, las mquinas guardan copias de ciertos archivos a los que acceden con frecuencia en la memoria cach local, para no tener que hacer toda la transferencia por toda la red varias veces, el problema surge cuando otra mquina actualiza un archivo que tambin reside en las memorias cach de otras mquinas. En ese momento decimos que las copias en cach que se encuentran en otras mquinas son anticuadas. Para manejar este problema, se suele usar la gestin de memoria en los sistemas operativos distribuidos y en las arquitecturas de sistemas multiprocesadores. La inconsistencia de reloj resulta de la dificultad de mantener la misma hora en todo el sistema, esto es importante puesto que ciertas aplicaciones necesitan informacin de cuando se han producido ciertos eventos. En los sistemas distribuidos una computadora puede mandar una marca de hora, pero dicha marca no llega al mismo tiempo a las dems mquinas, pues el mismo transporte por la red lleva un tiempo y no es el mismo para todas las mquinas, dando como resultado no tener la misma hora fsica en todas las computadoras que conforman el sistema distribuido. Las soluciones ms empleadas son la utilizacin de relojes fsicos y lgicos para controlar la sincronizacin de los relojes locales de cada mquina y de la exclusin mutua, eleccin de coordinador y el consenso distribuido para la coordinacin en las tareas que llevan a cabo los equipos que forman el sistema distribuido. Finalmente, la inconsistencia de interfaz de usuario, la podemos definir como el tiempo de espera, entre cuando un cliente da una orden y ver el efecto de tal orden en la pantalla del usuario. Es claro que al dar una orden hay un proceso que se debe cumplir, pero este tiempo de procesamiento no puede ser muy grande, puesto que entonces lo tecleado o pulsado por el usuario no ser congruente con lo que aparezca en pantalla. Una vez que se ha definido los aspectos importantes de lo que es la consistencia en un sistema distribuido, es turno de hablar sobre la transparencia. Podemos hablar sobre la transparencia en un sistema distribuido como una coleccin de caractersticas que se deben cumplir para que dicho sistema se comporte como esperan los usuarios, estas caractersticas son:      Compartimiento de recursos Sistema abierto Escalabilidad Tolerancia a fallos Seguridad

Un sistema que rena las caractersticas dichas anteriormente, puede ser considerado un sistema transparente, es decir ser un sistema que va a comportarse de manera ideal sin que el usuario perciba en ningn momento los posibles y normales problemas que pueden producirse en el sistema. Debe quedar claro que estas caractersticas solamente deben considerarse como deseables, pero no son indispensables para considerar un sistema distribuido como tal, de tal modo podemos decir que un sistema es distribuido en menor o mayor medida dependiendo de cuantas caractersticas rena. Cuando hablamos del compartimiento de recursos, la palabra recurso puede sonar abstracta pero es lo que mejor caracteriza al conjunto de cosas que se pueden compartir en un sistema distribuido, pues dentro de este conjunto encontramos desde hardware hasta entidades definidas dentro del software. El compartir recursos es beneficioso desde el punto de vista econmico, pero lo es mucho ms desde el punto de vista lgico, pues permite el trabajo cooperativo que antes no era posible en sistemas independientes. En las mquinas que conforman un sistema distribuido, como hemos dicho podemos encontrar recursos, cada mquina tiene cierto nmero y tipo de recursos, pero no se pueden compartir as nada ms, es por eso que cada mquina que tiene un recurso en concreto que compartir lo rodea de un gestor de recursos o servidor, de tal manera que el gestor se encargar de atender y gestionar las peticiones de uso de tal recurso y de este modo hacer ms homognea una interfaz para posibles sistemas dispares que hagan uso de l. De esta manera el esquema ms utilizado para compartir recursos es el de cliente servidor; en este esquema necesitamos dos entes, el servido que ya hemos descrito y un cliente, que es un proceso que puede originarse en la computadora local o en una mquina externa. El funcionamiento es muy simple, un cliente hace una peticin al servidor, el cual llama a los procedimientos indicados por el servicio, el trabajo se realiza de alguna manera y se obtienen los resultados. Es necesario recalcar dos cosas:  1.- Un servidor no es igual a un servicio, un servidor es un proceso que se ejecuta en alguna mquina y que ayuda a implementar el servicio de un recurso. Un servicio de un recurso concreto es la especificacin de las operaciones que ofrece ese recurso a los clientes potenciales, es decir, describe las primitivas disponibles, los parmetros que utiliza y las acciones que lleva a cabo. 2.- Las computadoras que forman un sistema distribuido no son ni clientes ni servidores, simplemente tienen recursos que comparten con otros. Son los procesos dentro de estas computadoras los que pueden comportarse como clientes o servidores dependiendo si en algn momento estn ofreciendo o utilizando recursos.

Un sistema distribuido se puede decir que es abierto si puede ampliarse fcilmente y sin dependencias de su constructor o diseador original. Existen dos maneras en las que podemos hablar sobre los sistemas abiertos, ya sea respecto a hardware que quiere decir que se puede agregar cualquier perifrico o componente (compatible con la arquitectura base) sin que los componentes aadidos tengan que ser del constructor original, o respecto a software que significa que se puede aadir o substituir programas o componentes de software de manera fcil e

igualmente sin que dichos programas vengan del fabricante original. Esto se consigue haciendo pblicas las interfaces de comunicacin, tanto las de hardware como las de software. Al hablar sobre escalabilidad nos referimos a la capacidad de un sistema de crecer sin mayores dificultades, puesto que un sistema distribuido puede ser diseado de cierto tamao para alguna empresa pequea, por ejemplo, pero si esta empresa crece as mismo lo debe hacer su sistema, pero hay problemas que apareceran inmediatamente, del lado del hardware, la imposibilidad de aadir ms equipos por el bajo dimensionamiento en las direcciones y por el lado del software la prdida de prestaciones por la sobre centralizacin de datos y algoritmos. Un sistema distribuido debe ser fcilmente ampliable, sin que para ello los usuarios deban modificar su protocolo de comunicacin ni la eficiencia del sistema se vea afectada. Los problemas mencionados anteriormente se pueden solucionar respecto al hardware utilizando el sobre dimensionamiento de direcciones posibles o utilizando tcnicas de cdigo de operacin con extensin. Respecto al software se recomienda huir a la centralizacin, utilizando la replicacin de datos para evitar cuellos de botella y tambin descentralizando algoritmos. La tolerancia a fallos es un aspecto muy importante en los sistemas distribuidos y en general en cualquier sistema, pues los fallos son cosas hasta cierto punto normales. Estos fallos pueden ser debidos a hardware o a software, si el error es por hardware simplemente se detiene la ejecucin del sistema completo, pero si es fallo de software, el sistema tiene un comportamiento indefinido, podra detenerse, pero en caso de no hacerlo lo ms probable es que continepero dando resultados errneos. Para evitar estas situaciones los sistemas deben ser tolerantes a fallos, lo cual implica redundancia de hardware por una parte y por otra la posibilidad de que los programas se recuperen al detectar un fallo. La redundancia de hardware consiste en tener cada componente del sistema distribuido duplicado, para que al haber un fallo los componentes de reserva entren a suplir el trabajo de los componentes que dejaron de funcionar, esta idea aunque trivial resulta muy cara y va en contra de la poltica de economa de los sistemas distribuidos; una solucin para esta idea puede ser no slo tener los equipos replicados como reserva, sino utilizarlos en tareas no crticas del sistema, pero que cuando se presente un fallo, dejen su tarea para substituir a los componentes que tienen el fallo. Por otro lado, la recuperacin de datos por parte de programas que han fallado, tambin conocido como rollback, consiste en la capacidad que deberan tener los programas para mostrar la ltima versin consistente de los datos previa a que ocurra un fallo. En la prctica habitual tanto los sistemas centralizados como los distribuidos tienen problemas para ofrecer una buena seguridad. Por un lado un sistema centralizado tiene un nico dominio de seguridad bajo un nico administrador, lo cual parece ms fcil de proteger, pero en caso de que un intruso consiguiera entrar al sistema, tendra acceso a prcticamente a toda la informacin que reside en l. Con los sistemas distribuidos la cuestin de la seguridad es ms delicada iniciando porque las interconexiones fsicas entre los equipos por si mismas no son seguras y ofrecen una va de acceso ilegal mucho ms fcil.

As que son necesarios diversos mecanismos para proteger al sistema de estos accesos indebidos as tambin una poltica clara de utilizacin de tales mecanismos que debern enfrentarse a los siguientes tipos de acciones ilegales:     Filtraciones. Adquisicin de informacin por personas o programas no autorizados. Intromisiones. Alteracin no autorizada de la informacin. Robo de recursos. Uso de recursos sin autorizacin (impresoras, procesadores, etc.) Vandalismo. Interferir la operacin de un sistema sin nimo de lucro

En el caso de los sistemas distribuidos estos actos suelen perpetrarse a travs de los canales de comunicacin realizando las siguientes acciones:     Escucha. Obtener copias de mensajes que pasan por la red Suplantacin. Enviar o recibir mensajes utilizando la identidad de otro programa o persona. Alteracin de mensajes. Interceptar mensajes y alterar su contenido. Reenvo. Obtener copias de mensajes para utilizarlas posteriormente

Existen polticas y mecanismos para impedir la realizacin de estas acciones, o al menos para detectarlas e invalidarlas. Como se mencion anteriormente, la transparencia es la caracterstica ms importante de un sistema distribuido, pues buscamos que el usuario tenga una nica imagen del sistema. Es decir se trata de que los diseadores del sistema distribuido engaen al usuario, hacindole creer que el sistema (que es una coleccin de varias mquinas) no es ms que otro sistema de tiempo compartido pero con muchas ms prestaciones. Cuando se consigue esto se dice que el sistema es transparente. La transparencia se puede conseguir en dos niveles: a nivel de usuario y a nivel de programacin. Lo ms fcil es conseguirla a nivel de usuario, puesto que solamente ocultamos la distribucin al usuario. En la transparencia de programacin se debe ofrecer una interfaz de programacin (llamadas al sistema) que oculten la existencia de mltiples mquinas (con mltiples procesadores, discos, etc.). La solucin es reescribir los comandos a utilizar para que se adapten a la nueva arquitectura, si no tuviramos que sobre escribir estos comandos al pasarlos a un entorno distribuido tendramos la transparencia de programacin. Como vemos es ms fcil lograr la transparencia de usuario que de programacin. En este contexto estn identificados 7 tipos de transparencia:    De acceso. Permite que el acceso a objetos locales o remotos se realice utilizando idnticas operaciones De ubicacin. Permite acceso a los objetos sin conocer su ubicacin. De rplica. Permite usar mltiples instancias de objetos (sin saberlo usuarios o programas) para mejorar el rendimiento y fiabilidad del sistema.

   

De fallos. Permite ocultar los fallos, pudiendo as los usuarios o programas completar sus tareas a pesar de los fallos de componentes hardware o software. De migracin. Permite mover objetos o recursos de una ubicacin a otra sin que ello afecte la operacin de usuarios o aplicaciones. De configuracin. Permite la reconfiguracin dinmica del sistema para mejorar el rendimiento a medida que vara la carga de trabajo. De escala. Permite que el sistema o las aplicaciones se expandan sin cambiar la estructura del sistema o los algoritmos de programacin.

Los dos tipos de transparencia ms importantes son la de acceso y la de ubicacin, juntas se conocen como transparencia de red pues son las que ms influyen de en la utilizacin de recursos centralizados. La transparencia oculta cierta informacin de los recursos que normalmente no es de inters para los usuarios o programas, lo cual es deseable cuando se hace referencia a un servicio para el cual estn provistas varias instancias de recursos o servidores y no nos importa cul sea la instancia que nos preste el servicio; pero hay ocasiones en que no se requiere tanta transparencia porque se requiere poder especificar un recurso en concreto que se desea para prestar un servicio. Algunas de las ventajas de los sistemas distribuidos son: Frente a los sistemas centralizados      Economa. Mejor relacin calidad/precio Velocidad. Ms potencia que Mainframes Distribucin inherente. Aplicaciones especiales Fiabilidad. Tolerancia a fallos Escalabilidad. Fcil crecimiento incremental

Frente a los sistemas independientes.     Comparten datos. Acceso a bases de dato comunes Comparten dispositivos. Impresoras, scanner, etc. Comunicacin. Facilita comunicacin (e-mail) Flexibilidad. Reparto de carga eficiente.

Pero los sistemas distribuidos tambin tienen inconvenientes, algunos pueden ser:    Software.No hay mucha variedad disponible. Red.Puede ser fcilmente saturable. Seguridad.Es ms complicado el garantizarla, frente a un sistema centralizado.

La influencia de los sistemas distribuidos en seguida se ha manifestado en diversas reas de aplicacin, por ejemplo:  Aplicaciones comerciales.  Reservaciones de lneas areas  Aplicaciones bancarias  Cajeros de grandes almacenes  Cajeros y almacn de cadenas de sper mercados  Aplicaciones para redes WAN  Correo electrnico  Servicio de noticias  Servicio de transferencia de ficheros  Bsqueda de archivos  Servicio de consulta textual  World wide web  Aplicaciones multimedia  Video conferencia  Tele vigilancia  Juegos multiusuario  Enseanza asistida por computadora Teniendo en cuenta toda esta variedad de aplicaciones de los sistemas distribuidos, su diseo va a involucrar a muy diversas reas de la informtica, entre ellas:       Comunicaciones (hardware y software) Sistemas operticos distribuidos Bases de datos distribuidas Servidores distribuidos de ficheros Lenguajes de programacin distribuida Sistemas tolerantes a fallos

You might also like