martes, 24 de mayo de 2016

llamada a procedimiento remoto

En computación distribuida, la llamada a procedimiento remoto (en inglés, remote procedure call, RPC) es un programa que utiliza una computadora para ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambas. El protocolo que se utiliza para esta llamada es un gran avance sobre los sockets de Internet usados hasta el momento. De esta manera el programador no tenía que estar pendiente de las comunicaciones, estando estas encapsuladas dentro de las RPC.

Las RPC son muy utilizadas dentro de la comunicación cliente-servidor. Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función y enviando este de vuelta el resultado de dicha operación al cliente.


Grid

La computación grid (o en malla) es una tecnología que permite utilizar de forma coordinada recursos heterogéneos (entre ellos cómputo, almacenamiento y aplicaciones específicas) que no están sujetos a un control centralizado. En este sentido es una forma de computación distribuida, en la cual los nodos participantes recursos pueden ser de iguales o distintas arquitecturas y cubrir toda la gama de potencia de cómputo, desde embebidos y hasta supercomputadores.

Típicamente, los sistemas que forman parte de una malla están interconectados mediante redes de área extensa (por ejemplo Internet). Desarrollado en ámbitos científicos a principios de los años 1990, su entrada al mercado comercial siguió la idea de la llamada Utility computing.




El término grid se refiere a una infraestructura que permite la integración y el uso colectivo de ordenadores de alto rendimiento, redes y bases de datos que son propiedad y están administrados por diferentes instituciones. Puesto que la colaboración entre instituciones envuelve un intercambio de datos, o de tiempo de computación, el propósito del grid es facilitar la integración de recursos computacionales. Universidades, laboratorios de investigación o empresas se asocian para formar grids para lo cual utilizan algún tipo de software que implemente este concepto.

En la computación grid, las redes pueden ser vistas como una forma de computación distribuida donde un “supercomputador virtual” está compuesto por una serie de computadores agrupados para realizar grandes tareas.

escalabilidad



En telecomunicaciones y en ingeniería informática, la escalabilidad es la propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para reaccionar y adaptarse sin perder calidad, o bien manejar el crecimiento continuo de trabajo de manera fluida, o bien para estar preparado para hacerse más grande sin perder calidad en los servicios ofrecidos.

En general, también se podría definir como la capacidad del sistema informático de cambiar su tamaño o configuración para adaptarse a las circunstancias cambiantes.1 Por ejemplo, una Universidad que establece una red de usuarios por Internet para un edificio de docentes y no solamente quiere que su sistema informático tenga capacidad para acoger a los actuales clientes que son todos profesores, sino también a los clientes que pueda tener en el futuro dado que hay profesores visitantes que requieren de la red por algunas aplicaciones académicas, para esto es necesario implementar soluciones que permitan el crecimiento de la red sin que la posibilidad de su uso y reutilización disminuya o que pueda cambiar su configuración si es necesario.

La escalabilidad como propiedad de los sistemas es generalmente difícil de definir,2 en particular es necesario definir los requisitos específicos para la escalabilidad en esas dimensiones donde se crea que son importantes. Es una edición altamente significativa en sistemas electrónicos, bases de datos, ruteadores y redes. A un sistema cuyo rendimiento es mejorado después de haberle añadido más capacidad hardware, proporcionalmente a la capacidad añadida, se dice que pasa a ser un sistema escalable.

latencia

En redes informáticas de datos se denomina latencia a la suma de retardos temporales dentro de una red. Un retardo es producido por la demora en la propagación y transmisión de paquetes dentro de la red.

Otros factores que influyen en la latencia de una red son:

El tamaño de los paquetes transmitidos.
El tamaño de los buffers dentro de los equipos de conectividad. Ellos pueden producir un Retardo Medio de Encolado.
Hay latencia en tecnologías de uso musical, como los transformadores de audio digital a vinilos analógicos. El traspaso de información de un mecanismo a otro sufrirá siempre este retardo, que normalmente está estimado en milisegundos (1/1,000 s) en algunos casos pequeño, en otro más notorio. La latencia en el sentido del audio digital esta directamente relacionada con la tarjeta de audio, esto se debe a que dicha tarjeta no es compatible con ASIO (Audio Stream Input Output).



