

SISTEMAS OPERATIVOS DISTRIBUIDOS
![]()
| Enric Ballarín | Miguel Angel Gonzalez | Manuel Leonés | Sergio Vivas | ||
| [email protected] | [email protected] | [email protected] | [email protected] |
![]()
Sistema Operativo
Cómo funciona un Sistema Operativo
Sistemas Operativos por la Forma de Ofrecer
sus Servicios
Compartición de recursos (resource sharing) Apertura (openness) Concurrencia (concurrency) Tolerancia a Fallos (fault tolerance) Transparencia (transparency)
Compartir RecursosDesventajas De Los Sistemas Distribuidos
Aceleración De Cálculos
Confiabilidad
Comunicación
![]()
Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única, más primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo, cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión.
Todos los sistemas operativos modernos son multitarea y pueden ejecutar
varios procesos simultáneamente. En la mayoría de los ordenadores
sólo hay una UCP; un sistema operativo multitarea crea la ilusión
de que varios procesos se ejecutan simultáneamente en la UCP. El
mecanismo que se emplea más a menudo para lograr esta ilusión
es la multitarea por segmentación de tiempos, en la que cada proceso
se ejecuta individualmente durante un periodo de tiempo determinado.
El punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al sistema para ejecutar estas operaciones, además de la ubicación de los recursos que desee acezar. Por ejemplo, si un usuario en la computadora hidalgo necesita el archivo matriz.pas que se localiza en el directorio /software/código en la computadora modelos bajo el sistema operativo UNIX, dicho usuario podría copiarlo a través de la red con los comandos siguientes: hidalgo % hidalgo % rcp modelos:/software/código/matriz.pas . hidalgo%
En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la computadora modelos y lo coloca en el directorio donde se ejecutó el mencionado comando. Lo importante es hacer ver que el usuario puede acezar y compartir muchos recursos.
Existen dos tipos básicos de redes: Las redes locales(LAN)
y las redes de área ancha(WAN).La principal diferencia entre ambas
es su distribución geográfica. Las redes locales están
compuestas por procesadores distribuidos en un área geográfica
pequeña, como un edificio o varios edificios adyacentes; en cambio
las redes de área ancha, están formadas por varios procesadores
autónomos distribuidos en un área geográfica extensa(como
todo un país).Estas diferencias radican en la velocidad y confiabilidad
de la red de comunicaciones y se ven reflejadas en el diseño del
sistema operativo.
Como las redes locales están diseñadas para abarcar una pequeña área geográfica, las instalaciones están a poca distancia entre si, los enlaces de comunicación tienen mayor velocidad y menor tasa de errores que los de área ancha.Los enlaces más comunes son el par trenzado, el cable coaxial y la fibra óptica.
Una típica red local puede consistir en varias máquinas diferentes, dispositivos periféricos compartidos(como impresoras láser) estaciones de trabajo etc.Para construir éstas redes debemos emplear un esquema Ethernet, donde el medio de comunicación es un cable coaxial multiacceso con un esquema de detección de colisiones.
Estas redes(WAN) surgieron a finales de los años setenta como un proyecto académico de investigación para ofrecer una comunicación eficiente entre instalaciones, permitiendo compartir de manera eficiente y económica el hardware y el software entre una extensa red de usuarios.
La primera red que se diseño y desarrolló fue Arpanet. Los trabajos de Arpanet comenzaron en 1968 y ha crecido notablemente, de una red de 4 máquinas a una red mundial de redes como lo es Internet que hoy comprende miles de máquinas conectadas entre si.
Debido a que las instalaciones en una red de área ancha están distribuidas físicamente en una extensa área geográfica, los enlaces de comunicación son normalmente lentos y poco confiables. Los enlaces típicos son líneas telefónicas, enlaces por microondas y canales de satélite y se controlan mediante procesadores de comunicación especiales responsables de definir la interfaz por medio del cual las instalaciones se comunican en la red.
Si tomamos una red de área ancha como internet, el sistema permite que se comuniquen entre si las instalaciones separadas llamadas anfitriones; las máquinas anfitriones generalmente se diferencian del resto en cuanto a su tipo, velocidad, sistema operativo etc.
Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar recursos ( impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso ) en una sola máquina virtual que el usuario aceza en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual.
Todo lo anterior es el marco teórico de lo que se desearía tener como sistema operativo distribuido, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos en las varias unidades de procesamiento, reintegrar sub-resultados, resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y consolidar la protección y seguridad entre los diferentes componentes del sistema y los usuarios.
Los avances tecnológicos en las redes de área local y la creación de microprocesadores de 32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el suficiente poder en forma autónoma para desafiar en cierto grado a los mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de partir procesos muy pesados en cálculo en unidades más pequeñas y distribuirlas en los varios microprocesadores para luego reunir los sub-resultados, creando así una máquina virtual en la red que exceda en poder a un mainframe.
El sistema integrador de los microprocesadores que hacer ver a las varias memorias, procesadores, y todos los demás recursos como una sola entidad en forma transparente se le llama sistema operativo distribuido.
Las razones para crear o adoptar sistemas distribuidos se dan por dos razones principales: por necesidad ( debido a que los problemas a resolver son inherentemente distribuidos ) o porque se desea tener más confiabilidad y disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el control de los cajeros automáticos en diferentes estados de la república.
Ahí no es posible ni eficiente mantener un control centralizado, es más, no existe capacidad de cómputo y de entrada/salida para dar servicio a los millones de operaciones por minuto. En el segundo caso, supóngase que se tienen en una gran empresa varios grupos de trabajo, cada uno necesita almacenar grandes cantidades de información en disco duro con una alta confiabilidad y disponibilidad.
La solución puede ser que para cada grupo de trabajo se asigne
una partición de disco duro en servidores diferentes, de manera
que si uno de los servidores falla, no se deje dar el servicio a todos,
sino sólo a unos cuantos y, más aún, se podría
tener un sistema con discos en espejo ( mirror ) a través de la
red, de manera que si un servidor se cae, el servidor en espejo continúa
trabajando y el usuario ni cuenta se da de estas fallas, es decir, obtiene
acceso a recursos en forma transparente.
Un sistema en red típico es una colección de sistemas operativos locales, acompañado de servidores de impresión y de archivos, conectados por medio de una red. Los usuarios están enterados de la multiplicidad de máquinas y para el acceso a los recursos necesitan conectarse a la máquina remota o transferir datos de la máquina remota a la propia. Podemos decir que todos los sistemas en red se ejecutan como funciones locales autónomas a la administración de dispositivos, de procesos, de entradas y salidas, de archivos y recursos en general.
Estas funciones deben interactuar, pero tomando decisiones locales sin tener en cuenta procesos y recursos remotos. Las decisiones y el control orientado a operaciones remotas, son tomadas solo a nivel de la comunicación de la red.
Por otro lado podemos decir que un sistema distribuido es solo un sistema expandido en toda la red, pero visto como un solo sistema para todos los elementos que existen en la red.Los usuarios no necesitan saber de la multiplicidad de máquinas y pueden acceder a los recursos remotos de la misma manera que lo hacen para los recursos locales.La tolerancia a fallas es más alta, pero también podemos decir que el control y las decisiones son tomadas globalmente, los recursos conectados a la red son administrados de una forma global usando mecanismos distribuidos en lugar de mecanismos locales.
El comienzo potencial de la utilización de sistemas distribuidos es a principios de los 70. Tras el emergimiento de los minicomputadores; la utilización de estos como estaciones de trabajo gráficas uniusuario fue una gran éxito, sobre todo en el desarrollo de SW. Este éxito condujo a pensar en la posibilidad de conseguir los mismos resultados desde un punto de vista multiusuario.Problema: la tecnología necesaria para transformar aquel sistema uniusuario en otro coopoerativo no existía en aquellos momentos. Uno de los primeros éxitos en desarrollo fue gracias al Xerox Palo Alto Research Center (Xerox PARC), en 1971-1980:
Servidores de impresión y de ficheros. Primera red local de alta velocidad (Ethernet). Sistemas distribuidos experimentales. Primera estación de trabajo: Alto: monitor monocromo de alta resolución. 128 Kb de memoria principal. Disco duro de 2.5 Mb. CPU microprogramada a la velocidad de 1 instrucción/2-6 microsegundos. Xerox DFS (Distributed File System). En primera época, también: UNIX ARPANet (padre de la Internet actual). SmallTalk (primer concepto de programación orientada a objetos). Después: Berkeley UNIX. Ethernet (ya comentada) Sun NFS AFS (Andrew File System) Mach Amoeba Chorus
Modelos
de Sistema Distribuído
Los servidores dan acceso a: Información compartida (servicio de ficheros) dispositivos HW compartidos (impresoras, scanners, ...) funciones del Sistema Operativo (autentificación, ...) Ejemplos:
El Gestor de Recursos le asigna un procesador como ordenador personal. Ventajas con respecto a Estaciones y Servidores: mejor utilización de recursos: muchos puntos de entrada con pocas CPUs. mayor flexibilidad: se pueden dedicar procesadores para expandir servicios. compatibilidad con el SW preexistente. utilización de procesadores heterogeneos.
Incoveniente: mala respuesta interactiva: terminales conectados a
una linea serie. Ejemplo: CDCS, basado en el anillo de Cambridge.
Basado en máquinas multiusuario. El usuario se conecta a una máquina específica. Enfoques históricos: acceso remoto mediante copias: de esta forma no se mezclan los espacios de nombramiento locales, pero no es distribuido. sistemas de ficheros contiguos:
Gestor de recursos: módulo SW que gestiona un conjunto
de recursos de un tipo particular. Para cada conjunto de recursos existe
un número de políticas diferentes, pero tambien características
comunes.
Modelos de gestión de recursos:
UNIX: los recursos del SO se acceden mediante System Calls, totalmente documentadas y disponibles a los desarrolladores. La apertura de UNIX está inherentemente asociada a sus System Calls.
Escalabilidad (scalability)
Definición: capacidad de un sistema de operar de manera efectiva
independientemente de su tamaño. La existencia de crecimientos en
el sistema no implican modificaciones de la arquitectura básica
del mismo. Distribución de cargas. Se trata de evitar las siguientes
centralizaciones:
componentes centralizados.
tablas centralizadas.
algoritmos centralizados. Características:
ninguna máquina tiene información completa del estado
del sistema.
las máquinas toman decisiones basadas en información
local.
el fallo de una máquina no implica la terminación
en fallo del algoritmo.
no se asume la existencia de un reloj global.
Técnicas empleadas:
Tipos de transparencia (ANSA Reference Manual, ISO's Reference Model for Open Distributed Processing, [ISO RM ODP]:
1. Prestaciones
2. Fiabilidad
3. Escalabilidad
4. Consistencia
5. Seguridad
Requisitos básicos de diseño:
1. Nombrado: los nombres asignados a recursos u objetos han de tener
un significado global e independiente de la localización. Además,
ha de existir un sistema de interpretación que pueda trasladar nombres
a recursos (ejemplo: internet(host + port)).
2. Comunicación: doble optimización: HW y SW (protocolos,
algoritmos). Sincronización en la comunicación.
3. Estructura del SW: en sistemas centralizados, el diseño
de SW es monolítico. En SSDD, los programas pueden acceder a diferentes
servicios, cada uno de los cuales provee su propio interfaz de operación.
Capas en un sistema centralizado. En un SD, los servicios deben ser fácilmente
añadidos y escalables, por lo que el Kernel será la única
parte rígida, restringiéndose a:
1. Funcionalidad: qué debería hacer el sistema por los usuarios.
Requerimiento mínimo: la funcionalidad provista por un sistema distribuído no debería de ser menos que el obtenido por un sistema aislado.
Requerimiento máximo: mejora sobre los servicios provistos por cualquier ordenador personal por sí sólo, a través de:
Opciones de migración de computación centralizada
multiusuario a computación distribuida:
2 Reconfiguración: necesidad del sistema para adaptación
a cambios sin causar discapacidad a la provisión de servicio existente.
Diseño de un sistema distribuido en relación a la escala
temporal:
Calidad de servicio: temas de prestaciones, confianza y seguridad.
El sistema debe detectar la falla de una computadora y tomar las
medidas necesarias. El sistema no debe utilizar los servicios de esa máquina;
además otra máquina puede hacerse cargo de la función
que falló. Por último decimos que cuando la máquina
que falló se repara deben llevarse a cabo mecanismos para reintegrarla
de nuevo al sistema.
La ventaja de un sistema operativo distribuido es que muchas de las funciones mencionadas pueden efectuarse a grandes distancias. Dos personas en diferentes zonas geográficas pueden trabajar en un mismo proyecto. Con la transferencia de archivos se pueden transferir programas e intercambiar correspondencia para coordinar el trabajo.
Otras ventajas que podemos mencionar de los sistemas distribuidos es la que tienen con respecto a los sistemas centralizados y son:
1.-) Economía: Es mucho más barato instalar un sistema distribuido(o sea varias computadoras conectadas entre si) y no un gran mainframe ya sea por el costo que este tiene o por la imposibilidad de compartir los datos entre varios usuarios.
2.-) Velocidad: Al instalar un sistema distribuido, obtenemos más velocidad que en un mainframe ya que podemos realizar las distintas tareas entre los procesadores del sistema.
3.-) Distribución Inherente: Se refiere a la posibilidad de descomponer las tareas del sistema entre varios procesadores y no recargar a uno solo con agoviantes instrucciones, en consecuencia obtenemos mayor aceleración de cálculos.
4.-) Seguridad: Significa que si una máquina falla el sistema no se cae y continúa trabajando normalmente.
5.-) Crecimiento por Incrementos: Sería algo así como la escalabilidad, es decir podemos agregar componentes al sistema como más procesadores, multimedia etc. sin necesidad de tener que cambiar todo el hardware cuando queremos hacer una actualización.
En todos los sistemas de computadoras existen múltiples fallas solo que en un sistema distribuido resultan más visibles, dado que existen más componentes y por lo tanto mayor interferencia e interconexiones, como así también fallas parciales(en cada máquina)estos problemas causados por interconexión se denominan problemas del sistema. veamos algunos de estos problemas:
| [Goscinski91] | Goscinski, Andrezj (1991). Distributed Operating Systems: The logical Design. Prentice-Hall. 2ª edición. |
| [Milenkovic94] | Milenkovic, Milan (1994). Sistemas Operativos: conceptos y diseño. McGraw-Hill. 2ª edición. |
| [Peterson91] | James L. Peterson, Abraham Silberschatz (1991). Sistemas Operativos, conceptos fundamentales. Editorial Reverté. |
| [Stallings97] | William Stallings (1997). Sistemas Operativos. Prentice-Hall. 2ª edición. |
| [Tanenbaum91] | Andrew Tanenbaum (1991). Sistemas Operativos: Diseño e implementación. Prentice Hall. 1ª edición |
| [Tanenbaum92] | Andrew Tanenbaum (1992). Modern Operating Systems. Prentice-Hall. 1ª edición. |