jueves, 25 de octubre de 2012

PVM (Parallel Virtual Machine)

PVM (Parallel Virtual Machine, Máquina Virtual Paralela)

PVM significa “Parallel Virtual Machine”, es relativamente nuevo ya que sus inicios se remontan al verano de 1989 en el Oak Ridge National Laboratory.

PVM consiste en un software y un conjunto de librerías, que permiten establecer una colección de uno o más sistemas de computación, con el fin de poder integrar dichos sistemas en un esquema de una sola máquina virtual (PVM: Parallel Virtual Machine - Máquina virtual en paralelo).

PVM opera sobre diferentes plataformas de UNIX y también de Windows 9x, la cantidad de plataformas en las que puede correr el ambiente de PVM es muy variada y abundante. PVM puede establecerse en cualquier esquema de red heterogénea, sobre todo en el ambiente de Internet, como se puede apreciar en la gráfica anterior.

PVM brinda rutinas en lenguajes C y en Fortran para procesos como paso de mensajes asíncronamente y para control de procesos; además de ofrecer un paralelismo escalable, entre otras muchas ventajas que ofrece.

A pesar de que PVM no es un estándar, es sumamente popular para realizar y desarrollar aplicaciones científicas complejas que requieren un esquema de programación en paralelo, dada su compatibilidad en sistemas operativos es sumamente portable y fácil de instalar, además de que PVM consiste en un esquema pequeño de código de computadora.

Ventajas:

Portabilidad: Es probablemente la librería de paso de mensajes más portable que existe

Paralelismo Escalable: PVM permite definir cuantos procesadores puede utilizar una aplicación, en caso de que falten procesadores, PVM realiza el trabajo en menos procesadores, recurriendo a técnicas de procesamiento concurrente.

Tolerancia A Fallas A Partir De Añadir O Borrar Procesos Anfitriones (Host).

Fácil de instalar y de usar.

Popular: Es una de las librerías de paso de mensajes más fáciles y óptimas.

Flexible: Puede incorporar casi cualquier computadora que funcione bajo UNIX: (Obviamente con cuenta de acceso), para incorporarla fácilmente al esquema de la máquina virtual.

Desventajas:

Desempeño: Como PVM es un esquema heterogéneo de computadoras, dependiendo de la capacidad de procesamiento de las computadoras vinculadas al esquema de la máquina virtual, su desarrollo puede verse mermado o incrementado, según sea el poder de cómputo de las computadoras anfitrionas.

Cuenta con un esquema no estandarizado: PVM no es un estándar (como lo es MPI).

Es algo deficiente en cuanto al paso de mensajes se refiere.

Configuración

Para explicar este punto nos vamos a vasar en los sistemas operativos UNIX.

Cada ordenador debe de estar ejecutando el demonio pvmd.

PVM requiere de cierta configuración para cada usuario. Es necesario crear un archivo .rhosts en el directorio HOME de cada usuario que quiera ejecutar programas bajo PVM.

El archivo .rhosts debe contener una línea por cada ordenador que va formar parte de la máquina virtual. Además debe incluir el nombre de usuario que se utilizara en cada una de ellas.

Ejemplo:

maquina1 username1
maquina2 username2
maquina3 username3
maquina4 username4

Además, se debe crear el directorio pvm3/bin/LINUX en el directorio HOME y colocar ahí los programas.
Para configurar la MV utilizamos el programa “pvm” en cualquiera de los ordenadores que forman parte de la MV.

Nos aparecerá un promt donde podremos introducir comandos para interactuar con la MV.
Los comandos más interesantes son: add/delete hostname: Añade/Quita el ordenador con nombre hostname a la máquina virtual.

conf: Para ver la configuración actual.
ps –a: Para ver los procesos en ejecución en la máquina virtual.
quit: Para salir de la consola pero dejar la máquina virtual activa.
halt: Para detener la máquina virtual y salir de la consola.

