jueves, 20 de septiembre de 2012

Tipos de RPC y Parametros


ONC

ONC RPC, abreviación del inglés Open Network Computing Remote Procedure Call, es un protocolo de llamada a procedimiento remoto (RPC) desarrollado por el grupo ONC de Sun Microsystems como parte del proyecto de su sistema de archivos de Red NFS, algunas veces se lo denomina Sun ONC o Sun RPC. Trabaja sobre los protocolos TCPy UDP. La codificación de datos se realiza utilizando el protocolo XDR (presentación de datos).
ONC RPC está regulado por RFC 1831. Los mecanismos de autenticación usados por ONC RPC están descritos en RFC 2695, RFC 2203, y RFC 2623.

Desarrollo de aplicaciones: compiladores de protocolo

El desarrollo de aplicaciones para ONC RPC consiste en desarrollar programas cliente/servidor, donde los datos deben codificarse según el protocolo XDR.
Las aplicaciones se realizan en forma sistemática mediante compiladores de protocolo como el programa rpcgen, que fue el programa original desarrollado por Sun que generaba casi todo el código en lenguaje C necesario para crear los programas servidor y cliente. Existen compiladores de este protocolo que generan código en Java, denominados jrpcgen.

Implementaciones

Las implementaciones de ONC RPC existen para la mayoría de los sistemas como Unix (OpenVMS Alpha, OpenVMS I64,1 etc.) y Linux (en el subdirectorio sunrpc de la biblioteca Glibc).
Las tecnologías que involucran a ONC RPC (incluyendo NFS y NIS) desarrollada por Sun para su sistema operativo Solaris, en sus versiones más recientes se denominan tecnologías ONC+.2
La Free Software Foundation está desarrollando una implementación GNU de este protocolo, denominado GNU Guile-RPC,3 como parte del desarrollo del lenguaje de programación GNU Guile.
Microsoft provee una implementación para su Windows en el producto "Microsoft Windows Services for UNIX”; además, existen otras implementaciones de ONC RPC para Windows, incluyendo versiones en lenguaje C/C++, Java, y Microsoft .NET.

DCE

DCE Remote Procedure Call o bien DCE RPC es un sistema de llamada a procedimiento remoto del conjunto de software OSF DCE. DCE / RPC, la abreviatura de "Distributed Computing Environment / Remote Procedure Calls ", es el sistema de llamada a procedimiento remoto desarrollado para el entorno de la informática distribuida (DCE). Este sistema permite a los programadores escribir software distribuido como si fuera todos los que trabajan en el mismo equipo, sin tener que preocuparse por el código de red subyacente.1
DCE RPC no debe confundirse con DCE el cual es un conjunto de servicios que incluye DCE RPC, además de otras cosas como CDS y DCE DFS.
DCE RPC fue encargado por la fundación Open Software Foundation. Una de las compañías clave que contribuyeron fue Apollo.

DCOM

Distributed Component Object Model (DCOM), en español Modelo de Objetos de Componentes Distribuidos, es una tecnología propietaria de Microsoft para desarrollar componentes software distribuidos sobre varios ordenadores y que se comunican entre sí. Extiende el modelo COM de Microsoft y proporciona el sustrato de comunicación entre la infraestructura del servidor de aplicaciones COM+ de Microsoft. Ha sido abandonada en favor del framework .NET.1 2
La adición de la "D" a COM fue debido al uso extensivo de DCE/RPC, o más específicamente la versión mejorada de Microsoft, conocida como MSRPC.
En términos de las extensiones que añade a COM, DCOM tenía que resolver los problemas de
·         Aplanamiento - Serializar y deserializar los argumentos y valores de retorno de las llamadas a los métodos "sobre el cable".
·         Recolección de basura distribuida, asegurándose que las referencias mantenidas por clientes de las interfaces sean liberadas cuando, por ejemplo, el proceso cliente ha caído o la conexión de red se pierde.
Uno de los factores clave para resolver estos problemas es el uso de DCE/RPC como el mecanismo RPC subyacente bajo DCOM. DCE/RPC define reglas estrictas en cuanto al aplanamiento y a quién es responsable de liberar la memoria.
DCOM fue uno de los mayores competidores de CORBA. Los defensores de ambas tecnologías sostenían que algún día serían el modelo de código y servicios sobre Internet. Sin embargo, las dificultades que suponía conseguir que estas tecnologías funcionasen a través de cortafuegos y sobre máquinas inseguras o desconocidas, significó que las peticiones HTTP normales, combinadas con los navegadores les ganasen la partida. Microsoft, en su momento intentó y fracasó anticiparse a esto añadiendo un transporte extra HTTP a DCE/RPC denominado "ncacn_http" (Connection-based, over HTTP).