Un punto muy importante es que siempre va a haber cierta latencia, aún cuando se hable de latencia cero, la cuestión es que esta es imperceptible (3 ms aprox.) En general se refiere al tiempo que dura en llegar una acción desde su punto de inicio hasta su "punto de fuga", es decir cuando la acción se consuma.

Tasa de transferencia

En informática y telecomunicaciones, el término tasa de bits define el número de bits que se transmiten por unidad de tiempo a través de un sistema de transmisión digital o entre dos dispositivos digitales. Así pues, es la velocidad de transferencia de datos.

Unidades

La unidad con que el Sistema Internacional de Unidades expresa el bit rate es el bit por segundo (bit/s, b/s, bps). La b debe escribirse siempre en minúscula, para impedir la confusión con byte por segundo (B/s). Para convertir de bytes/s a bits/s, basta simplemente multiplicar por "8" y viceversa.

Que la unidad utilizada sea el bit/s, no implica que no puedan utilizarse múltiplos del mismo:

kbit/s o kbps (kb/s, kilobit/s o mil bits por segundo)
Mbit/s o Mbps(Mb/s, Megabit/s o un millón de bits por segundo)
Gbit/s o Gbps (Gb/s, Gigabit, mil millones de bits)
byte/s (B/s u 8 bits por segundo)
kilobyte/s (kB/s, mil bytes u ocho mil bits por segundo)
megabyte/s (MB/s, un millón de bytes u 8 millones de bit por segundo)
gigabyte/s (GB/s, mil millones de bytes u 8 mil millones de bits)


confiabilidad

El término confiabilidad es descrita en el diccionario de la RAE como "probabilidad de buen funcionamiento de algo". Por tanto, extendiendo el significado a sistemas, se dice que la fiabilidad de un sistema es la probabilidad de que ese sistema funcione o desarrolle una cierta función, bajo condiciones fijadas y durante un período determinado.

Un sistema es una colección de componentes/subsistemas dispuestos de acuerdo a un diseño dado con el propósito de lograr el cumplimiento de unas determinadas funciones con una adecuación y fiabilidad aceptables. El tipo de componentes, su cantidad, su calidad y el modo en que están dispuestas tiene un efecto directo en la fiabilidad de sistema.

La fiabilidad se define como la probabilidad de que un bien funcione adecuadamente durante un período determinado bajo condiciones operativas específicas (por ejemplo, condiciones de presión, temperatura, fricción, velocidad, tensión o forma de una onda eléctrica, nivel de vibraciones).

Middleware

Middleware o lógica de intercambio de información entre aplicaciones ("interlogical") es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, o paquetes de programas, redes, hardware y/o sistemas operativos. Éste simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones y sincronizaciones que son necesarias en los sistemas distribuidos. De esta forma, se provee una solución que mejora la calidad de servicio, así como la seguridad, el envío de mensajes, la actualización del directorio de servicio, etc.



Funciona como una capa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El middleware abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas. Dependiendo del problema a resolver y de las funciones necesarias, serán útiles diferentes tipos de servicios de middleware. Por lo general el middleware del lado cliente está implementado por el Sistema Operativo, el cual posee las bibliotecas que ejecutan todas las funcionalidades para la comunicación a través de la red.

multicomputadores

Los sistemas multicomputadores se pueden ver como un computador paralelo en el cual cada procesador tiene su propia memoria local. En estos sistemas la memoria se encuentra distribuida y no compartida como en los sistemas multiprocesador. Los computadores se comunican a través de paso de mensajes, ya que éstos sólo tienen acceso directo a su memoria local y no al las memorias del resto de procesadores.