Las librerías de PVM (pvmd3)

Las tres librerías de PVM son las siguientes:
  • libpvm3.a.- Esta librería brinda una gran cantidad de rutinas escritas en lenguaje C. Esta rutina siempre es requerida.
  • libfpvm3.a.- Librería adicional que se requiere en caso de que la aplicación escrita en PVM utiliza código de Fortran.
  • libgpvm.a.- Librería requerida en caso de usar grupos dinámicos.
Las citadas libreras contienen subrutinas sencillas que son incluidas en el código de aplicación escrito en PVM. Proveen las herramientas suficientes como para realizar acciones tales como el iniciado y borrado de procesos, el empaquetamiento, desempaqueta miento y recepción de mensajes, sincronización vía barrera (synchronize via barriers) y configuración dinámica de la máquina virtual.

Ejemplo:

Un programa maestro es ejecutado por el usuario en uno de los computadores. Este programa provoca la ejecución de programas esclavos en otros computadores de la máquina virtual y son éstos los que llevan a cabo el trabajo. Una vez que han finalizado reportan sus resultados al maestro. Para efectos del ejemplo, los programas esclavos simplemente envían un mensaje con información local al maestro, el cual la desplegará por la pantalla.

Programa maestro (master.c):

#include <stdio.h>
#include <pvm3.h>

main() {
        struct pvmhostinfo *hostp;
        int result, check, i, nhosts, narch, stid;
        char buf[64];
        pvm_setopt(PvmRoute, PvmRouteDirect); /* canal para comunicacion */
        gethostname(buf, 20); /* obtiene nombre del maestro */
        printf("El programa maestro se ejecuta en %s\n", buf); /* Obtiene y despliega la configuracion de la
        maquina paralela */
        pvm_config(&nhosts, &narch, &hostp); /* Obtiene configuracion */
        printf("Se encontraron los siguientes computadores en la maquina paralela:\n");
        for (i=0; i<nhosts; i++)
                 printf("\t%s\n", hostp[i].hi_name);
        /* Ejecuta los procesos en todas las maquinas */
        for (i=0; i<nhosts; i++) {
                 check = pvm_spawn("slave", 0, PvmTaskHost, hostp[i].hi_name, 1, &stid);
                 if (!check)
                          printf("No se pudo iniciar proceso en %s\n", hostp[i].hi_name);
        }
        /* Espera las respuestas de todas las maquinas e imprime su contenido */
        result=0;
        while (result<nhosts) {
                 pvm_recv(-1, 2); /* Espera por mensaje de respuesta */
                 pvm_upkstr(buf); /* Desempaca el mensaje */
                 printf("%s\n", buf); /* Despliega el contenido en pantalla */
                 result++; /* Siguiente mensaje */
        }
        pvm_recv(-1, 2); /* Espera por mensaje de respuesta */
}

Programa esclavo (slave.c):

#include <stdio.h>
#include <pvm3.h>
#include <time.h>

main() {
         time_t now;
         char name[12], buf[60];
         int ptid;
         ptid = pvm_parent(); /* El ID del proceso maestro */
         pvm_setopt(PvmRoute, PvmRouteDirect);
         gethostname(name, 64); /* Obtiene nombre de la maquina */
         now = time(NULL); /* Obtiene hora de la maquina */
         strcpy(buf, name); /* Coloca el nombre en el string */
         strcat(buf, "'s time is ");
         strcat(buf, ctime(&now)); /* Agrega la hora al string */
         pvm_initsend(PvmDataDefault); /* Asigna buffer para el mensaje */
         pvm_pkstr(buf); /* Empaca el string en el buffer */
         pvm_send(ptid, 2); /* Envia el buffer al maestro */
         pvm_exit; /* Esclavo finalizando */
}

martes, 23 de octubre de 2012

LEY DE MOORE y TECNOLOGIA TRI-GATE

Ley de Moore


