Sistemas Operativos Sistema Operativo Cómo funciona un Sistema Operativo Software

Anuncio
Sistemas Operativos
Sistema Operativo
Software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: coordina y
manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado
o el mouse; organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos
duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos.
Cómo funciona un Sistema Operativo
Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la
interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de
instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en
gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los
intérpretes basados en gráficos son más sencillos, pero muchos usuarios expertos prefieren los intérpretes de
instrucciones basados en texto porque son más potentes.
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.
Sistemas Operativos por la Forma de Ofrecer sus Servicios
Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del usuario, el cómo
aceza los servicios. Bajo esta clasificación se pueden detectar dos tipos principales: sistemas operativos de red
y sistemas operativos distribuidos.
• Sistemas Operativos de Red
Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas
operativos en otras computadoras por medio de un medio de transmisión con el objeto de intercambiar
in1formación, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades.
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
1
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.
Redes Locales
Las redes locales(LAN) surgieron a principios de los años setenta como sustituto de los grandes sistemas de
computación central. En ese momento muchas empresas consideraron que era más económico tener varias
computadoras pequeñas, cada una con sus aplicaciones que un solo sistema de gran tamaño.
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.
Redes de Area Ancha
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.
• Sistemas Operativos Distribuidos
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.
2
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.
Diferencias entre Sistemas
La diferencia fundamental entre un sistema en red y uno distribuido se puede explicar a través del análisis de
la localización del módulo de comunicaciones entre procesos.
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
3
decisiones son tomadas globalmente, los recursos conectados a la red son administrados de una forma global
usando mecanismos distribuidos en lugar de mecanismos locales.
Base Histórica
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
Estaciones y servidores
Es el más común en la actualidad. A cada usuario se le asigna una estación. Las estaciones: ejecutan las
aplicaciones. Dan soporte a la interfaz de usuario (GUI). Acceden a los servicios compartidos, mediante SW
de comunicaciones.
Los servidores dan acceso a: Información compartida (servicio de ficheros) dispositivos HW compartidos
(impresoras, scanners, ...) funciones del Sistema Operativo (autentificación, ...) Ejemplos:
• XDS y Cedar, del Xerox PARC.
• V−system de la Universidad de Stanford.
• Argus, del MIT.
4
Banco de procesadores
Los procesadores del pool tienen un CPU, suficiente memoria, pero no tienen ni discos ni terminales. Los
usuarios acceden al sistema desde terminales−X. Gestor de recursos: controla el acceso a los procesadores del
pool (PP). El usuario especifica sus requerimientos (CPU, memoria, programa).
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.
Miniordenadores Integrados
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:
• superdirectorio virtual: "/../", esquema de nombramiento global.
• no es distribuido: el nombre de los ficheros depende de su ubicación (máquina A, B, C????)
• ejemplo: NETIX, Newcastle Connection.
• Locus (UCLA):
Cada ordenador mantiene su autonomía (conjunto completo de SW estándar, aplicaciones y servicios
propios). Esquema de nombramiento global: acceso independiente de la ubicación, posibilidad de migración
de ficheros entre máquinas.
Modelos híbridos
AMOEBA, de la Universidad Libre de Amsterdam. Consiste en: sistema de estaciones y servidores más un
pool de procesadores. Funcionalidad mixta: estaciones para las aplicaciones interactivas. procesadores
variados. servidores especializados. Características:
• Kernel pequeño: planificación y paso de mensajes.
• el SO corre como procesos de usuario.
• servicio de gateway a WAN.
• gestión del pool mediante un servidor de carga y otro de procesos.
• Ventajas:
• recursos de procesamiento ajustados a las necesidades del usuario.
• ejecución concurrente.
• acceso a través de terminales (precio).
Requisitos y características de un SOD.
Características
Compartición de recursos (resource sharing)
Definición de recurso: rango de "cosas" que pueden ser compartidas en un sistema distribuido, de forma útil.
Desde componentes HW (disqueteras, impresoras) a entidades SW (ficheros, ventanas, bases de datos).
5
• Dispositivos HW: se comparten para reducir costes.
• SW: compartición de herramientas de desarrollo, ficheros, facilidad de actualización.
• Groupware.
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:
• Modelo Cliente/Servidor
• UNIX.
• Necesidad de centralización de gestión.
• Necesidad de diferenciar entre servidor y servicio.
• Inconveniente: algunas aplicaciones pueden requerir una cooperación más directa entre clientes.
• Modelo orientado a objetos
• Cada recurso es visto como un objeto, unívocamente identificado, y móvil.
• Ventajas: simplicidad, flexibilidad. Los objetos pueden actuar como usuarios de recursos y como
gestores de recursos.
• Se necesita un gestor de objetos: colección de procedimientos y datos que caracterizan una clase de
objetos.
• Ejemplos: Argus, Amoeba, Mach.
Apertura (openness)
Definición: permite a un SOD expandirse en múltiples direcciones. Un sistema puede ser abierto o cerrado
con respecto a HW o SW: La apertura se consigue especificando y documentando las interfaces
fundamentales del sistema y poniéndolos disponibles a los desarrolladores, para, finalmente, estandarizar esas
interfaces:
• 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.
Concurrencia (concurrency)
Varios procesos existen al mismo tiempo en una máquina: ejecución concurrente. Con un solo procesador,
esto implica planificación de CPU.
• 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:
6
• replicación de datos.
• caching.
• duplicación o complemento de tareas entre servidores.
Tolerancia a Fallos (fault tolerance)
Un fallo HW o SW puede producir inconsistencias o pérdidas de servicio. Dos ideas: redundancia del HW,
programas de recuperación de fallos. Redundancia: arquitecturas de servidores en HOT STANDBY: muy
caro (cada vez menos). Redireccionamiento de servidores (yahoo).
• Roll−back: transacciones atómicas.
• Sistemas de Alta disponibilidad (HA).
Transparencia (transparency)
Definición: abstracción que permite al usuario o al desarrollador desconocer los diferentes componentes del
sistema distribuido. La separación de componentes en inherente en un sistema distribuido => acceso a
recursos es un problema.
• Tipos de transparencia (ANSA Reference Manual, ISO's Reference Model for Open Distributed
Processing, [ISO RM ODP]:
• t. de acceso: acceso a objetos locales o remotos de la misma manera.
• t. de lugar: acceso a objetos sin conocer dónde están.
• t. de concurrencia: varios procesos pueden operar concurrentemente usando objetos de información
compartidos sin estorbarse.
• t. de replicación: diferentes réplicas de un mismo objeto de información sin enterarse a cuál se
accede, ni diferencias entre ellos.
• t. de fallo: aislamiento de fallos, de forma que las aplicaciones puedan completar sus tareas.
• t. de migración: permite mover los objetos de información sin afectar a las aplicaciones.
• t. de rendimiento: redistribución de cargas en el sistema sin modificación en las aplicaciones.
• t. de escalabilidad: permite asumir cambios de tamaño del sistema y aplicaciones sin modificar la
estructura del sistema ni los algoritmos de los programas.
♦ Las más importantes: t. de acceso y de lugar: TRANSPARENCIA DE RED.
Requisitos de diseño
Los componentes y arquitecturas del sistema utilizadas para cumplir con las características
mencionadas arriba necesitan a su vez cumplir con unos requisitos:
Metas en el Diseño:
• Prestaciones
• Fiabilidad
• Escalabilidad
• Consistencia
• Seguridad
Requisitos básicos de diseño:
• 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)).
• Comunicación: doble optimización: HW y SW (protocolos, algoritmos). Sincronización en la
7
comunicación.
• 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:
♦ alojamiento y protección de memoria.
♦ creación de procesos y planificador.
♦ comunicación entre procesos (IPC).
♦ manejo de dispositivos periféricos.
◊ Categorías principales de SW en un SD. De aquí se distinguen tres categorías:
◊ Kernel (OS Kernel Services). Ya comentado anteriormente. Se ha llegado al
desarrollo de microkernels: el conjunto mínimo de servicios y recursos a partir de los
cuales el resto de servicios se pueden construir. De esta forma se consigue el máximo
nivel de APERTURA.
◊ Servicios abiertos (Open Services): facilidades añadidas. Generalmente se ofrece el
conjunto de servicios típicos de un sistema UNIX (servicio de ficheros, correo
electrónico...).
◊ Soporte para programación distribuida (distributed programming support): por
ejemplo, RPC.
♦ Alojamiento de la carga de trabajo:
♦ Modelo de pool de procesadores.
♦ Aprovechamiento de "idle workstations".
♦ Multiprocesadores de memoria compartida. Cada procesador ejecuta lo que va pudiendo.
• Mantenimiento de la consistencia:
• c. de actualización: problema que aparece cuando varios procesos acceden y actualizan datos
constantemente. Es necesaria la atomicidad de operaciones, mediante mecanismos de exclusión
mutua.
• c. de replicación: la réplica de datos ha de efectuarse óptimamente.
• c. de caché.
• c. de fallos: en un sistema centralizado, si falla, todo falla. En uno distribuido, existirán diferentes
MODOS DE FALLOS (failure modes), donde si el sistema en conjunto falla, en cada máquina su
proceso se encontrará en un estado determinado: transacciones atómicas.
• c. de reloj: debido al ancho de banda de las redes, la sincronización entre máquinas no es obvia.
Afortunadamente, este requerimiento en SSDD no suele ser absoluto, sino relativo a orden.
• c. de interfaz de usuario.
Requerimientos del Usuario:
• 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:
♦ compartición a través de la red, y especialización de recursos (p.e. servidor de impresión).
♦ aplicación de las ventajas de la distribución al nivel de APIs (application programming
interface), para que puedan ser implementadas.
◊ Opciones de migración de computación centralizada multiusuario a computación
distribuida:
◊ Adaptar Sistemas Operativos ya existentes: adición de servicios, tipo NFS.
◊ Migrar a un SO totalmente nuevo: el SW anterior es inútil.
8
◊ Emulación: migrar a un SO nuevo, pero con características de emulación de uno o
más SSOO ya existentes. Ejemplos: Mach, Chorus. Problema: prestaciones.
⋅ 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:
◊ Cambios a corto plazo:
⋅ una máquina, red, componente... estropeada se reemplaza por otra.
⋅ la carga de trabajo se ha de reequilibrar, pasándo procesos a máquinas libres.
⋅ la comunicación de red se minimiza.
⋅ Cambios a medio y largo plazo:
• Asignación de nuevos roles a máquinas.
• Adición de nuevas máquinas, o nuevos tipos.
Calidad de servicio: temas de prestaciones, confianza y seguridad.
Ventajas De Los Sistemas Distribuidos
• Compartir Recursos
Si varias computadoras están conectadas entre sí, entonces un usuario puede
utilizar en una computadora los recursos disponibles en otra.Por ejemplo,en
la computadora 1 se puede utilizar una impresora láser solo disponible en la
máquina 2,al mismo tiempo en la 2 es posible tener acceso a un archivo que
reside en la 1.En general el compartimiento de recursos en un sistema
distribuido ofrece los mecanismos para compartir archivos en instalaciones
remotas, procesar información ,imprimir archivos y utilizar diferentes
dispositivos remotos de hardware.
• Aceleracion De Cálculos
Sin un cálculo determinado puede dividirse en varios subcálculos para que se
ejecuten concurrentemente, un sistema operativo distribuido permitirá
distribuir los cálculos entre las distintas computadoras y también ejecutarlos
concurrentemente. Además si una computadora está sobrecargada de
trabajos, algunos de ellos pueden pasarse a otra máquina.
• Confiabilidad
Si falla una computadora en un sistema distribuido, las restantes pueden
continuar trabajando. Si el sistema se compone de computadoras de gran
tamaño la falla de una no debería afectar a las demás; si son computadoras
pequeñas las que forman el sistema donde cada una es responsable de alguna
función, entonces un solo error puede detener el funcionamiento de todo el
sistema. En general si hay suficiente hardware y software en el sistema éste
puede continuar su trabajo normalmente.
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.
9
• Comunicación
Si varias máquinas están interconectadas por medio de una red, los usuarios
tienen la posibilidad de intercambiar in formación. A través de el pasaje de
mensajes la funcionalidad en una máquina independiente se puede ampliar a
un sistema distribuido. Algunos de los beneficios que podemos obtener son la
transferencia de archivos y el uso del correo.
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.
Desventajas De Los Sistemas Distribuidos
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:
• Estos problemas de sistema, se presentan cuando se interconectan
entre si diferentes componentes que por lo general trabajan
independientemente. Este tipo de falla resulta más fácil de apreciar
cuando utilizamos correo electrónico o sistemas de archivos.
10
• Otro problema se presenta cuando tenemos dos componentes en un
sistema(cada uno por separado) y presentan características
funcionales, pero al combinarlos se comportan de una manera no
esperada.
• También podemos encontrarnos con fallas de propagación, es decir
que la falla que sufra un nodo puede echar abajo toda la red. Por lo
general este tipo de falla resulta de algún error de diseño.
• Podemos tener problemas en una red de comunicación, debido a que
esta puede perder mensajes, entonces es necesario contar con un
software especial para controlar los mensajes. Un detalle a tener en
cuenta es que las redes sufren saturación por el gran número de
mensajes que se transmiten por ella.
• Por último diremos que los sistemas distribuidos sufren de una gran
vulnerabilidad es decir la información esta disponible para todos los
usuarios y puede carecer de privacidad.
Sistema de Archivo Distribuido
Sistema de Archivo Distribuido
Un sistema de archivos distribuido (SAD) es una implantación distribuida del
clásico modelo de sistema de archivos de tiempo compartido, donde varios
usuarios comparten archivos y recursos de almacenamiento. El propósito de
un SAD es apoyar el mismo tipo de comparación cuando los archivos están
dispersos físicamente en varias instalaciones de un sistema distribuido.
En este capitulo analizaremos distintas maneras de diseñar e implantar un
sistema de archivos distribuido. Primero analizamos los conceptos comunes
en que se apoyan los sistemas de archivos distribuidos; luego ilustramos
nuestros conceptos examinando los sistemas de archivos distribuidos UNIX
United, NFS, Andrew, Sprite y Locus. En la presentación utilizamos esta
estrategia debido a que los sistemas distribuidos siguen siendo un Area de
investigación y aún se estudian muchas de las consideraciones de diseño que
presentamos. Al explorar estos ejemplos de sistemas, esperamos ofrecer un
esbozo de los factores por considerar en el diseño de un sistema operativo e
indicar las Areas en las que se encuentran actualmente las investigaciones
sobre sistemas operativos.
Antecedentes
Un Sistema Distribuido es un conjunto de maquinas débilmente acopladas,
interconectadas por una red de comunicaciones. Utilizamos el término
máquina para representar un computador central o una estación de trabajo.
Desde el punto de vista de una máquina especifica en un sistema distribuido,
las demás máquinas y sus recursos son remotos, mientras que los recursos
propios de la máquina son locales.
Para explicar la estructura de Un SAD, necesitamos definir los términos
servicio, servidor y cliente. Un servicio es una entidad de software que se
ejecuta en una o mas maquinas y un cliente es un proceso que puede invocar
una servicio por medio de un conjunto de operaciones que forman su interfaz
con el cliente. En algunas ocasiones, se define una interfaz de bajo nivel para
la interacción de las máquinas; cuando sea necesario, nos referiremos a esta
11
interfaz como la interfaz entre máquinas.
Usando esta terminología, decimos que un sistema de archivos ofrece
servicios de archivos a clientes. Una interfaz con el cliente para el servicio de
archivo se forma con un Conjunto de Operaciones de archivo primitivas,
como crear, eliminar, leer o escribir un archivo.
El principal componente del hardware controlado por el servidor de archivos
es un Conjunto de dispositivos de almacenamiento secundario (es decir,
discos magnéticos), en los cuales se almacenan los archivos y de donde
necesidades de los clientes.
Se recuperan según las un SAD es un sistema de archivos cuyos clientes,
servidores y dispo-sitivos de almacenamiento están dispersos en las máquinas
de un sistema distribuido; por tanto, las actividades de servicio tienen que
efectuarse a lo largo de la red, y en vez de un sólo depósito de datos
centralizado, existen multiples dispositivos independientes de
almacenamiento. Como se verá más adelante, la configuración y la
implantación de un SAD pueden variar. En algunas configuraciones, los
servidores se ejecutan en máquinas dedicadas; en otras, una maquina puede
ser un servidor o un cliente.
El SAD puede implantarse como parte de un sistema operativo distribuido,
bien como una capa de software cuya tarea es administrar la comunicación
entre los sistemas operativos y los sistemas de archivos convencionales. Las
características distintivas de un SAD son Ia multiplicidad y autonomía de los
clientes y servidores en el sistema.
Nominación y Transparencia
La nominación es una correspondencia entre objetos de datos lógicos y
físicos. Por ejemplo, los usuarios tratan con objetos de datos lógicos
representados por nombre de archivos, mientras que el sistema manipula
bloques de datos físicos almacenados en las pistas de los discos.
Generalmente un usuario se refiere a un archivo utilizando un nombre , el
cual se transforma en un identificador numérico de bajo nivel, que a su vez se
corresponde con bloques en disco. Esta correspondencia multinivel ofrece a
los usuarios la abstracción de un archivo, que oculta los detalles de cómo y
donde se almacena el archivo en disco.
En un SAD transparente se agrega una nueva dimensión de abstracción ..: la
ocultación de la ubicación de los archivos de la red. En un sistema de
archivos convencionales la función de nominación produce como resultado
un intervalo de direcciones en disco, en un SAD este intervalo crece para
incluir la máquina especifica en cuyo disco se almacena el archivo. Si se
extiende un poco mas el tratamiento de los archivos como abstracciones,
llegamos a la posibilidad de replicas de archivos. Dado un nombre de
archivo, la correspondencia devuelve un conjunto de posiciones de las
replicas de este archivo. En esta abstracción se ocultan tanto la experiencia de
copias como su ubicación.
• Estructuras de Nominación ..:
12
Existen dos conceptos que hay que distinguir en relación con al
correspondencia de nombres en un SAD.
Transparencia de Nominación, El nombre de archivo no revela ningún
indicio sobre de la ubicación del almacenamiento físico del archivo.
Independencia de Ubicación, No es necesario modificar el nombre de un
archivo cuando cambia su ubicación en el almacenamiento físico.
• Esquema de Nominación ..:
Hay tres enfoques principales para los esquemas de nominación en un SAD.
En el enfoque mas sencillo, los archivos se nombran con una combinación
del nombre de su anfitrión y su nombre local , lo que garantiza un nombre
único dentro de todo el sistema. Por ejemplo, en Ibis, un archivo se identifica
de manera única con el Nombre Anfitrión Local, donde nombre local es una
ruta semejante a las de UNIX.
El segundo enfoque popularizado por el sistema de archivos de red (NFS,
Network File System) de sun, ofrece una forma de unir directorios remotos a
directorios locales, lo que da la apariencia a un árbol de directorios
coherentes.
El tercer enfoque es la estructura mas compleja y difícil de mantener en la
NFS, ya que cualquier directorio se puede unir a cualquier árbol de
direcciones locales y la jerarquía resultante puede estar poco estructurada.
• Técnicas de Implantación ..:
Para implantar una nominación transparente se requiere un mecanismo para
correspondencia entre un nombre de archivo y la ubicación asociada. Para
que esta correspondencia sea manejable, hay que agrupar conjuntos de
archivos en unidades componentes y proporcionar la correspondencia según
las unidades componentes, no por archivos. Esta agrupación también tiene
fines administrativos. Los sistemas semejantes a UNIX utilizan el árbol
jerárquico de directorios para proporcionar una transformación de nombres y
para agrupar repulsivamente los archivos en directorios.
Servicios Remotos
Consideremos un usuario que solicita el acceso a un archivo remoto.
Suponiendo que se localizó al servidor que contiene al archivo mediante el
esquema de nominación apropiada, debe efectuarse la transferencia de datos
para satisfacer la solicitud de acceso remoto del usuario.
Una manera de lograr esta transferencia es a través del método de servicio
remoto, con el cual se entregan al servidor las solicitudes de acceso, la
maquina servidora lleva a cabo dichos accesos y los usuarios se devuelven al
usuario
Existe una coherencia directa entre los accesos y el trafico que va y viene del
servidor. De notar que se presenta una analogía directa entre los métodos de
acceso a disco en los sistemas de archivos convencionales y el método de
servicio remoto en un SAD. El método de servicio análogo efectúa un acceso
13
al disco para cada solicitud de acceso.
Una de las formas más comunes de servicio remoto es el paradigma de
llamada a procedimiento remoto, RPC fue diseñado como una forma de
abstraer el mecanismo de llamadas a procedimientos para usarse entre
sistemas con conexiones de red.
Memoria Caché
Para asegurar un rendimiento razonable del esquema de servicio remoto
presentado en la sección anterior utilizamos una forma de memoria caché. En
los sistemas de archivos convencionales, el fundamento para la memoria
caché es la reducción de la E/S de disco (lo que aumenta el rendimiento), en
un SAD el objetivo es reducir el tráfico en la red.
Esquema Básico, el concepto de memoria caché es sencillo, si los datos
necesarios para satisfacer la solicitud de acceso no se encuentran en la
memoria cache, se trae una copia de servicio al usuario y los accesos se
llevan a cabo con la copia de memoria caché.
La idea es conservar allí los bloques de disco de acceso mas reciente, para así
manejar localmente los accesos repetidos a la misma información y no
aunmentar el trafico de la red. Se utiliza una política de remplazo (por
ejemplo, la de utilización menos reciente) para limitar el tamaño de la
memoria caché.
Políticas de Actualización, la política empleada para escribir los bloques de
datos modificados en la copia maestra del servidor tiene un efecto decisivo
sobre la confiabilidad y el rendimiento del sistema. La política mas sencilla
consiste en escribir los datos directamente en el disco tan pronto se coloquen
en una memoria caché. La ventaja de la escritura directa es su confiabilidad,
ya que se pierde poca información si un sistema cliente falla.
Sin embargo, esta política requiere que cada acceso de escritura espere hasta
que se envíe la información al servidor, por lo que representa una escritura de
escaso rendimiento. La memoria caché con escritura directa equivale a usar el
servicio remoto para accesos de escritura y explotar la memoria cache
únicamente para accesos de lectura. NFS proporciona el acceso de escritura
directa.
Consistencia, una maquina cliente se enfrenta al problema de decidir si una
copia de datos en memoria caché local es consistente con la copia maestra ( y
por tanto, puede usarse). Si la maquina cliente determina que sus datos en
memoria caché están desfasados, ya no pueden servir para los accesos y hay
que colocar en la memoria caché una copia actualizada de los datos. Existen
dos enfoques para verificar la validez de los datos en memoria caché ..:
• Enfoque iniciado por el cliente, el cliente inicia una comprobación
de validez, en la cual se pone en contacto con el servidor y
comprueban si los datos locales son consistentes con la copia
maestra.
• Enfoque iniciado por el servidor, el servidor anota, para cada
14
cliente, las partes de los archivos que coloca en memoria cache, y
cuando detecta una inconsistencia, debe reaccionar. Una posible
fuente inconsistencia ocurre cuando dos clientes, que trabajan en
modos conflictivos, colocan en memoria caché un archivo.
Replicación de Archivo
La replicación de archivos en maquinas diferentes es una redundancia útil
para mejorar la disponibilidad. La replicación en varias maquinas puede
beneficiar el rendimiento, ya que, al seleccionar una replica cercana para
atender una solicitud de acceso, el tiempo de servicio es menor.
El requisito fundamental de un sistema de replicación es que las replicas de
un archivo residan en maquinas independientes de las fallas; es decir, que la
disponibilidad de una replica no se vea afectada por la disponibilidad de las
demás. Este requisito obvio quiere decir que la administración de replicas es
una actividad en la cual la ubicación es decisiva, pues deben existir
mecanismos para colocar la replica en una maquina concreta.
Ejemplos de Sistema
En esta sección ilustramos los conceptos comunes sobre los que se basan los
sistemas de archivos distribuidos, examinado cinco sistemas interesantes y
diferentes : UNIX United, NFS, Andrew, Sprite y Locus.
UNIX United
El proyecto de UNIX United de la University of Newcastle Tyne, Inglaterra,
es uno de los primero intentos por ampliar el sistema de archivo UNIX para
que sea distribuido, sin modificar el nucleo de UNIX. En UNIX United se
añade un sub−sistema de software a cada conjunto de sistema UNIX
interconectados (conocidos como sistemas componentes o constituyentes),
para asi construir un sistema distribuido funcionalmente indistinguible de un
sistema UNIX centralizado convencional.
El sistema se presenta con dos niveles de detalles : Primero, se encuentran los
aspectos generales de UNIX United; luego se examina su implantación, la
planta de conexión Newcastle, y se analizan algunos temas relacionados con
el trabajo entre redes.
Aspectos Generales, Es posible unir cualquier numero de sistemas UNIX
enlasados para formar un sistema de UNIX United. Sus estructuras de
nominación (de archivos, dispositivos, directorios y mandatos) se unen para
formar una estructura de nominación unica en la cual cada componente es, a
todos los efectos, un directorio.
Ignorado por el momento todas las preguntas respecto a la acreditación y al
control de acceso, el sistema que se obtiene es uno donde cada usuario puede
leer o escribir un archivo, utilizar cualquier dispositivo, ejecutar cualquier
mandato o inspeccionar cualesquiera de los directorios, sin importar el
sistema al que pertenesca.
La Conexión Newcastle, es una capa de software ( a un nivel de usuario)
15
que se incorpora a cada uno de los sistemas componentes y que separa el
núcleo UNIX de los programas a nivel de usuario. Intercepta todas las
llamadas al sistema que tiene ue ver con archivos y filtra aquellas que se
deben desviar a sistemas remotos. Además, la capa de conexión acepta las
llamadas enviadas por otros sistemas.
Las capas remotas se comunican por medio de un protocolo RPC. Cada
conexión conserva e mismo interfaz de llamadas al sistema que el nucleo de
UNIX, a pesar de la extensa actividad remota que lleva a cabo el sistema.
Aspectos de la Operación en Red, UNIX United es adecuado para distintas
topologías que van desde redes locales ( LAN ) y enlaces directos, hasta
redes de area ancha ( WAN ). Es necesario efectuar una correspondencia
correcta entre el espacio de nombre lógicos y la información de
encaminamiento. Un principio de diseño importante es que no se requiere que
la jeralquia de nombre tenga relación con la topología.
El Protocolo NFS
El protocolo NFS proporciona un conjunto de llamadas a procedimiento
remoto para las operaciones con archivos remotos. Estos procedimientos
apoyan las siguientes operaciones..:
• Buscar un archivo en un directorio
• Leer un conjunto de registros de directorio
• Manipular enlaces y directorios
• Acceder a los atributos de archivos
• Leer y escribir archivos
Solo es posible invocar este procedimiento despues de haber establecido un
identificativo de archivo para el diretorio montado remotamente.
La omisión de las operaciones de apertura y cierre es intensional. Una de las
caracteristicas prominentes de los servidores NFS es que operan sin estado y
no conservan información acerca de sus clientes de un acceso a otro.
Arquitectura de NFS
Consiste en tres capas principales. La primera capa es el interfaz de sistema
de archivo UNIX, basado en la llamadas de apertura, lectura, escritura y
cierre, y los descriptores de archivos.
La segunda capa se denomina sistema virtual de archivos ( VFS, Virtual File
System ), y ofrece dos funciones de importancia ..:
• Separa las operaciones genericas sobre el sistema de archivos de su
implantación al definir un interfaz VFS limpio. Varias
implantaciones del interfaz VFS pueden coexistir en la misma
maquina lo que permite el acceso transparente a distintos tipos de
sistemas de archivos montados localmente.
• El VFS esta basado en una estructura de representación de archivos
llamados Nodo−v, que contiene un identificador numerico para un
archivo, unico en toda la red.
16
Descargar