El diagrama de bloques de un sistema multicomputador coincide con el de los sistemas UMA, la diferencia viene dada porque la red de interconexión no permite un acceso directo entre memorias, sino que la comunicación se realiza por paso de mensajes. La transferencia de los datos se realiza a través de la red de interconexión que conecta un subconjunto de procesadores con otro subconjunto. La transferencia de unos procesadores a otros se realiza por tanto por múltiples transferencias entre procesadores conectados dependiendo del establecimiento de dicha red.

Dado que la memoria está distribuida entre los diferentes elementos de proceso, estos sistemas reciben el nombre de distribuidos. Por otra parte, estos sistemas son débilmente acoplados, ya que los módulos funcionan de forma casi independiente.


Diagrama




Un Diagrama de Contexto de Sistema (DCS) en Ingeniería de software e Ingeniería de sistemas es un diagrama que define los límites entre el sistema, o parte del sistema, y su ambiente, mostrando las entidades que interactúan con él. Este diagrama es una vista de alto nivel de un sistema. Es similar al Diagrama de bloques.

Vista General

Diagrama de contexto de sistema muestra un sistema, usualmente basado en software, como un completo y sus entradas y salidas desde y hacia factores externos. De acuerdo a Kossiakoff y Sweet (2011)

Diagrama de contexto de sistema representa todas las entidades externas que podrían interactuar con un sistema Dicho diagrama retrata el sistema en el centro, sin detalles de su estructura interna, rodeado por todos los sistemas, ambientes y actividades con las que interactúa. El objetivo del diagrama es enfocar la atención en los factores externos y eventos que deberían considerarse en el desarrollo de un set completo de requerimientos y restricciones del sistema.

Diagramas de contexto de sistema son usados tempranamente en un proyecto para obtener un acuerdo del alcance de la investigación. Son típicamente incluidos en documentos de requerimiento. Estos diagramas deben ser leídos por todas las partes interesadas, por lo que deben ser escritos en lenguaje sencillo, para la comprensión de todas las partes.

Subsistema

Un subsistema informático es un sistema que se ejecuta sobre un sistema operativo, este puede ser un shell (intérprete de comandos) del sistema operativo primario o puede ser una máquina virtual. Se entiende como la subdivisión de un sistema, siempre que tenga parte en el sistema global.

Subsistema de Administración Informática

Los subsistemas de administración informática se encargan de gestionar las configuraciones del sistema. Son responsables de la gestión de usuarios que acceden al sistema, puertos por donde se comunican las aplicaciones y puntos donde se ejecutan las mismas. Una aplicación de administración informática configura parámetros generales en el sistema y maneja la activación de las aplicaciones en los diferentes puntos.


Encapsulamiento

En programación modular, y más específicamente en programación orientada a objetos, se denomina Encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto.



Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados de un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.

De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.

Clúster

El término clúster (del inglés cluster, "grupo" o "raíz") se aplica a los conjuntos o conglomerados de ordenadores unidos entre sí normalmente por una red de alta velocidad y que se comportan como si fuesen una única computadora.

La tecnología de clústeres ha evolucionado en apoyo de actividades que van desde aplicaciones de supercómputo y software para aplicaciones críticas, servidores web y comercio electrónico, hasta bases de datos de alto rendimiento, entre otros usos.

El cómputo con clústeres surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores económicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento, así como la creciente necesidad de potencia computacional para aplicaciones que la requieran.

Simplemente, un clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio.

Los clústeres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables.

Mallas de datos

La computación distribuida o informática en malla es un modelo para resolver problemas de computación masiva utilizando un gran número de ordenadores organizados en clústeres incrustados en una infraestructura de telecomunicaciones distribuida.


Un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones; cada máquina posee sus componentes de hardware y software que el programador percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas). El programador accede a los componentes de software (objetos) remotos, de la misma manera en que accedería a componentes locales, en un grupo de computadoras que usan un middleware entre los que destacan (RPC) y SOAP para conseguir un objetivo.