En 1965, Gordon Moore, tuvo una visión de futuro, conocida popularmente como la Ley de Moore, plantea que el número de transistores de un chip se duplica cada dos años. Esta observación sobre la integración del silicio, convertida en realidad por Intel, ha avivado la revolución tecnológica mundial.

La Ley de Moore es sinónimo de más rendimiento. La capacidad de proceso, medida en millones de instrucciones por segundo (MIPS), ha subido debido a cómputos de transistores en aumento.

Pero la Ley de Moore también significa costes en descenso. A medida que los ingredientes de las plataformas y los componentes basados en el silicio obtienen más rendimiento, resulta exponencialmente más barato fabricarlos y, por consiguiente, son más abundantes, más potentes y están más integrados en nuestra vida cotidiana.

Paralelismo y la ley de Moore


El cálculo paralelo se ha hecho recientemente necesario para tomar la ventaja llena de las ganancias permitidas por la ley de Moore. Durante años, los fabricantes del procesador consecuentemente entregaron aumentos de precios del reloj y paralelismo del nivel de la instrucción, de modo que el código enhebrado del modo solo ejecutara más rápido en procesadores más nuevos sin la modificación. Ahora, para manejar la disipación de poder de la CPU, los fabricantes del procesador favorecen el diseño de chip multiprincipal, y el software se tiene que escribir en un multienhebrado o manera de multiproceso de tomar la ventaja llena del hardware.

TECNOLOGÍA TRI-GATE

Intel anuncia la creación del primer transistor de tres dimensiones que bautizó con el nombre de Tri-Gate, el cual representaría una evolución de los transistores al ser más pequeño, más veloz y consumir menos energía que su antecesor, el transistor bidimensional o plano. Se inicia una nueva era en el campo de los microprocesadores.


Hacerlos cada vez más pequeños, más rápidos, más eficientes en el consumo de energía y con una mejor relación costo/beneficio, al parecer, es el lema principal de los fabricantes de componentes electrónicos, entre los que Intel viene consiguiendo interesantes avances. Esta vez, al introducir un revolucionario diseño de transistores tridimensionales, llamados Tri-Gates.

GNU Parallel


Instalar GNU Parallel en Linux
GNU Parallel es una de las últimas joyas del Proyecto GNU, es una herramienta para el intérprete de comandos que permite la ejecución concurrente de tareas, tanto local como remotamente. Típicamente una tarea es un comando o un script.
Para comenzar a trabajar con GNU Parallel en Linux, sigue estos sencillos pasos
1.   Descarga la versión más reciente que encuentres en el sitio oficial.

$ wget http://ftp.gnu.org/gnu/parallel/parallel-20101202.tar.bz2

2.   Descomprime e ingresa al directorio

$ tar jxf parallel-20101202.tar.bz2
$ cd parallel-20101202/

3.   Sigue los tres pasos habituales: configura, compila e instala. Si tienes compiladores y bibliotecas GNU no tendrás ningún problema.

$ ./configure
$ make
$ sudo make install

4.   La documentación oficial en línea es extensa e idéntica al manual de usuario:

$ man parallel

Modo de Utilización
Su modo de utilización, es poner a trabajar cada uno de los procesadores y/o núcleos con que cuenta el equipo para agilizar el tiempo de realización de cualquier tarea o proceso.
Ejemplos

Procesando los Archivos en Parallel

01 $ find . | parallel -v ‘echo $(ls -1 /proc/self/task); sleep 1s; echo {}’
02 echo $(ls -1 /proc/self/task); sleep 1s; echo .
03 10943
04 .
05 ...
06 $ find . | parallel -v -j +0 ‘echo $(ls -1 /proc/self/task); sleep 1s;
echo {}’
07 ?

Recomprimiendo Archivos con Parallel

