Este documento describe los sistemas operativos distribuidos. Explica que estos sistemas permiten distribuir recursos y tareas entre varios procesadores de forma transparente al usuario. También cubre conceptos como transparencia, eficiencia, flexibilidad, escalabilidad, protocolos de comunicación, gestión de memoria y ventajas y desventajas de los sistemas distribuidos. Finalmente, discute sistemas operativos de red y métodos de acceso remoto a archivos.
2. INTRODUCCIÓN
En el inicio de la era de la informática las computadoras eran grandes y caras. Debido a su escasez y coste,
éstas funcionaban de forma independiente entre ellas.
A partir de los años 70, surgen los primeros miniordenadores, que competirían con los grandes
ordenadores tanto por las prestaciones como por su precio, con lo que se extendió su uso. Los
grandes sistemas centralizados fueron dejando paso lentamente a sistemas mucho más descentralizados, y
formados por varios ordenadores o a sistemas multiprocesador. Pronto surgieron nuevas necesidades de
interconexión de los equipos, y se desarrollaron las redes de área local (LAN), como Ethernet o Token ring.
En la actualidad, Internet es la red de mayor tamaño y la más usada, y mantiene un impresionante ritmo de
crecimiento. Además, Internet es la base de muchos nuevos proyectos de sistemas distribuidos.
Aunque los actuales sistemas de red solucionan parte de las necesidades actuales de comunicación entre
computadoras, tienen importantes limitaciones, y no son aplicables a una gran cantidad de problemas. Por
ello surge la necesidad de crear sistemas distribuidos que sustituyan a los actuales sistemas de red o a los
sistemas multiprocesadores.
3. SISTEMAS OPERATIVOS DISTRIBUIDOS
Es aquel que consiste en facilitar el acceso y la gestión de los recursos distribuidos en la red. Es donde los
usuarios pueden acceder a recursos remotos de la misma manera en que lo hacen para los recursos locales
Permitiendo distribuir trabajos, tareas o procesos, entre un conjunto de procesadores.
Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, lo cual es transparente
para el usuario.
Los sistemas distribuidos están basados en las ideas básicas de transparencia, eficiencia, flexibilidad,
escalabilidad y fiabilidad. Sin embargo estos aspectos son en parte contrarios, y por lo tanto los sistemas
distribuidos han de cumplir en su diseño el compromiso de que todos los puntos anteriores sean
solucionados de manera aceptable.
4. TRANSPARENCIA
El concepto de transparencia de un sistema distribuido va ligado a la idea de que todo el sistema funcione
de forma similar en todos los puntos de la red, independientemente de la posición del usuario. Queda
como labor del sistema operativo el establecer los mecanismos que oculten la naturaleza distribuida del
sistema y que permitan trabajar a los usuarios como si de un único equipo se tratara.
En un sistema transparente, las diferentes copias de un archivo deben aparecer al usuario como un único
archivo. Queda como labor del sistema operativo el controlar las copias, actualizarlas en caso de
modificación y en general, la unicidad de los recursos y el control de la concurrencia.
El que el sistema disponga de varios procesadores debe lograr un mayor rendimiento del sistema, pero el
sistema operativo debe controlar que tanto los usuario como los programadores vean el núcleo del sistema
distribuido como un único procesador. El paralelismo es otro punto clave que debe controlar el sistema
operativo, que debe distribuir las tareas entre los distintos procesadores como en un sistema
multiprocesador, pero con la dificultad añadida de que ésta tarea hay que realizarla a través de varios
ordenadores.
5. EFICIENCIA
La idea base de los sistemas distribuidos es la de obtener sistemas mucho más rápidos que los ordenadores
actuales. Es en este punto cuando nos encontramos de nuevo con el paralelismo.
Para lograr un sistema eficiente hay que descartar la idea de ejecutar un programa en un único procesador
de todo el sistema, y pensar en distribuir las tareas a los procesadores libres más rápidos en cada momento.
La idea de que un procesador vaya a realizar una tarea de forma rápida es bastante compleja, y depende de
muchos aspectos concretos, como la propia velocidad del procesador, pero también la localidad del
procesador, los datos, los dispositivos, etc. Se han de evitar situaciones como enviar un trabajo de
impresión a un ordenador que no tenga conectada una impresora de forma local.
6. FLEXIBILIDAD
Un proyecto en desarrollo como el diseño de un sistema operativo distribuido debe estar abierto a cambios
y actualizaciones que mejoren el funcionamiento del sistema.
Esta necesidad ha provocado una diferenciación entre las dos diferentes arquitecturas del núcleo del
sistema operativo: el núcleo monolítico y el micronúcleo. Las diferencias entre ambos son los servicios que
ofrece el núcleo del sistema operativo.
Mientras el núcleo monolítico ofrece todas las funciones básicas del sistema integradas en el núcleo, el
micronúcleo incorpora solamente las fundamentales, que incluyen únicamente el control de los procesos y
la comunicación entre ellos y la memoria. El resto de servicios se cargan dinámicamente a partir
de servidores en el nivel de usuario.
7. CARACTERÍSTICAS DE LOS SISTEMAS OPERATIVOS
Separación Funcional. esto significa que las fronteras del software y del hardware para la funcionalidad y
servicios proporcionados, dependen de la capacidad y el propósito de cada entidad del sistema.
Distribución Inherente: Las entidades como la información, personas y sistemas están distribuidos de
forma natural o implícita. Por ejemplo si diferente información es creada y mantenida por personas
diferentes. Esta información podría ser generada, almacenada, analizada y usada por distintos
subsistemas o aplicaciones que bien pudieran no estar al tanto de la existencia de otras entidades en el
sistema.
Confiabilidad. Es la preservación a largo plazo y respaldo (espejeo) en diferentes lugares
estratégicamente localizados.
Escalabilidad. La posibilidad de agregar más recursos para incrementar el desempeño (performance) y la
disponibilidad.
Economía. El compartir recursos entre muchas entidades ayuda a reducir el costo de propiedad.
8. INTERCONEXIÓN
Un S.O. Distribuido es, en conclusión, algo más que un S.O. en red, ya que en realidad se trata de varios Sistemas
Autónomos que trabajan de manera conjunta. Esto se ha probado y usado de diversas formas:
CLUSTERS: Es un grupo de computadoras interconectadas que se comportan como una sola súper-
computadora, generalmente usadas para cálculos de ingeniería de alto desempeño o para simuladores de alta
complejidad (clima, movimientos poblacionales física de alto nivel, matemáticas teóricas).
GRIDS (matrices de cómputo) Es un tipo de sistema distribuido que permite compartir y agregar de manera
coordinada recursos heterogéneos distribuidos y autónomos con base en los requerimientos de Calidad en el
Servicio (QoS) de los usuarios. Los Grids se usan comúnmente para soportar aplicaciones emergentes en las
áreas de e-Science y e-Business; que son operadas por comunidades de personas distribuidas
geográficamente, que se disponen para participar en actividades colaborativas, para resolver problemas a gran
escala y que requieren de compartir recursos como CPU, datos, aplicaciones o instrumentos científicos.
P2P: Estas redes peer to peer son Sistemas descentralizados y distribuidos, que permiten aplicaciones como
compartir archivos, mensajería instantánea, juegos multijugador en línea, y distribución de contenido sobre
redes públicas, por ejemplo TV por Internet o Bit Torrent.
Sistemas de Almacenamiento Distribuido: Por ejemplo el NFS (Network File System) permiten al usuario tener
una visión única de datos que están almacenados en diferentes Sistemas de Archivos y computadoras
dispersas en la misma o en otras redes.
9. PROTOCOLOS DE COMUNICACIÓN
Debido a la ausencia de memoria compartida, toda la comunicación en los sistemas distribuidos se basa en
la transferencia de mensajes.
Cuando el proceso “A” quiere comunicarse con el proceso “B”:
Construye un mensaje en su propio espacio de direcciones.
Ejecuta una llamada al sistema para que el S. O. busque el mensaje y lo envíe a través de la red hacia “B”.
Para evitar el caos, “A” y “B” deben coincidir en el significado de los bits que se envíen.
10. PROTOCOLOS DE BAJO NIVEL
Nivel físico: Este nivel se dedica a transmitir 0’s y 1’s.
Cuantos voltios se emplearán para codificar los 0’s y los 1’s.
Cuantos bits/segundo.
Comunicación Simplex/Dúplex.
Tamaño, forma y características de los conectores.
Nivel de Enlace: Asegurar transmisión libre de errores.
Agrupar bits en grupos de bits (tramas).
Aplicar códigos de redundancia a las tramas para detectar errores.
En caso de errores, enviar mensajes de control para pedir la retransmisión.
Nivel de Red: Encaminar los mensajes de una máquina a otra.
A este nivel a los mensajes se les llama paquetes.
Ejemplo: IP, parte de la pila de protocolos de Internet.
11. PROTOCOLOS DE TRANSPORTE
Los mensajes enviados desde las aplicaciones (o desde los niveles superiores del modelo OSI), son divididos
en paquetes, que serán reensamblados en el destino.
Los paquetes que no lleguen a su destino, serán retransmitidos.
TCP, sobre IP: ofrece mensajes fiables con conexión.
UPD, sobre IP: ofrece mensajes no fiables sin conexión. (sin retransmisiones)
12. PROTOCOLOS DE ALTO NIVEL
Nivel de sesión: Proporciona control sobre la conversación y proporciona facilidades de sincronización.
Por ejemplo para realizar ”checkpoints” y de esta forma tolerar fallos.
Nivel de presentación: Dedicado a tratar el significado de la información que se transmite. Por
ejemplo registros en lugar de bits.
Nivel de aplicación: Los protocolos específicos necesarios para dotar de funcionalidad a
determinado sistema: FTP, HTTP, MAIL, TELNET, etc.
13. GESTIÓN DE MEMORIA
A fin de manejar la memoria en un sistema distribuido, es establecen dos métodos aceptados:
Proveer un espacio de direccionamiento virtual que sea compartido entre todas las computadoras que
conforman el sistema distribuido. La mayor complejidad de implementar un espacio de memoria
compartida distribuida, es el mantener la consistencia de los datos que son actualizados en dicha área,
así como reducir los retardos en el acceso de los mismos. Es decir, el control y bloqueo de los equipos
que escriben en esta área debe ser eficiente.
Análogo al esquema monoprocesador, manejando páginas o bloques de memoria (virtualización) de
aquellos datos del sistema menos accedidos. Estos bloques o páginas son enviados por
el administrador de memoria a petición de cada máquina del sistema. Aunque la duplicidad de los
bloques de memoria compartidos aumenta el rendimiento y evita los problemas de acceder una única
área de memoria, se origina un problema de consistencia entre las diferentes copias de la página que se
reparten en el sistema. Adicionalmente, con cada escritura es necesario actualizar todas las copias del
bloque de memoria, con lo cual el envío de la página por la red provocaría un tiempo de espera
inaceptable.
14. VENTAJAS DE LOS SISTEMAS DISTRIBUIDOS
Una de las ventajas de los sistemas distribuidos es la economía, pues es mucho más barato, añadir
servidores y clientes cuando se requiere aumentar la potencia de procesamiento.
El trabajo en conjunto. Por ejemplo: en una fábrica de ensamblado, los robots tienen sus CPUs diferentes
y realizan acciones en conjunto, dirigidos por un sistema distribuido.
Tienen una mayor confiabilidad. Al estar distribuida la carga de trabajo en muchas máquinas la falla de
una de ellas no afecta a las demás, el sistema sobrevive como un todo.
Capacidad de crecimiento incrementa. Se puede añadir procesadores al sistema, incrementando su
potencia en forma gradual según sus necesidades.
Tienen mayor flexibilidad, la carga de trabajo se puede distribuir entre diferentes ordenadores.
15. DESVENTAJAS DE LOS SISTEMAS DISTRIBUIDOS
El principal problema es el diseño, implantación y uso del software distribuido, pues presenta numerosos
inconvenientes. Los principales interrogantes son los siguientes:
Las computadoras en un sistema pueden ser de diferentes tipos y ejecutar versiones diferentes de
sistemas operativos. Esto significa que se requiere mas esfuerzo para gestionar y mantener en
funcionamiento el sistema.
Puede accederse al sistema desde varias computadoras diferentes, y el trafico en la red, puede estar
sujeto a escuchas indeseadas (esto hace mas difícil mantener la integridad de los datos en el sistema y
que los servicios no se degraden por ataques).
Los sistemas distribuidos son mas complejos, esto provoca que sea mas difícil comprender sus
propiedades.
16. SISTEMAS OPERATIVOS DE RED
La aparición del OS (sistema operativo) de red es el resultado directo de la necesidad de reducir los costos y
controlar cada equipo en el sistema. El OS de red no reside en cada equipo, el cliente sólo tiene suficiente
software, para arrancar el hardware y ponerse en contacto con el servidor.
Todas las operaciones posteriores se realizan en el servidor y es la única función del cliente, el transmitir la
entrada y salida, entre el servidor y el usuario.
Esto es muy eficaz en el control del software instalado, ya que los clientes no tienen la capacidad de
agregar o quitar programas. Una red OS requiere una cantidad mínima de hardware por parte del cliente,
aunque el servidor debe ser capaz de manejar las demandas de varios usuarios.
Esto significa, que no tendría que actualizar a los clientes siempre que se mantenga el servidor actualizado.
Incluso, esto condujo a la creación de clientes ligeros o dispositivos que no pueden funcionar por cuenta
propia, pero pretenden trabajar con sistemas operativos de red.
17. ACCESO A UN ARCHIVO REMOTO
Cuando accedemos a un archivo remoto, es necesario saber la ruta en la que se encuentra remotamente. Si
la sabemos, lo que se realiza es un montaje (orden mount), de tal manera que ya podemos acceder a ese
archivo.
Permite asegurar la consistencia, ya que si tenemos un archivo remoto el cual hemos abierto en nuestra
propia máquina y decidimos modificarlo, los datos se escriben en el archivo remoto en el mismo momento
en el que lo estamos modificando. Esto quiere decir que estamos escribiendo continuamente de manera
remota según modificamos nuestro archivo local, por lo que tendremos una penalización en el rendimiento
pero obtenemos a cambio una gran consistencia en los archivos.
Cuando realizamos peticiones al servidor (donde se encuentre nuestro archivo remoto), se incluye el
nombre de usuario sin encriptar, para ver si tenemos permisos de acceso a ese archivo. Se puede mejorar
ligeramente la seguridad con lo que se llama Kerberización. Consiste en tan solo incluir el nombre del
usuario cuando se realiza el montaje de la ruta del archivo.
18. MÉTODOS DE ACCESO REMOTO
Este tipo de modelo consiste en que todas las operaciones (abrir y cerrar, leer y escribir, etc.) se realizan
en el servidor mas no en los clientes.
Estos dos modelos se diferencian en que en el primero se debe transferir el archivo completo del
servidor al cliente y viceversa, lo que no es necesario en el modelo de acceso remoto.
Debemos tener en cuenta que el solo hecho de compartir archivos puede traer
dos problemas principales por resolver: el permiso de acceso y la gestión de los accesos simultáneos.
19. MODELO CARGA/DESCARGA
Consiste básicamente en dos operaciones: lectura y escritura.
La primera operación consiste en la transferencia de un archivo completo desde el servidor hacia
el cliente solicitante; la segunda operación consiste en el envío de un archivo del cliente al servidor, es
decir, en sentido contrario.
Mientras tanto los archivos pueden ser almacenados en memoria o en un disco local, según sea el caso.
20. ATOMICIDAD
Atomicidad (Propiedad todo-o-nada):
En la recuperación de caídas: El sistema es quién tiene la responsabilidad de decidir qué hacer ante la
recuperación de una falla:
Terminar de ejecutar el resto de las acciones.
Deshacer las acciones que se había realizado.
Para proveer la recuperación se usan técnicas de almacenamiento estable.
21. CONTROL DE CONCURRENCIA
El control de concurrencia distribuido en sistema de manejo de bases de datos distribuidas asegura que la
consistencia de la base de datos se mantiene, en un ambiente distribuido multiusuario. Si las transacciones
son internamente consistentes, la manera más simple de lograr este objetivo es ejecutar cada transacción
sola, una después de otra.
El fallo en diseño de mecanismos apropiados de sincronización y en obligar su uso por cada proceso que
utiliza recursos comunes, produce frecuentemente un comportamiento erróneo del sistema y rupturas que
son notablemente difícil de depurar.
La concurrencia puede producir un incremento de la productividad cuando se implementan correctamente,
pero puede también degradar la fiabilidad cuando la sincronización impropia entre procesos contamina el
sistema con errores artificios de tiempo.
22. CONCLUSIÓN
Los sistemas distribuidos abarcan una cantidad de aspectos considerables, por lo cual su desarrollo
implica mucha complejidad.
Existen ciertos aspectos que requieren extremo cuidado al desarrollarse e implantarse como el manejo
de fallos, el control de la concurrencia, etc.
Existen muchos temas de investigación relacionados con los sistemas distribuidos.
Se nota también que muchas tecnologías están en constante desarrollo y maduración, lo cual implica un
minucioso estudio previo de muchos factores antes de apostar por alguna tecnología en especial.