Apuntes-Javier_Espigares_23_Febrero

**Multi-Core:**
Los móviles incorporarán tecnologías que usamos hoy en sobremesas como el multicore, suele ser el recorrido general que siempre se produce. Los sistemas operativos no son aun muy eficientes en el manejo de todas estas nuevas arquitecturas.

**Conectividad:**
Un ordenador se supone que parte de su procesamiento se va a producir fuera y por tanto tienen una componente muy importante de conectiviad. Esa conectivdad es interesante que sea aprovechada computacionalmente.

Con esto visto se resume lo que vamos a hacer en la asignatura aprovechar las capacidades de los ordenadores actuales en el campo de computación distribuida. (La computación distribuida es agnóstica respecto al lenguaje de programación, nosotros usaremos sobre todo Javascript, Perl y Ruby. No se supone que vayamos a conocer a la perfección Perl y Ruby sino entenderlos y poder alterarlos). No vamos a preocuparnos por unas prestaciones muy elevadas y su optimización sino que nos dedicaremos más bien al nivel de aplicación para entender lo que estamos haciendo. El ritmo vertiginoso de la ley de Moore hace que no sea tan interesante ponernos a optimizar sino que es más interesante entender la API general y aprender a usarla (Trabajar cerca de la máquina depende mucho del Hardware y se queda obsoleto rápidamente).

**Computación distribuida:**
Pretendemos que estos sitemas sean abiertos es decir que sea fácil incluirle nuevas herramientas y prestaciones. Es decir deben de ser escalables, transparentes (Al programar una aplicación del sistema distribuido no nos importa donde se ejecuta) y tolerantes a fallos. (Ej. La re de la la Universidad se hace pensando en un cierto número de alumnos pero debe de ser escalable en caso de que llegue más gente). La diferencia entre computación paralela y distribuida es que en pararela importa cómo y donde están compartiendo los recursos, mientras que en programación distribuida esto es transparente (la diferencia principal es por tanto la transparencia, los sistemas pararelos son realmente opacos. Por ello no están de moda actualmente, lo que está de moda son los sistemas distribuidos).

**Sitemas cluster:**
Todos los computadores de un sistema de este tipo deben de ser homogéneos (ordenadores de bajo coste) estando conectados por redes de muy alta velocidad. Su principal problema es que hay que tener control de todos los nodos.

**Sistemas Grid:**
A diferencia de los sistemas cluster estos pueden tener varios administradores, los componentes pueden estar separados físicamente. (Referencia al cluster que hay en la Escuela llamado Ozono o [|IRISGrid] de la red [|RED Iris])

**Redes Overlay**
Redes que están construidas sobre otras redes. (Por ejemplo la Red Emule, no tiene una red propia, sino que se construye entre los que están ejecutando una serie de programas con un protocolo determinado, cualquiera ejecutando Emule, Amule, EDonkey. KAD es parecido solo que está totalmente descentralizado, KAD es más interesante porque los usuarios están geográficamente próximos.) También se llaman Application Network (de aplicación).

**Sitemas P2P**
Son redes overlays basadas en aplicación. La idea de este sistema es que no hay diferencia entre cliente y servidor no hay una jerarquía explícita entre los elementos de la red. Tienen el problema de escalabilidad, por ello existe "superpares" con una capacidad más específicamente. (Emule y Bittorrent son similares, intentando maximizar la velocidad de la red, hacen fragmentos y descargan distintos fragmentos de estos, la diferencia es que en Bittorrent te conectas a una red que sólo se están descargando el mismo fichero mientras que Emule es a nivel de aplicación). (Gnutella es más rápido ya que va desde un solo nodo).

**Computación de ciclos redundante**
Se trata de aprovechar la capacidad de un computador que está encendido, pero sin realizar ninguna tarea que lo cargue. (En la época de burbuja de la Web 1.0, había muchas empresas que vendían esos ciclos redundantes)

Estos sitemas conviven con otros más clásicos. A esto surgue el término multi-tier con pasos internedios entre cliente y servidor (middleware).

Los servicios web son formas sintáctica y semánticamente ricas de comunicarse entre un cliente y un servidor (acceso a funciones de un servidor, el paradigma del serv. web es la función a diferencia del fichero. Los servicios web funcionan con objetos o funciones.)