Los sistemas distribuidos deben ser muy confiables, ya que si un componente del sistema se descompone otro componente debe ser capaz de reemplazarlo. Esto se denomina tolerancia a fallos.

El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas de hosts (red de área local), centenas de hosts (red de área metropolitana), o miles, o millones de hosts (Internet); esto se denomina escalabilidad.

seguridad

La seguridad informática, también conocida como ciberseguridad o seguridad de tecnologías de la información, es el área de la informática que se enfoca en la protección de la infraestructura computacional y todo lo relacionado con esta y, especialmente, la información contenida o circulante. Para ello existen una serie de estándares, protocolos, métodos, reglas, herramientas y leyes concebidas para minimizar los posibles riesgos a la infraestructura o a la información. La seguridad informática comprende software (bases de datos, metadatos, archivos), hardware y todo lo que la organización valore y signifique un riesgo si esta información confidencial llega a manos de otras personas, convirtiéndose, por ejemplo, en información privilegiada.

La definición de seguridad de la información no debe ser confundida con la de «seguridad informática», ya que esta última sólo se encarga de la seguridad en el medio informático, pero la información puede encontrarse en diferentes medios o formas, y no solo en medios informáticos.

La seguridad informática es la disciplina que se ocupa de diseñar las normas, procedimientos, métodos y técnicas destinados a conseguir un sistema de información seguro y confiable.

Puesto simple, la seguridad en un ambiente de red es la habilidad de identificar y eliminar vulnerabilidades. Una definición general de seguridad debe también poner atención a la necesidad de salvaguardar la ventaja organizacional, incluyendo información y equipos físicos, tales como los mismos computadores. Nadie a cargo de seguridad debe determinar quién y cuándo puede tomar acciones apropiadas sobre un ítem en específico. Cuando se trata de la seguridad de una compañía, lo que es apropiado varía de organización a organización. Independientemente, cualquier compañía con una red debe de tener una política de seguridad que se dirija a conveniencia y coordinación.

Conexion cliente servidor

La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Esta idea también se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.


Algunos ejemplos de aplicaciones computacionales que usen el modelo cliente-servidor son el Correo electrónico, un Servidor de impresión y la World Wide Web

Multiprocesador

Básicamente hay dos formas de incrementar el rendimiento del hardware, la primera es incrementando la velocidad del procesador, lo cual con lleva a la disminución del tamaño de los componentes, pero esta solución se ve limitada por las leyes de la física, ya que al hacer los componentes mas pequeños con la finalidad de incrementar su velocidad, comienzan a aparecer corrientes de fuga, corrientes que deberían detenerse en una compuerta lógica determinada, pero que debido a la proximidad saltan de una compuerta a otra, produciendo errores inesperados. La otra forma es tomar los componentes, replicarlos y duplicar sus estructuras para hacer un efecto de “la unión hace la fuerza”.

Como podemos ver los avances tecnológicos en los microprocesadores actuales nos han llevado a esta ultima opción, en la cual podemos ver que los procesadores multinucleo actuales son fruto de esta estrategia, esta solución no es realmente nueva pues se ha implementado desde hace mucho tiempo atrás en los sistemas multiprocesadores, en los cuales se operan varios procesadores de alta velocidad en paralelo.

La idea principal de los sistemas de multiprocesadores es lograr la unión de los procesadores de forma tal que trabajen como si se tratase de una única computadora, en la cual se encuentran reunidas las capacidades de procesamiento de todos los procesadores y claro esta del resto de los recursos asociados a estos, como lo es la RAM, la memoria secundaria y los dispositivos de entrada y salida.


Paquete

Un paquete de software es una serie de programas que se distribuyen conjuntamente. Algunas de las razones suelen ser que el funcionamiento de cada uno complementa a o requiere de otros, además de que sus objetivos están relacionados como estrategia de mercadotecnia.

