UNIDAD 2 COMUNICACIÓN EN LOS 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 sistemascentralizados 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 Etherneto Token ring. En la actualidad, Internet es la redde 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ónentre 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.
http://www.monografias.com/trabajos6/sidi/sidi.shtml
2.1 COMUNICACION SOD
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.
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.
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 comunicación entre procesos en sistemas con un único procesador se lleva a cabo mediante el uso de memoriacompartida entre los procesos.
En los sistemas distribuidos, al no haber conexión física entre las distintas memoriasde los equipos, la comunicación se realiza mediante la transferencia de mensajes.
2.1.1 COMUNICACION CLIENTE SERVIDOR SOCKETS
LOS SOCKETS.
Los sockets no son más que puntos o mecanismos de comunicación entre
procesos que permiten que un proceso hable ( emita o reciba información ) con otro proceso incluso estando estos procesos en distintas máquinas.
Esta característica de interconectividad entre máquinas hace que el concepto de socket nos sirva de gran utilidad. Esta interfaz de comunicaciones es una de las distribuciones de Berkeley al sistema UNIX, implementándose las utilidades de interconectividad de este Sistema Operativo ( rlogin, telnet, ftp, ... ) usando sockets.Un socket es al sistema de comunicación entre ordenadores lo que un buzón o un teléfono es al sistema de comunicación entre personas: un punto de comunicación entre dos agentes ( procesos o personas respectivamente ) por el cual se puede emitir o recibir información. La forma de referenciar un socket por los procesos implicados es mediante un descriptor del mismo tipo que el utilizado para referenciar ficheros.
Debido a esta característica, se podrá realizar redirecciones de los archivos de E/S estándar (descriptores 0,1 y 2) a los sockets y así combinar entre ellos aplicaciones de la red. Todo nuevo proceso creado heredará, por tanto, los descriptores de sockets de su padre.
La comunicación entre procesos a través de sockets se basa en la filosofía
CLIENTE-SERVIDOR: un proceso en esta comunicación actuará de proceso
servidor creando un socket cuyo nombre conocerá el proceso cliente, el cual podrá
"hablar" con el proceso servidor a través de la conexión con dicho socket nombrado. El proceso crea un socket sin nombre cuyo valor de vuelta es un descriptor sobre el que se leerá o escribirá, permitiéndose una comunicación bidireccional, característica propia de los sockets y que los diferencia de los pipes, o canales de comunicación unidireccional entre procesos de una misma máquina.
El mecanismo de comunicación vía sockets tiene los siguientes pasos:
1º) El proceso servidor crea un socket con nombre y espera la
conexión.
2º) El proceso cliente crea un socket sin nombre.
3º) El proceso cliente realiza una petición de conexión al socket
servidor.
4º) El cliente realiza la conexión a través de su socket mientras el
proceso servidor mantiene el socket servidor original con
nombre.
Es muy común en este tipo de comunicación lanzar un proceso hijo, una vez
realizada la conexión, que se ocupe del intercambio de información con el proceso
cliente mientras el proceso padre servidor sigue aceptando conexiones.
Para eliminar esta característica se cerrará el descriptor del socket servidor con nombre en cuanto realice una conexión con un proceso socket cliente.
Todo socket viene definido por dos características fundamentales:
- El tipo del socket, que indica la naturaleza del mismo, el tipo de comunicación
que puede generarse entre los sockets.
- El dominio del socket especifica el conjunto de sockets que pueden establecer
una comunicación con el mismo.
Vamos a estudiar con más detalle estos dos aspectos:
Tipos de sockets.
Define las propiedades de las comunicaciones en las que se ve envuelto un
socket, esto es, el tipo de comunicación que se puede dar entre cliente y servidor.
Estas pueden ser:
- Fiabilidad de transmisión.
- Mantenimiento del orden de los datos.
- No duplicación de los datos.
- El "Modo Conectado" en la comunicación.
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sockets/default3.asp
2.1.2 COMUNICACION CON RPC
RCP (REMOTE PROCEDURE CALL)
El mecanismo general para las aplicaciones cliente-servidor se proporciona por el paquete Remote Procedure Call (RPC). RPC fue desarrollado por Sun Microsystems y es una colección de herramientas y funciones de biblioteca. Aplicaciones importantes construidas sobre RPC son NIS, Sistema de Información de Red y NFS, Sistema de Ficheros de Red. Un servidor RPC consiste en una colección de procedimientos que un cliente puede solicitar por el envío de una petición RPC al servidor junto con los parámetros del procedimiento. El servidor invocará el procedimiento indicado en nombre del cliente, entregando el valor de retorno, si hay alguno. Para ser independiente de la máquina, todos los datos intercambiados entre el cliente y el servidor se convierten al formato External Data Representation (XDR) por el emisor, y son reconvertidos a la representación local por el receptor. RPC confía en sockets estandard UDP y TCP para transportar los datos en formato XDR hacia el host remoto. Sun amablemente a puesto RPC en el dominio público; se describe en una serie de RFCs.
La comunicación entre servidores RPC y clientes es un tanto peculiar. Un servidor RPC ofrece una o más colecciones de procedimientos; cada conjunto se llama un programa y es idenficado de forma única por un número de programa. Una lista que relaciona nombres de servicio con números de programa se mantiene usualmente en /etc/rpc.
http://www.mitecnologico.com/Main/ComunicacionConRpc
2.1.3 COMUNICACION EN GRUPO
Conceptualizamos la comunicación como el medio que permite acciones mutuas entre las personas. Existe comunicación cuando una persona influye sobre el comportamiento de otra, incluso sin hablar. Mientras más sentidos intervengan, mejor será la comunicación.
Comunicar es poner en común. Uno comunica sentimientos, ideas, datos…. En general el término se refiere a cosas inmateriales, o mejor dicho “inasibles”. Cuando son bienes en tres dimensiones se utiliza mejor el término “intercambio”. Esto no quita que algunos especialistas generalicen y se refieran a “comunicación” para nombrar cualquier clase de interacción. Pero me parece complicar las cosas. Así que, si no hay objeciones, dejemos esta palabra para significar cualquier clase de intercambio de bienes no-materiales, preferentemente información.
En la teoría de la información se designan convencionalmente a un Emisor y a un Receptor que se representan gráficamente unidos por una doble flecha. Ésta indica que sólo se puede hablar de comunicación, en el estricto sentido de la palabra, cuando el R tiene la ocasión de poder reaccionar al mensaje del emisor.
http://www.mitecnologico.com/Main/ComunicacionEnElGrupo
2.1.4 TOLERANCIA A FALLOS
Tolerancias a fallos en informática (en inglés failover, suele confundírse con el término concurrencia) se determina a la capacidad de un sistema de almacenamiento de acceder a información aún en caso de producirse algún fallo. Esta falla puede deberse a daños físicos (mal funcionamiento) en uno o más componentes de hardware lo que produce la pérdida de información almacenada.
La tolerancia a fallos requiere para su implementación que el sistema de almacenamiento guarde la misma información en más de un componente de hardware o en una máquina o dispositivo externos a modo de respaldo. De esta forma, si se produce alguna falla con una consecuente pérdida de datos, el sistema debe ser capaz de acceder a toda la información recuperando los datos faltantes desde algún respaldo disponible.
Por lo general, el término tolerancia a fallos está asociado al almacenamiento en RAID (Redundant Array of Independent Disks). Los RAID (a excepción de RAID 0) utilizan la técnica Mirroring (en espejo) que permite la escritura simultánea de los datos en más de un disco del array.
Los sistemas de almacenamiento con tolerancia a fallos son vitales en ambientes donde se trabaje con información crítica, como el caso de los bancos, entidades gubernamentales, algunas empresas, etc. El nivel de tolerancia a fallos dependerá de la técnica de almacenamiento utilizada y de la cantidad de veces que la información está duplicada, sin embargo, la tolerancia nunca es del 100% puesto que si fallan todos los "mirrors" disponibles, incluyendo el origen, los datos quedan incompletos por lo tanto la información se leerá corrupta.
http://es.wikipedia.org/wiki/Tolerancia_a_fallos
2.2 SINCRONIZACION SISTEMAS DISTRIBUIDOS
Un sistema distribuido debe permitir el apropiado uso de los recursos, debe encargarse de un buen desempeño y de la consistencia de los datos, además de mantener seguras todas estas operaciones [Tanenbaum96].
La sincronización de procesos en los sistemas distribuidos resulta más compleja que en los centralizados, debido a que la información y el procesamiento se mantiene en diferentes nodos. Un sistema distribuido debe mantener vistas parciales y consistentes de todos los procesos cooperativos y de cómputo. Tales vistas pueden ser provistas por los mecanismos de sincronización.
El término sincronización se define como la forma de forzar un orden parcial o total en cualquier conjunto de eventos, y es usado para hacer referencia a tres problemas distintos pero relacionados entre sí:
- La sincronización entre el emisor y el receptor.
- La especificación y control de la actividad común entre procesos cooperativos.
- La serialización de accesos concurrentes a objetos compartidos por múltiples procesos.
Haciendo referencia a los métodos utilizados en un sistema centralizado, el cual hace uso de semáforos y monitores; en un sistema distribuido se utilizan algoritmos distribuidos para sincronizar el trabajo común entre los procesos y estos algoritmos tienen las siguientes propiedades:
- Como una característica de los sistemas distribuidos, es inaceptable que se concentre en un nodo, a toda aquella información que sea relevante para la toma de decisiones que tengan que llevar a cabo los procesos, pues es común que lo hagan basándose en la información almacenada localmente.
- Se debe contemplar o prever los posibles puntos de fallo del sistema, puesto que en un sistema distribuido el flujo de trabajo no debe verse afectado si el proceso se interrumpe en algún nodo.
- Debido a que puede existir un gran número de nodos de procesamiento, no existe un reloj o fuente de tiempo común para todos ellos. Esto se simplifica al hecho de en que tiempo ocurre un suceso con respecto de otro.
http://antares.itmorelia.edu.mx/~antolino/sis-dis-1/capitulo_3.html
2.2.1 RELOJES FISICOS
Para conocer en qué hora del día ocurren los sucesos, es necesario sincronizar los relojes de los procesos Ci, con una fuente de tiempo externa autorizada. Esto es la sincronización externa. Si están sincronizados con otro con un grado de precisión conocido, entonces podemos medir el intervalo entre dos eventos que ocurren en diferentes computadores llamando a sus relojes locales, incluso aunque ellos no estén necesariamente sincronizados con una fuente externa de tiempo. Esto es sincronización interna. Definimos estos dos modos de sincronización más detalladamente como sigue, sobre un intervalo de tiempo real.
Los relojes que están sincronizados internamente no están necesariamente sincronizados externamente, puesto que pueden desplazarse colectivamente desde una fuente de 3 tiempo externa incluso aunque estén de acuerdo entre sí.
www.scribd.com/.../Sincronizacion-de-sistemas-Relojes-fisicos-y-logicos-
2.2.2 RELOJES LOGICOS
Los sucesos están ordenados e forma única por los tiempos mostrados en el reloj lógico. Puesto que no podemos sincronizar perfectamente los relojes a lo largo de un sistema distribuido, no podemos usar, en general, el tiempo físico para obtener el orden de cualquier par arbitrario de sucesos que ocurran en él.
Podemos utilizar un esquema que es similar a la causalidad física, pero que se aplica en los sistemas distribuidos, para ordenar algunos de los sucesos que ocurren en diferentes procesos. Esta ordenación está basada en dos puntos sencillos e intuitivamente obvios.
Cuando se envia un mensaje entre procesos, el suceso de enviar el mensaje ocurrió antes del de recepción del mismo.
www.itistmo.edu.mx/.../APUNTES.../
2.3 NOMINACION CARACTERISTICAS Y ESTRUCTURAS
Estructura modular.
También llamados sistemas monolíticos. Este tipo de organización es con mucho la mas común; bien podría recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna.
El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto cálculo útil para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa de nombre "llamada al núcleo" o "llamada al supervisor".
Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema operativo
Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema operativo
. El sistema operativo examina entonces los parámetros de la llamada, para determinar cual de ellas se desea realizar. A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. Identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario.
Esta organización sugiere una organización básica del sistema operativo:
1.- un programa principal que llama al procedimiento del servicio solicitado.
2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.
2.3.2 TIPOS DE NOMBRES USUARIO Y DE SISTEMA
En el contexto de la informática, un usuario es aquel que utiliza un sistema informático. Para que los usuarios puedan obtener seguridad, acceso al sistema, administración de recursos, etc, dichos usuarios deberán identificarse. Para que uno pueda identificarse, el usuario necesita una cuenta (una cuenta de usuario) y un usuario, en la mayoría de los casos asociados a una contraseña. Los usuarios utilizan una interfaz de usuario para acceder a los sistemas, el proceso de identificación es conocido como identificación de usuario o acceso del usuario al sistema (del inglés: "log in").
Los usuarios se caracterizan por ser el tipo de personas que utilizan un sistema sin la amplia experiencia necesaria que se requiere para entender al sistema (en oposición al técnico, hacker u otro perfil que sí se presupone conoce dicho sistema). En el contexto hacker, se les denomina usuarios reales.
Los usuarios de informática son muy similares a los usuarios en telecomunicaciones, pero con algunas pequeñas diferencias semánticas. La diferencia es comparable a la diferencia que existe entre un usuario final y los consumidores en la economía.
Por ejemplo, uno puede ser un usuario (y tener una cuenta) de un sistema informático, una red de computadoras ó tener una cuenta de correo electrónico.
http://es.wikipedia.org/wiki/Cuenta_de_usuario
2.3.3 RESOLUCION Y DISTRIBUCION
En general, los sistemas distribuidos (no solamente los sistemas operativos) exhiben algunas ventajas sobre los sistemas centralizados que se describen enseguida.
•Economía: El cociente precio/desempeño de la suma del poder de los procesadores separados contra el poder de uno solo centralizado es mejor cuando están distribuídos.
•Velocidad: Relacionado con el punto anterior, la velocidad sumada es muy superior.
•Confiabilidad: Si una sola máquina falla, el sistema total sigue funcionando.
•Crecimiento: El poder total del sistema puede irse incrementando al añadir pequeños sistemas, lo cual es mucho más difícil en un sistema centralizado y caro.
•Distribución: Algunas aplicaciones requieren de por sí una distribución física.
Por otro lado, los sistemas distribuídos también exhiben algunas ventajas sobre sistemas aislados. Estas ventajas son:
•Compartir datos: Un sistema distribuído permite compartir datos más fácilmente que los sistemas aislados, que tendrian que duplicarlos en cada nodo para lograrlo.
•Compartir dispositivos: Un sistema distribuído permite accesar dispositivos desde cualquier nodo en forma transparente, lo cual es imposible con los sistemas aislados. El sistema distribuído logra un efecto sinergético.
•Comunicaciones: La comunicación persona a persona es factible en los sistemas distribuídos, en los sistemas aislados no. _ Flexibilidad: La distribución de las cargas de trabajo es factible en el sistema distribuídos, se puede incrementar el poder de cómputo.
http://www.monografias.com/trabajos47/sistema-operativo/sistema-operativo2.shtml
2.3.4 SERVIDORES Y AGENTES DE NOMBRES
Un agente de usuario es una aplicación informática que funciona como cliente en un protocolo de red; el nombre se aplica generalmente para referirse a aquellas aplicaciones que acceden a la World Wide Web. Los agentes de usuario que se conectan a la Web pueden ser desde navegadores web hasta los web crawler de los buscadores, pasando por teléfonos móviles, lectores de pantalla y navegadores en Braille usados por personas con discapacidades.
Cuando un usuario accede a una página web, la aplicación generalmente envía una cadena de texto que identifica al agente de usuario ante el servidor. Este texto forma parte del pedido a través de HTTP, llevando como prefijo User-agent: o User-Agent: y generalmente incluye información como el nombre de la aplicación, la versión, el sistema operativo, y el idioma. Los bots, como los web crawlers, a veces incluyen también una URL o una dirección de correo electrónico para que el administrador del sitio web pueda contactarse con el operador del mismo.
La identificación de agente de usuario es uno de los criterios de exclusión utilizado por el Estándar de exclusión de robots para impedir el acceso a ciertas secciones de un sitio web.
Verificación del agente de usuario
La verificación del agente de usuario —técnica más conocida por su nombre en inglés, user agent sniffing— se refiere a la costumbre de ciertos sitios web de mostrar contenidos diferentes según el agente de usuario; en Internet, esto implica mostrar diferentes contenidos según el navegador web. Un triste ejemplo de esta práctica es Outlook 2003 Web Access, de Microsoft; Internet Explorer tiene acceso a funcionalidades no disponibles si se accede con otro navegador web. La verificación y consecuente discriminación según el agente de usuario es considerada generalmente una mala costumbre, porque implica un diseño diferente para cada situación. Generalmente se les recomienda a los responsables de sitios web que utilizan código HTML respetar tanto como sea posible los estándares para lograr un resultado similar con navegadores diferentes.
http://es.wikipedia.org/wiki/Agente_de_usuario
2.3.5 MAPEO DE DIRECCIONES
Para poder ejecutar instrucciones, si no sabemos en qué parte de la memoria estarán cargadas, debemos tener un mecanismo de traducción de direcciones virtuales a reales. Para ello, se necesitan dos cosas. Primero, el compilador manejará una dirección base más un desplazamiento al referirse a las instrucciones. Segundo, el sistema operativo asignará como dirección base el número de página, al paginar al proceso.
De esta manera, puede buscarse el inicio de una página en memoria, sumarle el desplazamiento y así obtener la dirección real de una instrucción.
La traducción de direcciones virtuales para segmentos se maneja de
manera similar.
En sistemas distribuidos el uso de una dirección puede ser tratado como un intermediario y una ruta de acceso.
Una dirección esta asociada con la localización física del nombre de los objetos, orientando principalmente hacia un proceso computacional el cual es utilizado para generar la ruta.
Existe una relación muy estrecha entre la aplicación de un esquema de direccionamiento y su siguiente paso, que es el mapeo, el cual consiste en establecer referencias indirectas que nos permitan ir acercándonos hacia el elemento deseado.
Una característica de un sistema que utiliza direccionamiento y mapeo es el uso de identificadores únicos orientados a la computadora los cuales garantizan su induplicidad en espacio y tiempo para evitar conflictos al e migrar datos e información entre diferentes sistemas.
2.3.6 MAPEO DE RUTAS
En sistemas distribuidos el uso de una dirección puede ser tratado como un intermediario y una ruta de acceso.
Una dirección esta asociada con la localización física del nombre de los objetos, orientando principalmente hacia un proceso computacional el cual es utilizado para generar la ruta.
Existe una relación muy estrecha entre la aplicación de un esquema de direccionamiento y su siguiente paso, que es el mapeo, el cual consiste en establecer referencias indirectas que nos permitan ir acercándonos hacia el elemento deseado.
Una característica de un sistema que utiliza direccionamiento y mapeo es el uso de identificadores únicos orientados a la computadora los cuales garantizan su induplicidad en espacio y tiempo para evitar conflictos al e migrar datos e información entre diferentes sistemas.
BUENAS NOCHES MAESTRO AL PARECER YA QUEDO EL
ResponderEliminarREPORTE DE LA UNIDAD 3... nos vemos mañana en
su clase.