Parámetro por Valor

Un parámetro por valor, como fd o nbytes, solo se copia a la pila. Para el procedimiento que recibe la llamada, un parámetro por valor es tan sólo una variable local ya iniciada. El procedimiento llamado podría modificarla, pero esto no afecta el valor de la variable original en el procedimiento que hizo la llamada.

Parámetro por Referencia

Un parámetro por referencia en C es un apuntador a una variable (es decir, la dirección de la variable), en lugar del valor de la variable. En la llamada a read, el segundo parámetro es un parámetro por referencia, puesto que en C los arreglos siempre se transfieren por referencia. Lo que se introduce en realidad a la pila es la dirección del arreglo de caracteres. Si el procedimiento llamado utiliza este parámetro para guardar algo en el arreglo de caracteres, esto sí modifica el arreglo en el procedimiento que hizo la llamada. La diferencia entre los parámetros llamados por valor o por referencia es importante para RPC, como veremos más adelante.

jueves, 13 de septiembre de 2012

Clasificación de Hardware de los SOD


Clúster
  • Una colección de estaciones de trabajo o PCs que están conectadas mediante alguna tecnología de red.
  • Para fines de computación paralela estas PCs o estaciones de trabajo estarán conectadas mediante una red de muy alta velocidad.
  • Un clúster trabaja como una colección integrada de recursos y pueden tener una imagen simple del sistema abarcando todos sus nodos.

Grid
  • Un gran conjunto de Sitios que están conectadas mediante una red global de alta velocidad (10 Gb/s) que tienen una alta capacidad de procesamiento (entre 1000 a 10000 GFLOPS) y un gran capacidad de almacenamiento (entre 1000 a 10000 TB)
  • Los Sitios interconectados utilizan Procesamiento Distribuido y P2P (Peer to Peer Architecture) con desarrollos de SW novedosos adicionales con interfaces estándar abiertas.
  • Utiliza nuevas técnicas de Autoadministración, auto escalabilidad y auto reparación (tolerante a fallas)

MPP
  • Es un gran sistema de procesamiento paralelo con una arquitectura que no comparte nada.
  • Consiste en cientos de elementos de procesamiento los cuales están interconectados por un Switch o red de alta velocidad.
  • Cada nodo puede tener una variedad de componentes de hardware, pero generalmente consisten de una memoria central y de uno o varios procesadores.

SMP
  • Poseen desde 2 a 64 procesadores y pueden ser considerados como una arquitectura que comparte todo.
  • En estos sistemas todos los procesadores comparten todos los recursos globales disponibles (bus del sistema, memoria, sistemas de I/O, etc.);
  • Una copia sencilla del Sistema Operativo corre en estos sistemas.

CC-NUMA
  • Es un sistema multiprocesador escalable.
  • Como en SMP, cada procesador en un sistema CC-NUMA tiene una vista global de toda la memoria.
  • Este tipo de sistema consigue su nombre (NUMA) a partir de los tiempos no uniformes que le toma para acceder ya sea a la parte memoria más cercana, así como a la más remota.

Sistemas Distribuidos
  • Pueden ser considerados redes convencionales de computadores independientes.
  • Los mismos tienen múltiples imágenes del sistema, a partir de que cada nodo tiene su propio sistema operativo, y
  • Cada máquina individual en un sistema distribuido puede ser, por ejemplo, una combinación de MPPs, SMPs, Clústeres, Grids y computadoras individuales.

Diferencias entre SO Distribuido y Sistema Distribuido

La diferencia es que los SO Distribuidos contienen varios Sistemas Distribuidos para su funcionamiento, esto quiere decir que un Sistema Distribuido forma parte de los SO Distribuidos.

Diferencias entre los Sistemas Operativos de Red, Distribuidos y Multiprocesador


