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.
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.
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.
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.
Núcleo monolítico
Como ejemplo de sistema operativo
de núcleo monolítico está UNIX. Estos sistemas tienen un núcleo grande y complejo,
que engloba todos los servicios del sistema. Está programado de forma no
modular, y tiene un rendimiento mayor que un micronúcleo. Sin embargo,
cualquier cambio a realizar en cualquier servicio requiere la parada de todo el
sistema y la recompilación del núcleo.
Micronúcleo
La arquitectura de micronúcleo
ofrece la alternativa al núcleo monolítico. Se basa en una programación
altamente modular, y tiene un tamaño mucho menor que el núcleo monolítico. Como
consecuencia, el refinamiento y el control de errores son más rápidos y sencillos.
Además, la actualización de los servicios es más sencilla y ágil, ya que sólo
es necesaria la recompilación del servicio y no de todo el núcleo. Como
contraprestación, el rendimiento se ve afectado negativamente.
En la actualidad la mayoría de sistemas
operativos distribuidos en desarrollo tienden a un diseño de micronúcleo. Los
núcleos tienden a contener menos errores y a ser más fáciles de implementar y
de corregir. El sistema pierde ligeramente en rendimiento, pero a cambio
consigue un gran aumento de la flexibilidad.
Escalabilidad
Un sistema operativo distribuido
debería funcionar tanto para una docena de ordenadores como varios millares.
Igualmente, debería no ser determinante el tipo de red utilizada (LAN o WAN) ni
las distancias entre los equipos, etc.
Aunque este punto sería muy
deseable, puede que las soluciones válidas para unos cuantos ordenadores no
sean aplicables para varios miles. Del mismo modo el tipo de red condiciona
tremendamente el rendimiento del sistema, y puede que lo que funcione para un
tipo de red, para otro requiera un nuevo diseño.
La escalabilidad propone que
cualquier ordenador individual ha de ser capaz de trabajar independientemente
como un sistema distribuido, pero también debe poder hacerlo conectado a muchas
otras máquinas.
Fiabilidad
Una de las ventajas claras que
nos ofrece la idea de sistema distribuido es que el funcionamiento de todo el
sistema no debe estar ligado a ciertas máquinas de la red, sino que cualquier
equipo pueda suplir a otro en caso de que uno se estropee o falle.
La forma más evidente de lograr
la fiabilidad de todo el sistema está en la redundancia. La información no debe
estar almacenada en un solo servidor de archivos, sino en por lo menos dos
máquinas. Mediante la redundancia de los principales archivos o de todos
evitamos el caso de que el fallo de un servidor bloquee todo el sistema, al
tener una copia idéntica de los archivos en otro equipo.
Otro tipo de redundancia más
compleja se refiere a los procesos. Las tareas críticas podrían enviarse a
varios procesadores independientes, de forma que el primer procesador
realizaría la tarea normalmente, pero ésta pasaría a ejecutarse en otro
procesador si el primero hubiera fallado.
Comunicación
La comunicación entre procesos en
sistemas con un único procesador se lleva a cabo mediante el uso de memoria
compartida entre los procesos. En los sistemas distribuidos, al no haber
conexión física entre las distintas memorias de los equipos, la comunicación se
realiza mediante la transferencia de mensajes.
Permiten distribuir trabajos,
tareas o procesos, entre un conjunto de procesadores. Puede ser que este
conjunto de procesadores esté en un equipo o en diferentes, en este caso es
trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema
fuertemente acoplado es a es aquel que comparte la memoria y un reloj global,
cuyos tiempos de acceso son similares para todos los procesadores. En un
sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj,
ya que cada uno cuenta con su memoria local.
Los sistemas distribuidos deben
de ser muy confiables, ya que si un componente del sistema se compone otro
componente debe de ser capaz de reemplazarlo.
Entre los diferentes Sistemas
Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC,
Mach, Chorus, Spring, Amoeba, Taos, etc.
Caracteristicas de los Sistemas
Operativos distribuidos:
• Colección de sistemas autónomos
capaces de comunicación y cooperación mediante interconexiones hardware y
software .• Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.
• Objetivo clave es la transparencia.
• Generalmente proporcionan medios para la compartición global de recursos.
• Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).
No hay comentarios:
Publicar un comentario