01 $ time for if in *gz;
02 do
03 zcat $if | bzip2 -9 > $if.bz2;
04 done
05 real    0m27.005s
06 user    0m11.745s
07 sys     0m14.623s
08
09 $ time find . -name “*.gz” -print \
10 | parallel -j +0 ‘zcat {} | bzip2 -9 > {.}bz2’
11
12 real    0m14.921s
13 user    0m15.955s
14 sys     0m24.478s
Ventajas
Permite la ejecución concurrente de tareas, tanto local como remotamente
Parallel GNU está escrita para tener las mismas opciones que xargs.
Si escribes lazos con cáscara, se encuentra paralelo GNU puede ser capaz de remplazar la mayoría de los bucles y hacer que se ejecute más rápido mediante la ejecución de varios trabajos en paralelo.
GNU Parallel puede incluso sustituir los bucles anidados.
GNU paralelo hace que la salida de los comandos sea el mismo resultado que usted quisiera conseguir para esto se tenía que ejecutar los comandos de forma secuencial.
Es posible utilizar la salida de GNU paralelo como entrada para otros programas.

jueves, 18 de octubre de 2012

Introduccion al Paralelismo


Introducción al Paralelismo
¿Por qué la computación paralela?
Casi todo cálculo realizado durante los primeros cuarenta años de la historia de las computadoras podría llamarse secuencial. Una de las características de computación secuencial es que emplea un único procesador para resolver algún problema. (Aquí, el término "problema" se utiliza en el sentido amplio, es decir, la realización de alguna tarea). Estos procesadores se habían vuelto continuamente más rápido (y más baratos) durante las tres primeras décadas, duplicando su velocidad cada dos o tres años. Sin embargo, debido a que el límite de la velocidad de la luz se impone nosotros, parece muy poco probable que podamos construir un uniprocesador de computadoras (Es decir, equipos que contienen sólo un procesador) que puede alcanzar un rendimiento significativamente mayor que 1000000000 operaciones de punto flotante por segundos - generalmente llamado un Gflops.
La unidad flop es una medida ampliamente utilizada de rendimiento de la memoria de acceso. Es igual a la velocidad a la que una máquina puede realizar simple operaciones de punto, es decir, el número de este tipo de operaciones que el equipo puede realizar en una unidad de tiempo - segundos en nuestro caso. Al igual que con las cantidades físicas, la computación potencia se mide utilizando kilo notaciones (1 K = 103 Mega) (1 M = 106 giga) (1 G = 109 Tera). Si el equipo no tiene la capacidad para manejar operaciones de punto flotante en hardware, se utiliza el término ips que es sinónimo de instrucciones por segundo.

Nuevas máquinas en paralelo con nuevas arquitecturas se están construyendo cada año. El número de procesadores en estas máquinas llega a 65.536 hoy en día, con algunos sueños de construir en un futuro próximo una máquina con 128.000 procesadores. Sin embargo, el alto costo de la construcción de este tipo de máquinas, combinado con la falta de los fondos disponibles que tradicionalmente provenía de los militares, aplaza los planes.

Redes de Interconexión
La computación paralela llegó a mediados de los ochenta, cuando los fabricantes de chips fueron capaces de producir grandes cantidades de procesadores económicamente. Por lo tanto, de repente, tener un montón de chips que contienen los procesadores junto con pequeñas memorias locales (los elementos de procesamiento de llamadas o PES).
Máquinas comerciales paralelas y simuladores
La última década vio un gran número de nuevas máquinas paralelas de mayor o menor éxito, capacidades, potencia de cálculo y las etiquetas de precios. Existe un informe en curso enumerando el máximo rendimiento de las 500 supercomputadoras en el mundo que se actualiza con regularidad. El funcionamiento máximo es el máximo rendimiento teórico de equipo. (También significa que el rendimiento mínimo que el fabricante asegura que nunca se alcanzará.)

¿Quién necesita computadoras paralelas?
Por otro lado, hay varias aplicaciones científicas que sin duda podría utilizar mucho más potencia de cálculo. Entre ellos:

Gráficos: Representación de volumen, la realidad virtual, el trazado de rayos.

Simulación: Predicción del tiempo, la verificación Chip, la exploración petrolera.

Procesamiento de imágenes: Mejora de la imagen, la extracción de características.

Inteligencia Artificial: reconocimiento de imagen, reproducción de juegos (ajedrez, GO, etc.).

Buscando base de datos grande: Programación de vuelos, la coincidencia de ADN (La proyecto del genoma humano).

Paralelismo E / S - El próximo desafío
A pesar de que el rendimiento de procesamiento de los ordenadores ha aumentado considerablemente en los últimos años, dispositivos de entrada / salida (I / O) no se han mantenido con esta tendencia. Mientras que la velocidad del procesador es aproximadamente ocho veces más rápido cada diez años, el acceso a la memoria principal y el disco disminución del tiempo de ciclo por sólo un tercio en el mismo período de tiempo.
Por lo tanto, nuestra capacidad de utilizar ordenadores muy rápidos eficientemente, depende de nuestra capacidad para alimentar con datos suficientemente rápido. Este es el paralelo llamado cuello de botella, la mala noticia se espera que empeore en el futuro, y una gran cantidad de investigación que se está haciendo hoy en esta dirección.

martes, 16 de octubre de 2012

LEY DE AMDAHL


Ley de Amdahl
Esta ley indica la mejora de rendimiento al incrementar los elementos de un procesamiento.
También propone que el tiempo trabaje de manera normal en la operación de un solo procesador para que el valor de este llegue a 1. Para realizar este tipo de operación se usa la siguiente formula:



F = tiempo de ejecución mejorado
Fa = tiempo de ejecución antiguo.

Toma en cuenta la parte secuencial del proceso, es decir, aquella que independientemente de cuántos elementos de procesamiento tenga, puede ser realizada por uno solo de ellos; y el resto del cálculo no podrá continuar hasta que se haya completado la parte secuencial.

jueves, 11 de octubre de 2012

Paralelismo


Paralelismo
El paralelismo en la informática, es una función que se realiza para ejecutar varias tareas al mismo tiempo.

Aplicaciones

El ejemplo de la computación paralela se convierte cada día en mas grande y rápida, muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas matemáticas diferentes, desde bioinformática para hacer plegamiento de proteínas hasta económicamente para hacer simulación en matemáticas.

Tipos de paralelismo en informática

·         Nivel de bits
o   Es cuando se aumenta la el tamaño de la palabra en la computadora, hacer esto reduce el numero de instrucciones que son necesarias para ejecutar un instrucción en la cual sus operandos son mas grandes que su tamaño de palabra.
·         Nivel de instrucción
o   Es cuando un grupo de instrucciones que compone un programa son ejecutadas paralelamente sin cambiar el resultado final del programa.
·         Nivel de datos o nivel de proceso
o   Es cuando se distribuye los datos a travez de diferentes nodos de cómputo para que los procesen en paralelo y las tareas que realizan son comunes y el resultado es uno solo.
·         Nivel de tareas
o   Cuando cálculos totalmente diferentes se realizan en los mismos o diferentes datos.
El paralelismo o procesamiento paralelo ha sido empleado durante muchos años sobre todo para la computación de alto rendimiento, teniendo en cuenta las generaciones de procesadores y sus características.

Desventajas

  • Requiere de un gran número de ciclos de procesamientos o acceso a una gran cantidad de datos.
  • Encontrar un hardware y un software que permite brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad.

Ventajas 

  •  Brindar a las empresas, instituciones y usuarios en general el beneficio de la velocidad
  • Ventaja competitiva, provee una mejor de los tiempos para la producción de nuevos productos y servicios.
  • Colaboración y flexibilidad operacional.

Clasificación de los sistemas paralelos en los sistemas informáticos

SISD

Arquitectura de simple construcción sobre simple dato. Serie en datos e instrucciones, arquitectura von Neumann

SIMD