Dentro de los que hoy en día se considera SOD podemos encontrar tres grandes grupos, donde cada uno de ellos tiene sus características y su uso particular (con mayor o menor difusión y teniendo la posibilidad de vincular diferentes tipos.
  • SO de Red
  • SO Distribuido (Real)
  • SO Multiprocesador

Las características generales de cada uno de ellos se puede ver en el siguiente cuadro:


Ejemplos de SO Distribuidos


Solaris
Es un sistema operativo de tipo Unix desarrollado desde 1992 inicialmente por Sun Microsystems y actualmente por Oracle Corporation como sucesor de SunOS. Es un sistema certificado oficialmente como versión de Unix. Funciona en arquitecturas SPARC y x86 para servidores y estaciones de trabajo.

Sprite
Es el nombre de un sistema operativo distribuido con un núcleo monolítico desarrollado por la University of California, Berkeley, más concretamente por el grupo de investigación de John Ousterhout.
Este sistema operativo tiene la apariencia para los programadores de un sistema único, ya que la distribución se produce dentro del propio núcleo y de este modo, Sprite nos da la impresión de estar trabajando sobre un típico sistema UNIX.

Amoeba
Amoeba es un sistema operativo distribuido de investigación, basado en una arquitectura de micronúcleo. Fue desarrollado por Andrew S. Tanenbaum y otros en la Universidad Libre de Amsterdam. El objetivo del proyecto Amoeba era construir un sistema de tiempo compartido que hiciera que una red entera de computadores pareciera a los ojos de un usuario como una máquina única.
Los servicios suministrados por el núcleo incluyen threads, segmentos de memoria, mecanismos de IPC (RPCs y mensajes) y E/S [160].
El desarrollo parece detenido, dado que la fecha de la última modificación en el código data de febrero de 2001.
Existen versiones para varias plataformas, incluyendo i386, Sun-3 y SPARC.

Clases de SO Distribuidos


Por su estructura 
  • Monolítica: Es  la  estructura  utilizada en los primeros SO en la que las funciones  se implementan en el kernel.
  • Por capas: Corresponde a una estructura  jerárquica que se divide en distintos niveles.
  • Maquina virtual: Se trata de un tipo de sistemas  operativos que presentan una interfaz a cada proceso, mostrando una máquina que parece idéntica a la maquina  real. 

Por los modos de explotación: maneras que puede  funcionar un 
  • Procesamiento por lotes: Es la agrupación por bloques  de los  trabajos  similares, existe la ausencia  de interacción entre el usuario y el proceso mientras se  ejecuta.
  • Multiprogramación: El SO se encarga de distribuir  la carga  computacional entre los procesadores existentes, con el fin de  incrementar el procesamiento de la máquina.Tiempo real: Un SO  en tiempo real  es aquel en el cual los resultados  son correctos  también es correcto  en el  tiempo que se producen los resultados.
  • Híbrido: Estos SO intentan ser  una mezcla    de los dos anteriores.
Por los servicios ofrecidos
  • Esta clasificación se tiene en cuenta la visión  del usuario  final 

Por el número de usuario:
  • Monousuario: Son aquellos que únicamente  soportan un usuario a la vez
  • Multiusuario: Son capaces de dar  servicio  a  mas de un usuario a la vez

Por el número de tareas:
  • Monotarea:  Son aquellas que solo permiten una tarea a la vez
  • Multitarea: Es aquella que  permite al usuario  estar realizando  varios  trabajos al mismo  tiempo.

Por el número de procesadores:
  • Monoproceso: Son los que  solamente permiten realizar un proceso a la vez
  • Multiproceso: son aquellos  que permiten realizar varios procesos simultáneamente y son  capaces de  ejecutar varias  tareas  al mismo tiempo.

Por la forma de ofrecer los servicios.
  • Sistema centralizado: Con este  tipo de modelo  los computadores  mainframe se encargaban de todo el procesamiento  y los usuarios manejaban únicamente terminales  tontas
  • Sistemas de Red: Estos SO son aquellos que mantienen  a dos o mas computadoras  unidas  a través de un medio  de comunicación  con  el objetivo primordial  de poder  compartir  los diferentes recursos  y la  información  del sistema, cada computador mantienen  su propio SO
  • Sistemas distribuidos: Son sistemas  cuasi-independientes  que permiten distribuir los trabajos, tareas  o procesos  entre  un conjunto  de procesadores.

miércoles, 5 de septiembre de 2012

Tipos de Sistemas Operativos

Sistema Operativo Distribuido:
Es una serie de computadoras que comparten recursos, comunican y coordinan sus acciones únicamente mediante el paso de mensajes.

Sistema de Archivos Distribuido:
Es una implementación distribuida del clásico modelo de tiempo compartido de un sistema de archivos, donde varios usuarios comparten archivos y almacenan recursos.

Sistema Distribuido Basado en Web:
Su arquitectura no es diferente a los de otros sistemas distribuidos, los SO basados en la web están organizados como arquitecturas cliente-servidor relativamente simples.

Sistemas Basados en Objetos Distribuidos:
En estos sistemas la noción de un objeto desempeña un rol fundamental al establecer la transparencia de la distribución. Diseñar e implementar sistemas distribuidos que se estructuren como colecciones de componentes modulares (objetos) que puedan ser manejados fácilmente y organizados en capas para ocultar la complejidad del diseño.

martes, 4 de septiembre de 2012

Sistemas Operativos Distribuidos - Ventajas y Desventajas

Ventajas de los Sistemas Distribuidos con Respecto a los Centralizados

Una razón para la tendencia hacia la descentralización es la economía. Herb Grosch formuló la que se llamaría “Ley de Grosch”:
  • El poder de cómputo de una CPU es proporcional al cuadrado de su precio:
    • Si se paga el doble se obtiene el cuádruple del desempeño.
  • Fue aplicable en los años setentas y ochentas a la tecnología mainframe.
  • No es aplicable a la tecnología del microprocesador:
    • La solución más eficaz en cuanto a costo es limitarse a un gran número de cpu baratos reunidos en un mismo sistema.

Los sistemas distribuidos generalmente tienen en potencia una proporción precio/desempeño mucho mejor que la de un único sistema centralizado.


Algunos autores distinguen entre:
  • Sistemas distribuidos: están diseñados para que muchos usuarios trabajen en forma conjunta.
  • Sistemas paralelos: están diseñados para lograr la máxima rapidez en un único problema.

En general se consideran sistemas distribuidos, en sentido amplio, a los sistemas en que:

  • Existen varias cpu conectadas entre sí.
  • Las distintas CPU trabajan de manera conjunta.

Ciertas aplicaciones son distribuidas en forma inherente:

  • Controla los robots y máquinas en la línea de montaje.
  • Cada robot o máquina es controlado por su propia computadora.
  • Las distintas computadoras están interconectadas.

Una ventaja potencial de un sistema distribuido es una mayor confiabilidad:

  • Al distribuir la carga de trabajo en muchas máquinas, la falla de una de ellas no afectara a las demás:
    • La carga de trabajo podría distribuirse.
  • Si una máquina se descompone:
    • Sobrevive el sistema como un todo.

Otra ventaja importante es la posibilidad del crecimiento incremental o por incrementos:

  • Podrían añadirse procesadores al sistema, permitiendo un desarrollo gradual según las necesidades.
  • No son necesarios grandes incrementos de potencia en breves lapsos de tiempo.
  • Se puede añadir poder de cómputo en pequeños incrementos.

Ventajas de los Sistemas Distribuidos con Respecto a las PC Independientes

Satisfacen la necesidad de muchos usuarios de compartir ciertos datos:
  • Ej.: sistema de reservas de líneas aéreas.
También con los sistemas distribuidos se pueden compartir otros recursos como programas y periféricos costosos:
  • Ej.: impresoras láser color, equipos de fotocomposición, dispositivos de almacenamiento masivo (ej.: cajas ópticas), etc.
Otra importante razón es lograr una mejor comunicación entre las personas:
  • Ej.: correo electrónico:
    • Posee importantes ventajas sobre el correo por cartas, el teléfono y el fax:
      • Velocidad, disponibilidad, generación de documentos editables por procesadores de texto, etc.
La mayor flexibilidad es también importante:
  • La carga de trabajo se puede difundir (distribuir) entre las máquinas disponibles en la forma más eficaz según el criterio adoptado (por ej. costos).
  • Los equipos distribuidos pueden no ser siempre PC:
    • Se pueden estructurar sistemas con grupos de PC y de computadoras compartidas, de distinta capacidad.

Desventajas de los Sistemas Distribuidos

El principal problema es el software, ya que el diseño, implantación y uso del software distribuido presenta numerosos inconvenientes.

Los principales interrogantes son los siguientes:
  • ¿Qué tipo de S. O., lenguaje de programación y aplicaciones son adecuados para estos sistemas?.
  • ¿Cuánto deben saber los usuarios de la distribución?.
  • ¿Qué tanto debe hacer el sistema y qué tanto deben hacer los usuarios?.
La respuesta a estos interrogantes no es uniforme entre los especialistas, pues existe una gran diversidad de criterios y de interpretaciones al respecto.

Otro problema potencial tiene que ver con las redes de comunicaciones, ya que se deben considerar problemas debidos a pérdidas de mensajes, saturación en el tráfico, expansión, etc.

El hecho de que sea fácil compartir los datos es una ventaja pero se puede convertir en un gran problema, por lo que la seguridad debe organizarse adecuadamente.

En general se considera que las ventajas superan a las desventajas, si estas últimas se administran seriamente.

Bibliografia