Historia de la Computación | Sistemas Operativos | Definiciones | Servicios de Windows XP | ¿Que es un Hacker? | Trucos para Windows | Enlaces |
SISTEMAS OPERATIVOS DISTRIBUIDOS
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.
CONCEPTOS
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.