Muchos sistemas operativos modernos emplean sistemas de gestión de paquetes que permiten que el administrador del sistema instale o desinstale paquetes, sin que en ningún momento queden programas instalados que no funcionen por falta de otros incluidos en su paquete. El sistema de gestión de paquetes usualmente también se ocupa de mantener las dependencias entre paquetes: si un paquete se recuesta en otro, el sistema se encarga de instalar éste primero.

También encontramos paquetes de software en la distribución comercial de TV, ya que se suelen ofertar paquetes de software; o bien por ofrecer un precio menor del que costaría cada programa por separado o bien porque sólo exista la oferta conjunta y unica.



Protocolo

En redes informáticas, un protocolo es el lenguaje (conjunto de reglas formales) que permite comunicar nodos (computadoras) entre sí. Al encontrar un lenguaje común no existen problemas de compatibilidad entre ellas.

Existen infinidad de protocolos (a nivel de aplicación) en internet u otras redes, por ejemplo: HTTP, FTP, TCP, POP3, SMTP, SSH, IMAP, etc.

Los protocolos pueden distinguirse entre:
*Protocolo de Internet.
*Protocolos de red.

Una red de computadoras


Una red de computadoras, también llamada red de ordenadores, red de comunicaciones de datos o red informática, es un conjunto de equipos informáticos y software conectados entre sí por medio de dispositivos físicos que envían y reciben impulsos eléctricos, ondas electromagnéticas o cualquier otro medio para el transporte de datos, con la finalidad de compartir información, recursos y ofrecer servicios.

Como en todo proceso de comunicación, se requiere de un emisor, un mensaje, un medio y un receptor. La finalidad principal para la creación de una red de computadoras es compartir los recursos y la información en la distancia, asegurar la confiabilidad y la disponibilidad de la información, aumentar la velocidad de transmisión de los datos y reducir el costo. Un ejemplo es Internet, la cual es una gran red de millones de computadoras ubicadas en distintos puntos del planeta interconectadas básicamente para compartir información y recursos.

La estructura y el modo de funcionamiento de las redes informáticas actuales están definidos en varios estándares, siendo el más importante y extendido de todos ellos el modelo TCP/IP basado en el modelo de referencia OSI. Este último, estructura cada red en siete capas con funciones concretas pero relacionadas entre sí; en TCP/IP se reducen a cuatro capas. Existen multitud de protocolos repartidos por cada capa, los cuales también están regidos por sus respectivos estándares

Proceso

Proceso es un término con múltiples usos, que aparecen en contextos muy diversos. En el ámbito de la informática, el concepto se refiere a la ejecución de diversas instrucciones por parte del microprocesador, de acuerdo a lo que indica un programa.

El sistema operativo de la computadora (ordenador) se encarga de gestionar los procesos. Este software administra las instrucciones que otros programas informáticos destinan al microprocesador, analiza el estado de ejecución y organiza la memoria dedicada a las tareas.



Existen diversos caminos para la creación de un proceso informático, como el propio inicio del sistema, el pedido de un usuario o la llamada realizada por otro proceso. En cuanto a la finalización de un proceso, puede concretarse de manera normal, a partir de un error o por petición de otro proceso.

Programa

Un sistema es un conjunto de componentes que interaccionan entre si para lograr un objetivo común. Las personas se comunican con el lenguaje, que es un sistema muy desarrollado formado por palabras y símbolos que tienen significado para el que habla y para quienes lo escuchan, lo mismo es para las computadoras las cuales tienen sistemas y se comunican por medio de computadoras.La programación es el proceso de convertir las especificaciones a grandes rasgos delos sistemas en instrucciones de maquina que produzcan los resultados deseados.



En este ámbito tecnológico se puede hablar de multitud de programas que tienen como objetivo el que podamos realizar una tarea concreta de una manera sencilla. Este sería el caso de Word, que es un procesador de textos que nos ayuda a crear y diseñar multitud de documentos textuales, o PowerPoint que nos sirve para desarrollar presentaciones visuales muy atractivas.