Un solo flujo de instrucciones y múltiples en datos. Computadores matriciales. Una unidad de control que gobierna varias unidades aritmetico-logicas.

MISD

Varios flujos de instrucciones y uno solo de datos. Arquitectura no implementada, consecuencia teórica de la clasificación. Superestructura pipeline, varios conjuntos de unidad de control más unidad aritmético lógica realizan partes de una operación sobre un flujo de datos.

MIMD

Arquitectura multiprocesador con varios flujos tanto de instrucciones como de datos. Varios procesadores serie convencionales que manejan cada uno un flujo de instrucciones sobre un flujo de datos.

Flujo de Control

Las instrucciones se van ejecutando según el orden en el que se encuentran en memoria

Flujo de Datos

El flujo de ejecución es conducido por los datos; una instrucción será ejecutada cuando los operadnos estén disponibles.

Reducción

La ejecución se realiza por demanda: una instrucción será ejecutada cuando otra necesite sus resultados. Son una clase de las de flujo de datos.

jueves, 4 de octubre de 2012

Definiciones de SOAP Y CORBA

SOAP (Simple Object Access Protocol) 


Es un protocolo para el intercambio de mensajes sobre redes de computadoras, generalmente usando HTTP. Está basado en XML, a diferencia de DCOM y CORBA que son binarios; esto facilita la lectura por parte de los humanos, pero también los mensajes resultan más largos y, por lo tanto, considerablemente más lentos de transferir.

Existen múltiples tipos de modelos de mensajes en SOAP pero, por lejos, el más común es el RPC, en donde un nodo de red (el cliente) envía un mensaje de solicitud a otro nodo (el servidor) y el servidor inmeditamente responde el mensaje al cliente.

Los mensajes SOAP, son idependientes del sistema operativo, y pueden transportarse en varios protocolos de internet como SMTP, MIME y HTTP.

SOAP al principio significaba Simple Object Access Protocol, luego fue Service Oriented Architecture Protocol, pero actualmente es simplemente SOAP. El acronismo inicial, fue dejado de lado en la versión 1.2, cuando se volvió una recomendación de la W3C el 24 de junio de 2003, porque su nombre daba a confusión.

SOAP fue diseñado por David Winer, Don Box, Bob Atkinson y Mohsen Al-Ghosein en 1998 con respaldo de Microsoft. Actualmente, la especificación SOAP es mantenida por el XML Protocol Working Group de la W3C.



CORBA (Common Object Request Broker Arquitecture)

CORBA es una tecnología de objetos distribuidos que define una arquitectura de servicios y middleware ORB para el desarrollo de Sistemas Distribuidos.

CORBA es ya una tecnología madura y ha demostrado sobradamente su eficiencia, robustez y fiabilidad. Prueba de ello es la experiencia de Telefónica I+D desarrollando para el Grupo Telefónica un abanico de soluciones profesionales distribuidas para resolver distintas problemáticas del mundo de las TIC y todas ellas con características definibles dentro del concepto “entornos de alta criticidad" y “multiplataforma".

RPC

Las implementaciones de RPC
·         La desarrollada por Sun Microsystem denominada ONC-RCP (Open Network  Computing, ONC-RCP), distribuida con casi todos los sistemas UNIX.
·         La desarrollada por Microsoft en línea con el Ambiente de Computación Distribuida  (DCE, Distributed Computing Enviroment) definido por la Fundación de Software  Abierto (OSF, Open Software Foundation). Incluida en los sistemas operativos  Windows.


Asegurar transmisiones basadas en RPC
La llamada de procedimiento remoto (RPC) segura protege los procedimientos remotos con un mecanismo de autenticación. El mecanismo de autenticación Diffie-Hellman autentica tanto el host como el usuario que realiza una solicitud para un servicio. El mecanismo de autenticación utiliza el cifrado Estándar de cifrado de datos (DES). Las aplicaciones que utilizan RPC segura incluyen NFS y los servicios de nombres, NIS y NIS+.

Diffie-Hellman

El protocolo criptográfico Diffie-Hellman,1 debido a Whitfield Diffie y Martin Hellman, (Diffie-Hellman Problem->DHP) es un protocolo de establecimiento de claves entre partes que no han tenido contacto previo, utilizando un canal inseguro, y de manera anónima (no autenticada).
Se emplea generalmente como medio para acordar claves simétricas que serán empleadas para el cifrado de una sesión (establecer clave de sesión). Siendo no autenticado, sin embargo, provee las bases para varios protocolos autenticados.
Su seguridad radica en la extrema dificultad (conjeturada, no demostrada) de calcular logaritmos discretos en un cuerpo finito.


Cuestiones que afectan la comunicación por RPC
En llamadas remotas las posibles fuentes de fallos son múltiples.
1.       Fallos en los procedimientos llamados
La ejecución del proceso llamado se detiene por errores del hardware o del sistema operativo que lo ejecuta (ej.: caída del sistema)
También por errores internos del propio procedimiento (divisiones por 0, índices de arrays fuera de rango, etc.)
2.       Fallos en la comunicación
Perdida de la conexión: la red deja de enviar paquetes (caída de la red, perdida de un enlace,...)
Corrupción del contenido de alguno de los mensajes enviados
Perdida de paquetes: algún mensaje/s no llega a su destino
Recepción fuera de orden: paquetes retrasados recibidos de forma desordenada
3.       Otros fallos: bugs en el proceso llamado, ataques, etc.

Implementación de RPC en Bases de Datos
SQL Server admite el uso de servidor a servidor RPC, que permite utilizar una conexión a un servidor para llamar a un procedimiento en un servidor secundario. En este artículo se describe un método para utilizar RPC para llamar a cualquier procedimiento almacenado extendido personalizado en un servidor secundario sin cambiar el código de la aplicación.

La llamada a un procedimiento almacenado extendido puede producirse de dos maneras diferentes:
·         Ad-hoc Transact-SQL.
·         Mediante una llamada a un "contenedor" procedimiento almacenado.
En cualquier caso, puede redirigir la llamada a un servidor remoto mediante una llamada de SQL Server RPC sin realizar ningún cambio a la aplicación cliente.

Debido a que se realiza un seguimiento de un procedimiento almacenado extendido en sysobjects como cualquier otro procedimiento almacenado de Transact-SQL, puede colocar la referencia al procedimiento almacenado existente y reemplazarlo con un contenedor que llama a la rutina remota. Si ya dispone de un contenedor de procedimiento almacenado, o bien puede actualizarla para utilizar la sintaxis RPC o puede utilizar el método que se describe en este artículo para proporcionar un nivel adicional de direccionamiento indirecto en la llamada de procedimiento almacenado extendido.

Vulnerabilidades en RPC
La vulnerabilidad podría permitir a un atacante ejecutar código arbitrario y tomar control total del sistema afectado. La configuración por defecto no permite que los usuarios sean atacados por medio de esta vulnerabilidad, aunque podría ser afectada en aplicaciones de terceros.

Vulnerabilidades XMLRPC en PHP
Otra vulnerabilidad bastante común en esta categoría incluye vulnerabilidades en el uso de XML-RPC
XML-RPC es un protocolo de llamada a procedimiento remoto que usa XML para codificar las llamadas y HTTP como mecanismo de transporte.
Es un protocolo muy simple ya que sólo define unos cuantos tipos de datos y comandos útiles, además de una descripción completa de corta extensión.
Un común desperfecto está en los distintas implementaciones de XML-RPC en PHP pasando entradas de datos del usuario sin filtrar por la función eval() en el servidor XML-RPC. Esto permite al atacante ejecutar código, en el sistema vulnerable. Cualquier usuario con habilidad de subir XML manualmente al servidor puede insertar código PHP que puede ser ejecutado por la aplicación Web vulnerable.