miércoles, 1 de octubre de 2008

Complejidad y Aspectos que intervienen en el diseño de un Sistema Operativo Distribuido.

Conocimiento Global.
Se trata de conocer y actualizar el estado global (global Knowledge) de todos los procesos y recursos del sistema.

Características:
Se tiene soluciones mucho más complejas.
No se tiene disponibilidad de una memoria global y un reloj global, no se pueden predecir los retardos y mensajes.

Una sola computadora no puede colectar toda la información del sistema distribuido.
Un problema que se presenta es determinar técnicas eficientes para establecer controles amplios en un sistema descentralizado y donde una sola computadora no conoce el estado actual y completo del sistema global.

Otro problema significativo se presenta debido a la ausencia de un reloj global y no permite tener formas de ordenar y controlar todos los eventos que ocurren en diferentes tiempos y en diferentes computadoras.

Nomenclatura.
En ese aspecto se utilizan nombres para referirse a los objetos (Computadoras, impresoras, servicios, archivos y usuarios).
Por ejemplo: El servicio de FTP o el servicio de DNS.

Características:
En un servidor de nombres se mapea un nombre lógico a una dirección física por medio de tablas.
En un Sistema Distribuido los directivos pueden ser replicados y almacenados en varias lugares para reducir las posibilidades de fallas e incrementar la disponibilidad del servicio.
Se requiere más capacidad de almacenamiento.
Requiere de sincronización para actualizar los directorios de cada localización.
Puede utilizarse partición de directorios en lugar de replicación, pero es mucho más complejo.

Escalabilidad.
Los sistemas crecen con el tiempo y les puede afectar la poca disponibilidad y la degradación del rendimiento cuando el crecimiento ocurre.

Compatibilidad.
Se refiere a la interoperabilidad entre los recursos de un sistema. Generalmente existen 3 niveles de compatibilidad aplicados a los sistemas.

Nivel binario:
Todos los procesadores ejecutan el mismo conjunto de instrucciones binarias, sin embargo los procesadores pueden diferir en rendimiento y su forma de entrada y salida.

Ventajas:
Es más fácil el desarrollo de sistemas.
No pueden incluirse arquitecturas diferentes de un fabricante o varios.
Es raramente soportado por sistemas grandes.

Nivel Ejecución:
Se presenta cuando el mismo código fuente puede ser compilado y ejecutado correctamente en cualquier computadora del sistema.

Nivel Protocolo:
Es el menos receptivo de todos ya que se obtiene interoperabilidad con el simple requerimiento de los componentes de comunicación de los sistemas, soportan un conjunto común de protocolos por ejemplo las computadoras individuales pueden ejecutar diferentes Sistemas y sacrificar su operatibilidad.

Sincronización de Procesos
Es uno de los más importantes a considerar dentro de los sistemas distribuidos. La sincronización es difícil por la falta de una memoria común al no conocerse las características de los procesos que se ejecutan.

Características:
Un Sistema Operativo Distribuido tiene que sincronizar los procesos que se están ejecutando en diferentes computadoras cuando estas tratan de accesar concurrentemente un recurso compartido, por ejemplo: un directorio.

El recurso compartido debe ser accesado por un proceso a la vez, a esto se le conoce como mutua exclusión.

Cuando se tiene acceso concurrentemente a un recurso compartido por diversas peticiones no coordinadas de usuarios, estas deben de seriabilizarse para asegurar la integridad del recurso.
Los procesos deben solicitar recursos locales o remotos y posteriormente liberados en cualquier orden que puede ser no conocido.

Si la ausencia de asignación de recursos de los procesos no se controla se puede presentar un " Dead Lock " ( Candado muerto o recurso bloqueado ) que degrade al sistema.

Administración de Recursos.
Se refiere en hacer que los recursos locales y remotos de una manera efectiva y fácil. Esta localización de recursos debe ser transparente para el usuario.

Los recursos deben estar disponibles de la siguiente manera:

Migración de datos:
Los datos son traídos al lugar del sistema donde son necesitados, pueden llegar a ser desde un archivo ( local o remoto ) o hasta el contenido de una memoria física.

Características:
1. Si un proceso actualiza un conjunto de datos, la localización original debe de ser también actualizada.
2. Se utiliza normalmente sistemas de archivos distribuidos que son componentes que implementan un sistema común de archivos disponibles para todas las computadoras autónomas del sistema. Su objetivo principal es proveer la misma capacidad funcional de acceso a los archivos sin importar su localización dentro de la red. A esto se le conoce como transparencia.
3. Otro de los elementos utilizados para la migración de datos es la administración de memoria compartida distribuida. Provee de un espacio de direccionamiento virtual que es compartido entre todas las computadoras del sistema distribuido. La mayor complejidad de implementar memoria compartida distribuida es el mantener la consistencia de los datos y reducir los retardos en el acceso de los mismos.

Migración de Cálculos:
Los cálculos procesados son llevados hacia otra localización y puede ser eficiente bajo ciertas circunstancias, por ejemplo: Cuando se requiere información de un directorio remoto es más eficiente enviar el mensaje solicitando la información necesaria y recibiéndola de regreso.

Planeación Distribuida:
Los procesos son transferidos de una computadora a otra dentro del sistema distribuido, esto es que un proceso puede ser ejecutado en una computadora diferente de donde fue originado.
Este proceso de relocalización puede ser deseable si la computadora donde se origino se encuentra sobrecargada o no posee los recursos necesarios.
La planeación distribuida es la responsable de todos los procesos distribuidos que se lleven a cabo entre computadoras sean efectuados con criterio y transparencia para obtener el máximo rendimiento.

Seguridad
La seguridad de un sistema es la responsable de la integridad del Sistema Operativo dentro del diseño de un sistema de seguridad se consideren dos aspectos importantes:
Autentificación: Es el proceso de garantizar que una entidad es quien debe ser.
Autorización: Es el proceso de decidir que privilegios tiene una entidad y hacer que solo esos privilegios se encuentren disponibles.

Estructuración
La estructuración de un sistema Operativo define como están organizadas sus partes y que comúnmente especifican el funcionamiento del mismo.
En Sistemas Distribuidos Utilizan normalmente los siguientes métodos tradicionales de estructuración de un Sistema Operativo.

Núcleo Monolítico: Es el método tradicional de estructurar Sistemas Operativos, esto se lleva a cabo a través de un gran núcleo monolítico que contiene todas las funciones y servicios provistos por el Sistema Operativo. Existen casos entre los Sistemas Distribuidos donde el uso de un bloque monolítico grande no es de mucha utilidad para los servicios ofrecidos por el Sistema Operativo (Estaciones sin disco, estaciones con medios locales de almacenamiento, estaciones con procesadores matemáticos específicos, etc.).

Núcleo Colectivo: En esta estructura se tiene una colección de procesos que son ampliamente independientes unos de otros. Los servicios del Sistema Operativo ( Administración de memoria distribuida, sistemas de archivos distribuidos, sincronización distribuida, procesos RPC, administración de tiempos, etc.) son implementados como procesos independientes. El núcleo del Sistema Operativo ( Comúnmente llamado Microkernel ) soporta la interacción entre los procesos que proveen los servicios al Sistema Operativo, también provee los servicios típicamente esenciales para cada computadora tal como la administración de tareas. El microkernel se ejecuta en todas las computadoras del sistema, mientras que los otros procesos pueden o no correr según se requiera.

Sistema Orientado a Objetos: Estos sistemas son estructurados utilizando el concepto de objetos, donde cada uno de los servicios son implementados como un objeto del sistema y que en términos de un ambiente de objeto, se le conoce como colección. Cada objeto encapsula una estructura de datos y define un conjunto de operaciones para ese objeto, de manera que cada uno de estos objetos corresponden a un tipo definido, por ejemplo: Objetos de procesos, directorios o archivos. Este modelo se puede cambiar con la estructura colectiva y las técnicas de separación de funciones y mecanismos.

No hay comentarios: