jueves, 24 de septiembre de 2015

CONCLUCIONES DE XAMPP Y WAMPSERVER

José Manuel Morales Alvarez
Con esta práctica hemos concluido que en el wampserver podemos hacer con acceso  remoto, compartir imágenes u otros datos que queremos dar a conocer, ya que Wampserver es un software que incluye los paquetes básicos para montar un servidor web en un equipo local, instala apache, my SQL y PHP podemos hacer muchas cosas más aparte de la práctica vista.

Xampp también es un servidor web apache nos permitio probar que también podemos hacer acceso remotos compartiendo los datos requeridos ya que es un programa que nos puede procesar cualquier aplicación

           
Conclusión
                                                                                                       MICAELA PEREZ DIAZ


XAMPP es la construcción de una versión fácil de instalar para los desarrolladores que entran al mundo de apache.
Al término de la práctica hemos concluido  que la arquitectura cliente – servidor nos muestra como el servidor  le ofrece  de una manera a algún cliente que lo esté solicitando de esta manera los servidores nos puede  ofrecer desde una página web que  las interpretara el cliente de tal manera por un navegador
AppServ es el  WAMP que menos ocupa de los cuatro una vez instalado y seria indicando  cuando es importante el tamaño, wampserver es parecido a pH con la mejora de facilitar la realización de configuraciones

CONCLUSION
Crucita Itzel López cruz

Es el XAMPP  es o se podría decir que es un arquitectura que nos sirve para facilitar una instalación para los desarrolladores  que entran al mundo de apache. Está instalación nos sirve para que el cliente servidor puedan navegar.
Wampserver es parecido a pH con la mejora de facilitar las configuraciones.es un entorno de desarrollo de web con el que podría crear aplicaciones web con apache.

CONCLUSIÓN
MARIA DE LOS ANGELES CRUZ CAL Y MAYOR
  Llego a la conclusión que XAMPP es un paquete formado por un servidor web Apache, una base de datos MySQL.
XAMPP es independiente de plataforma y tiene licencia GNU GPL.
Una de las ventajas de XAMPP es que puedes desarrollar diferentes aplicaciones web.
Esta  herramienta de desarrollo nos permite probar un trabajo en nuestro propio ordenador sin necesidad de tener que accesar a internet.

Concluyo con que Wamp es un programa que provee de un servidor local y sirve para instalar o desarrollar sobre Windows aplicaciones que usen estas tecnologías. Nos permite configurar fácilmente en tu sistema lo último del servidor Web Apache, el lenguaje de programación PHP y el servidor de base de datos MySQL. 
Ésta aplicación es muy útil cuando se trabaja en la creación de una página web ya que nos permite trabajar y editarla localmente sin necesidad de subirla a un servidor. 

Conclusión
Bueno en la práctica para instalar wampserver cliente –servidor  este nos ofrece a un cliente ya que se les ofrece desde páginaweb, también  este es un acceso remoto de un punto a otro utilizando la dirección IP reservada del equipo local este es muy importante para el trabajo de acceso remoto a otra computadora.
En XAMPP es una aplicación que incluye recopilación de herramientas de las cuales se puede crear un servidor esta práctica llego a la conclusión de que es un paquete  muy importante para la utilización de servicios y accesos de archivos. XAMPP es utilizado actualmente como servidor de sitios Web, ya que, con algunas modificaciones, es generalmente lo suficientemente seguro para serlo.

CELIA DE JESUS NATAREN MORALES


lunes, 21 de septiembre de 2015

2.2 Sincronización: relojes físicos, relojes lógicos, usos de la sincronización.


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. 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 mantienen 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.


Actualmente se encuentran disponibles muchos servicios de sincronización a través de "la nube"
Relojes fijos
Los relojes físicos son relojes que: Deben ser iguales (estar sincronizados).
No deben desviarse del tiempo real más allá de cierta magnitud.
En ciertos sistemas es importante la hora real del reloj:
Se precisan relojes físicos externos (más de uno).
Se deben sincronizar: Con los relojes del mundo real.

Relojes lógicos
El software del reloj lógico
El software para el reloj toma generalmente la forma de un manejador de dispositivo, aunque no es un dispositivo de bloque.
La principales funciones del software manejador del reloj son:
Mantener la hora del día o tiempo real
Evitar que los procesos se ejecuten durante más tiempo del permitido.

Usos de la sincronizacion manejo de cache, comunicación en grupo exclusión mutua elección transacciones atómicas e interbloqueo
Sincronización

La sincronización es la coordinación de procesos que se ejecutan simultáneamente para completar una tarea, con el fin de obtener un orden de ejecución correcto y evitar así estados inesperados.
Comunicación en los sistemas operativos distribuidos Memoria Caché

En los sistemas de archivos convencionales, el fundamento para la memoria caché es la reducción de la E/S de disco (lo que aumenta el rendimiento), en un SAD el objetivo es reducir el tráfico en la red.

La copia de memoria caché

Conservar allí los bloques de disco de acceso más reciente, para así manejar localmente los accesos repetidos a la misma información y no aumentar el tráfico de la red. La caché es un área de memoria utilizada para agilizar los procesos de lectura-escritura.

Exclusión mutua

La condición de exclusión mutua se aplica a los os que no pueden ser compartidos. Por ejemplo, varios procesos no pueden compartir simultáneamente una impresora.

Los archivos de sólo lectura son un buen ejemplo de recurso que puede compartirse. Si varios procesos intentan abrir un archivo de sólo lectura al mismo tiempo, puede concedérseles acceso al archivo de forma simultánea. Un proceso no necesita esperar nunca para acceder a un recurso compartible.

La exclusión mutua permite compartir un recurso con varios procesos

Algoritmos de Elección

Son los algoritmos para la elección de un proceso coordinador, iniciador, secuenciador. El objetivo de un algoritmo de elección es garantizar que iniciada una elección ésta concluya con el acuerdo de todos los procesos con respecto a la identidad del nuevo coordinador.

Transacción atómica, transacción o acción atómica

La principal propiedad de la transacción atómica es el “todo o nada”: O se hace todo lo que se tenía que hacer como una unidad o no se hace nada.
Un esquema para garantizar la adecuada sincronización de la información en sistemas centralizados como distribuidos es el uso de transacciones.
Las transacciones manejan 4 propiedades básicas: atómicas, consistentes, aisladas y durables (ACID por sus siglas en inglés).




2.1 Comunicación: comunicación con cliente – servidor, comunicación con llamada a procedimiento remoto, comunicación en grupo, tolerancia a fallos.


El grado de acoplamiento en un cluster determinará el soporte necesario para implementar el modelo de comunicación, pero éste puede estar basado tanto en memoria compartida como en paso de mensajes. El modelo elegido determina parte de las características del sistema distribuido, pero la distribución física de la memoria queda oculta, salvo a efectos del rendimiento. 


Modelos de comunicación. 


Una de las tareas mas complejas en S.O.D. es la implementación y uso de memoria compartida, ya que esto nos obliga a "atravesar" las capas de software construyendo un puente de comunicación con una estructura de memoria no monolítica sobre la arquitectura de red. Algunas soluciones son las variables compartidas (similar a variables de entorno), cuyo acceso se sincroniza mediante cerrojos de exclusión mutua u otras primitivas (condicionales, banderas, semáforos ), han sido estudiadas desde hace tiempo y están perfectamente establecidas como paradigma tecnológico; para poder transferirlas se requiere un mecanismo de paso de mensajes, (mediante colas FIFO y buffers), a menudo integrados en el sistema de archivos (por ejemplo mediante pipes de UNIX). El paso de mensajes parece el mecanismo de comunicación natural en sistemas débilmente acoplados, pero al igual que cualquier tecnología tiene pros y contras, en este caso respecto a las alternativas con RPC's (llamada a procedimientos remotos) independientemente de si usa o no variables compartidas; Entonces el costo de recursos para mantener variables compartidas en un ambiente multi-equipos es alto y equivalente al costo de diseñar y operar los algoritmos de paso de mensajes o administrar RPC's, y si se desea restar complejidad a cualquiera de ambos métodos habrá de ser mediante el sacrificio de la eficiencia por la simplicidad. 

Comunicación Cliente-Servidor.

Es una arquitectura de paso de mensajes, que puede operar variables compartidasmediante un archivo público de acceso remoto (tipo CGI-BIN o MIME); es una solución muy socorrida pues su propiedad de distribución de trabajo aprovecha la versatilidad de que un servidor puede también ser cliente de otros servidores. El acceso a los terceros recursos se hace mediante el intermedio del servidor, quien se convierte en cliente de otros. Por ejemplo un servidor web puede ser cliente de los servicios DNS, MySQL, POP3, SMTP, pero ser anfitrión de Java, PHP, ASP, HTML, FTP; o por ejemplo un buscador web es servidor de consultas para usuarios pero es cliente de toda la web en dónde hace sus búsquedas. El número de encadenamiento entre nodos cliente-servidor con otros iguales debería ser muy grande pues esto exigiría tareas extra de administración de tráfico, que están contempladas inherentemente en el propio esquema de paso de mensajes. El número de encadenamiento de clientes-servidores se define como Modelo de N capas.

El siguiente diagrama muestra un modelo cliente-servidor de dos capas, el típico esquema deWeb Hosting con varios servidores en una sola máquina, para el servicio HTTP en Internet; los servidores forman una linea frontal en la que si una petición no puede ser atendida, se traslada al servidor contiguo. En el caso de requerirse un servicio de más bajo nivel entonces se pueden agregar capas de servidores que operan detrás de la linea frontal, por ejemplo un PHP o SQL Server. Para esto se usa el modelo común de tres capas, por ejemplo el servidor HTTP-PHP-SQL. según la configuración del software se pueden mover alterar el balance de carga hacia los clientes o hacia el servidor, por lo cual debe entenderse que el Modelo de Balance de Carga entre clientes y servidor es independiente del modelo de N capas. Un Modelo de tres capas puede funcionar de tal manera que la capa intermedia sea la que tiene menos carga de procesamiento, pero tendrá más trabajo de comunicación.

En un sistema distribuido, las necesidades de comunicación conducen a utilizar esquemas

específicos de gestión de los recursos para los que el paso de mensajes resulta adecuado. Un recurso estará a cargo de un proceso gestor, con quien deberá comunicarse cualquier proceso que pretenda acceder a él, siguiendo un esquema cliente-servidor; lo que permite expresar el acceso a servicios mediante un protocolo de petición-respuesta. El modelo cliente-servidor se puede implementar mediante un mecanismo de paso de mensajes específico, como por ejemplo el mecanismo de transporte TCP para HTTP y HTTPS, la Interfaz CGI/BIN o la interfaz de sockets de UNIX para TCP/IP o UDP/IP. 

En la tabla siguiente se muestra un resumen de las modalidades más utilizadas en la Comunicación Cliente-Servidor:


Comunicación por RPC'S (Remote Call Procedure)

Para trabajar con procesos distribuidos que necesitan compartir recursos con otros procesos también se han diseñado interfaces que permiten manejar un espacio de direcciones común sobre un sistema de memoria física distribuida: sistemas de memoria compartida distribuida (DSM). La idea es ofrecer a las aplicaciones diseñadas según un modelo de memoria compartida, un soporte para su ejecución en un entorno distribuido.
Con el objetivo de disminuir la diferencia semántica entre programas que usan servicios locales (mediante llamadas al sistema) y programas que usan servicios remotos, se han desarrollado mecanismos que encapsulan los detalles de direccionamiento y sincronización del envío-recepción de la petición y/o respuesta.

Así, en los lenguajes procedurales, las llamadas a procedimientos remotos RPC's (Remote Precedure Call), proporcionan una sintaxis de llamada a función como interfaz para el acceso a servicios. En los lenguajes orientados a objetos, cada recurso es un objeto identificado unívocamente en el sistema distribuido, al que se accede invocando los métodos definidos para esa clase de objeto. El acceso a os objetos se realiza mediante una interfaz de invocación de métodos remotos (por ejemplo, RMI de Java).

La Tabla siguiente resume los mecanismos que implementan los modelos de comunicación sobre arquitecturas de memoria independiente y memoria compartida. 


Comunicación basada en paso de mensajes. 

El paso de mensajes comprende un conjunto de mecanismos que permiten comunicar procesos mediante un enlace o canal de comunicación, bien directamente, identificando el proceso origen o destino respectivamente en las primitivas de recibir o enviar, bien a través de un buzón, que identifica explícitamente el canal de comunicación. En sistemas tipo UNIX, el mecanismo básico de paso de mensajes dentro de un nodo es el de los pipes.

Para comunicar procesos entre nodos surge el problema del direccionamiento. A este respecto, los sockets de UNIX soportan dos formas de comunicación alternativas: identificando un socket dentro del sistema de archivos (entorno UNIX) o asociando un puerto de comunicación en un nodo concreto (Internet). En este último caso se hace precisa la gestión explícita del direccionamiento.

Aunque el modelo de programación del paso de mensajes para comunicación entre nodos no difiere del de paso de mensajes para comunicación dentro de un nodo, el hecho de tener que confiar en los protocolos de red introduce dependencias derivadas del rendimiento y la fiabilidad del canal de comunicación entre nodos.

Las características principales asociadas a un canal de comunicación son las siguientes:

Modo de sincronización: Por una parte, si el canal de comunicación está ocupado, la primitiva de enviar puede bloquear al proceso hasta que se libere el canal (lo que depende también de si permite buffering o no) y pueda depositar el mensaje (modo bloqueante o síncrono). La alternativa (modo no bloqueante) permite que el proceso continúe aunque el mensaje no se haya podido enviar, transfiriendo a la aplicación la responsabilidad de gestionar la sincronización en el uso del buffer de usuario donde se ubica el mensaje enviado. Estos modos se aplican también a la primitiva de recibir. Los sockets de UNIX son en principio bloqueantes, pero pueden configurarse como no bloqueantes.

Fiabilidad: En lo referente a la fiabilidad de la comunicación, el mecanismo de paso de mensajes depende del soporte que le proporcione la red. Si se implementa sobre un protocolo de transporte seguro, la comunicación se considera fiable, en el sentido de que el emisor puede confiar en que el receptor acabe por recibir el mensaje correctamente o sea informado de lo contrario. Esto es a costa de una cierta sobrecarga por la necesidad que tiene el protocolo de confirmar las recepciones. En cambio, un mecanismo no fiable permitirá una comunicación menos costosa, pero delega en la aplicación la responsabilidad de verificar la corrección de la comunicación. UNIX ofrece dos formas de comunicación: 

Con sockets: comunicación orientada a conexión, basada en TCP/IP, fiable.

Comunicación por datagramas, basada en UDP/IP, no fiable.

Comunicación entre grupos de procesos. 

En sistemas distribuidos es de gran interés el soporte de primitivas de paso de mensajes de amplia cardinalidad es decir de 1:N, ya que existe la necesidad de intercomunicar a los procesos con otros, ya sea replicados o similares, ya sean procesos anfitriones o clientes de otros. El concepto de grupos de procesos que se comunican entre sí crea la necesidad de un gestor, cuyas funciones son similares a aquellas de las tareas de Control de Acceso a Usuarios.

Una de las formas de comunicación con cardinalidad múltiple es el broadcast o difusión; permite enviar un mensaje a todas las direcciones accesibles por el emisor, y se usa en redes locales. Un caso particular de broadcast, el multicast, permite seleccionar un subconjunto de direcciones a las que enviar el mensaje. El soporte para multicast es muy útil en sistemas replicados, como se verá más adelante. Como ejemplo, el protocolo IP reserva un conjunto de direcciones para multicast.

El estándard POSIX significa Interfaz de Sistema Portable tipo UNIX, (Portable OperatingSystem Interface UniX type) y establece una familia de estándares de llamadas al sistema operativo definidos por el IEEE y especificados formalmente en el IEEE 1003. Persiguen generalizar las interfaces de los sistemas operativos para que una misma aplicación pueda ejecutarse en distintas plataformas. Estos estándares surgieron de un proyecto de normalización de las API y describen un conjunto de interfaces de aplicación adaptables a una gran variedad de implementaciones de sistemas operativos. Los grupos de procesos que se diseñan bajo una especificación POSIX trabajan en función de señales. Una señal es una instrucción de alto nivel que se dirige a un grupo de procesos, la razón de esto es que a diferencia de un S.O. centralizado, en el que se ha de multiplexar (Intercalar) la ejecución de varios procesos, aquí la distribución de un proceso obedece a una necesidad de terminarlo en menor tiempo dividiéndolo en tareas más pequeñas, todas idénticas repartidas por la red; de tal manera que es fácil entender las funciones del administrador de grupos de procesos pues es más simple replicar un proceso idéntico muchas veces, que manejar un conjunto diverso de procesos. 

Los grupos de procesos están a su vez agrupados en sesiones, que residen en una capa de software que se encarga de administrarlos de la misma forma en que se administran las sesiones de usuarios. Los grupos de procesos no pueden migrar de una sesión a otra, y un proceso sólo puede crear nuevos grupos de procesos que pertenezcan a la misma sesión a la que pertenece. Un proceso únicamente puede unirse a un grupo de procesos que esté en su misma sesión. Nuevas imágenes de proceso creadas por una llamada a una función de la familia exec heredarán el grupo de proceso y la sesión de la imagen original.

Un segundo uso no relacionado del término grupo de procesos aparece en el contexto desincronía virtual, un modelo de ejecución distribuido en el que grupos de procesos corriendo en diferentes máquinas se asocian para compartir eventos, replicar datos o coordinar acciones, no tanto basado en un reloj de tiempo real sino en un esquema de eventos disparadores.

El desarrollo de Internet está forzando la evolución de los protocolos de nivel de red. Así, el protocolo IPv4, cuyas direcciones de 32 bits suponen un problema de escalabilidad, está dejando paso al IPv6, que especifica direcciones de 128 bits. Internet y los nuevos paradigmas de cómputo están imponiendo sus estilos de comunicación. De este modo, se aprecia una tendencia general a la utilización de HTTP como protocolo de acceso a servicios, como evolución del esquema RPC clásico. Por otra parte, la distribución de servicios ha provocado una evolución del esquema cliente-servidor clásico hacia estructuras peer-to-peer, donde los roles de cliente y servidor son intercambiables. En tales sistemas, habitualmente dinámicos, los nodos indistintamente ofrecen y solicitan servicios, y eventualmente cooperan en la búsqueda de servicios y en el encaminamiento de peticiones.

Podemos resumir la Disposiciones Generales de la comunicación:

Utilizando el servicio básico de acceso al medio, el cliente debe localizar e iniciar la comunicación con el servidor.

No se utiliza la metodología de compartición de archivos, ya que todos los accesos a la información se llevan a cabo a través de servicios de datos (paquetes o datagramas).

Los programas de manejo y control de información solo se envían y reciben los resultados de las operaciones.

Debido a la flexibilidad de establecer sesiones con múltiples servidores y manejo de información en varias bases de datos (en sitios remotos es requerido el uso de estilos transaccionales y cooperativos).

Tolerancia a fallos.


La tolerancia a fallas es considerada la principal característica que debe de tener un sistema distribuido para alcanzar el principio de transparencia. Para lograr la tolerancia a fallos se necesita de una buena comunicación entre procesos distribuidos y sobre todo de una correcta coordinación entre ellos. 

Un Sistema Distribuido en base a la coordinación de sus procesos puede ser: 

Asíncrono: no hay coordinación en el tiempo.

Síncrono: se suponen límites máximos para el retraso de mensajes. 

El primer factor a tomar en cuenta es que el canal de comunicación este libre de errores (canal confiable). Para garantizar que el canal sea confiable se debe tener QoS (Calidad en el Servicio) que implica realizar lo siguiente: 


- Retransmisión de mensajes. 

- Establecer redundancia de canales. 

- Poner límite al tiempo de entrega de un paquete en lapso especificado. 

En general, se considera que los canales de comunicación son fiables y que cuando falla la comunicación es debido a la caída del proceso, sin embargo algunos fallos en el funcionamiento de un Sistema Distribuido pueden originarse por: 


- Especificaciones impropias o con errores. 

- Diseño deficiente del del software o el hardware. 

- Deterioros o averías en hardware. 

Prevención en la Tolerancia a Fallos 


Existen dos formas de aumentar la fiabilidad de un sistema. 

1. Prevención de fallos: Se trata de evitar que se implementen sistemas que pueden introducir fallos. 

2. Tolerancia a fallos: Se trata de conseguir que el sistema continué funcionando correctamente aunque se presenten algunos fallos.


Un sistema que sea tolerante a fallos debería tener disponibilidad, confiabilidad, seguridad y con un programa de Mantenimiento. 

Disponibilidad: La cualidad de un sistema de estar preparado en todo momento para operar.

Confiabilidad: La garantía de que el Sistema puede llevar a cabo su trabajo con muy bajas probabilidades de una caída repentina.

Seguridad: La característica de que el Sistema puede recuperarse o repararse a sí mismo en caso de presentarse algún tipo de fallo.

Mantenimiento: Se refiere a que el sistema puede ser remplazado o reparado rápidamente mediante los lineamientos un programa preventivo y un plan de contingencia.. 

En el aspecto preventivo deben tomarse en cuenta que se pueden presentar Fallos Transitorios (se presentan una vez y al volver a intentar la operación ya no ocurren) , Intermitentes (se presentan de forma cíclica o al ejecutar ciertas operaciones) y Permanentes (no se resuelven hasta remplazar lo dañado). La orientación del mantenimiento debe definir cual de estos escenarios es el que se presenta; de hecho el primero es el más difícil de atender pues el primer paso para reparar una falla es aislarla e identificarla. 

Una buena estrategia comienza con la clasificación e identificación del universo de fallas, ya que cada una de ellas debe tener un plan emergente en consecuencia, la siguiente figura resume un esquema de este tipo: 


El aspecto fundamental es identificar las causas de la falla, que es la labor mas complicada, sobre todo en el entendido de que no se debe interrumpir el servicio. Nuevamente, los fallos que no presentan un patrón repetitivo son los más dificiles de identificar y por lo tanto de resolver. La experiencia y el hecho de conocer a detalle el sistema funcionando por largo tiempo pueden ayudar en este respecto. 

Una de las acciones necesarias se conoce como enmascaramiento de errores por redundancia, que consiste en ocultarlos a los procesos no locales por medio de: 

a) Redundancia de Tiempo. 

b) Redundancia de Información 

c) Redundancia física.

Todos estos significan duplicar el recurso correspondiente, de tal manera que siempre haya un remplazo disponible, un mecanismo de corrección de errores en datos, y un esquema de reintentos de operaciones; la estrategia resultante se establece bajo la premisa de que es inevitable que aparezcan fallos, sobre todo en comunicaciones. De tal suerte los mecanismos de checksum, paridad etc. son muy socorridos para operar el ambiente distribuido. 

Otro punto clave es el uso de Grupos de Procesos, que entre otras cosas facilita la comunicación con múltiples entidades remotas, así es más fácil el direccionamiento por grupos que por entidades individuales; especialmente en el ámbito de fallos en procesos, es importante comunicarse con la entidad donde ocurre el fallo, pero también el notificar a las otras entidades que comparten el recurso que falla. Los grupos pueden dar tratamiento a los errores de forma cooperativa o mediante una jerarquía que delimita quienes participan en ello, las soluciones generalmente tienen efectos colaterales, por ejemplo las jerarquías de procesos pueden generar procesos huérfanos, o las cooperativas pueden ser ineficientes si la dispersión aumenta. 

Fallos en sistemas cliente-servidor. 

En este esquema la capa de transporte se encarga de los fallos en comunicaciones, sin embargo si se usan datagramas en vez de paquetes, es la aplicación la que tendrá que encargarse de ordenar dichos datagramas fuera de secuencia, solicitar su retransmisión y/o restablecer los enlaces. La capa de transporte por sí misma otorga el concepto de Calidad en el Servicio, (QoS) pero no es una solución definitiva para todos los casos. 

Fallos en sistemas con RPC.

Pueden presentarse varias fallas, que el cliente no encuentre al servidor, que la petición del cliente se pierda dentro del servidor o en la red , que el servidor se caiga al procesar un mensaje, que la respuesta del servidor a una petición se pierda o que el cliente haga crash al recibir un mensaje. La responsabilidad principal en este tema es la de restablecer y detener procesos para rebootear las maquinas, lo cual puede implicar que no se restablezcan o no se detengan ciertos procesos concurrentes. Nuevamente, lo importante es el plan de acción del sistema y la detección del origen del problema, ya que de ahi surge el mecanismo de restablecimiento del fallo.


Errores Parciales vs. Errores graves.

Una característica de los S.O. distribuidos que los difiere de los sistemas centralizados es la noción de errores parciales. Un error parcial es cuando algún componente del sistema falla, lo cual puede puede afectar algunos otros componentes dentro de la red pero otros pueden seguir continuando sin ningún problema. EL secreto de la buena operación es recuperar el fallo sin interrupción del servicio o afectación del rendimiento global, hecho que depende a su vez del tipo de fallo, consideremos los siguientes:

Falla de procesos: La ejecución arroja un estado incorrecto, los procesos provocan que el sistema se desvíe de las especificaciones y el proceso con fallo pueda suspenderse momentáneamente. 

-Falla de sistema: Ocurre por el algún desorden en el software y problemas del HW (como errores de CPU, falla en la memoria principal, falla de energía, etc.) 

En caso de una falla de este tipo el sistema es detenido y reiniciado a un estado correcto, no obstante que es un error generalizado no es tan grave, pero vale la pena documentarlo. 

-Falla de amnesia: Ocurre cuando se reinicia el sistema a un estado predefinido, no depende del estado del sistema antes de la falla sino de una mala calendarización. Tampoco es grave. 

-Falla de Pausa: Ocurre cuando se reinicia el sistema al mismo estado en que se encontraba antes de la falla. Tampoco es grave. 

-Falla en medio de almacenamiento secundarios: Se dice que ocurre una falla de este tipo cuando los datos almacenados no pueden ser accedidos (cualquiera de sus partes o en su totalidad) entonces buscamos el restablecimiento por redundancia. Nótese que no obstante la naturaleza crítica de los fallos mencionados, su efecto en el sistema en general es menos severo por virtud de la distribución. 

RECUPERACIÓN DE ERRORES 

Una forma prospectiva de trabajar con los errores es considerar que un error es un estado del sistema que es distinto a los valores esperados, de tal suerte que la recuperación de una falla se aborda como un proceso de recuperación de estados hasta un estado libre de error, puede ser previo o posterior. 

Hay dos enfoques para hacer lo anterior: 

1- Si la naturaleza del error y los daños causados pueden ser completamente calculados, entonces es posible remover esos errores del estado del proceso (o sistema) y habilitar el movimiento hacia adelante del proceso a un estado libre de error. Esta técnica es conocida como recuperación hacia adelante. 

2- Si no es posible prever la naturaleza de las fallas y remover todos los errores en el estado del proceso (o sistema), entonces el estado del proceso puede ser restaurado a un estado previo libre de error. Esta técnica es conocida como recuperación hacia atrás. 

La recuperación hacia adelante significa cercenar el fallo, y soslayarlo, de tal suerte que se asume la pérdida del tiempo de procesamiento y los recursos involucrados. En cambio, en la recuperación hacia atrás, el proceso con revertido a un estado previo con la esperanza de que ese estado previo esté libre de errores.

Hay dos formas de implementar una recuperación de error hacia atrás: el enfoque basado en la operación y el enfoque basado en estado. Supongamos que tenemos un sistema modelo, que consiste de una máquina simple. Asumimos que la máquina está conectada a un sistema de almacenamiento secundario y a un sistema de almacenamiento estable que no pierde datos en caso de falla. El almacenamiento estable es usado para almacenar un registro de las transacciones y puntos de recuperación. En comparación al almacenamiento secundario, el almacenamiento estable es mucho más seguro, pero el almacenamiento secundario trabaja contínuamente. 

a) Enfoque basado en la operación.-

Aquí, todas las modificaciones que se hacen al estado de un proceso son registradas con suficiente detalle; para revertir el proceso a un estado previo, se procesan las transacciones de este registro pero marcha atrás. 

b) Enfoque basado en estado .- 

El estado completo de un proceso es guardado en una instancia llamada punto de restauración o verificación y su recuperación involucra reiniciar la ejecución del proceso en alguno de esos puntos. Establecer esta instancia se conoce como tomar un punto de verificación. El punto de restauración es entonces también un punto de revisión. 

Al proceso de restauración de un proceso a un estado anterior se le refiere como rolar al proceso hacia atrás y al proceso de reiniciar la ejecución en un estado se le conoce como transición forzada. Ambos métodos significan el consumo de tiempo de CPU y retardan la terminación del proceso, mas es preferible retroceder el proceso que cancelarlo. Por ello se acostumbra establecer muchos puntos de revisión. 

lunes, 7 de septiembre de 2015

1.4 Sistemas distribuidos de alto rendimiento a bajo costo (clustering) en sistemas operativos de libre distribución (Conclusiones)


CRUCITA ITZEL LOPEZ CRUZ

En conclusión el Sistemas distribuidos de alto rendimiento a bajo costo (clustering) en sistemas operativos de libre distribución viene siendo un conjunto de ordenadores que se conectan entre sí por medio de una red para así realizar las tareas y funciones con si fueran uno solo  a eso le llama memoria distribuida. También nos dice que nos viene sirviendo para realizar las tareas que necesitemos realizar ya que tendremos un gran rendimiento de la memoria y del ordenador para ahorrarnos horas de trabajo, existen varios tipos de clustering está el alto rendimiento, disponibilidad y la confiabilidad; el de alto rendimiento es determinar a tiempo una solución de un problema que se nos presente como el rendimiento del sistema operativo, el de alta disponibilidad es ofrecernos mejoras de los servicios que ofrecen las empresas a los clientes ya sea de una red local o de Internet y por ultimo alta confiabilidad es de aportarnos mucha confianza a la hora de llevar acabo nuestro trabajo como ejemplo si deseamos consultar una duda el sistema debe darnos la respuesta en tiempo real sin ninguna tardanza, además que podemos utilizar  diferentes sistemas operativos como el Ubuntu, Windows server entre otros, bueno eso sería todo lo referente que entendí sobre los sistemas distribuidos de alto rendimiento bajo costo.


JOSE MANUEL MORALES ALVAREZ

El cómputo con Clusters 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. El Cluster es un grupo de computadoras unidas mediante una red de alta velocidad, de tal forma que trabajan como una única computadora, más potente. 

En la actualidad, es factible disponer de alta capacidad computacional, incluso equivalente a la encontrada en las poderosas y costosas super computadoras clásicas, mediante clusters de computadoras PC independientes, de bajo costo, interconectadas con tecnologías de red de alta velocidad, y empleando software de libre distribución. El cluster puede trabajar de forma coordinada para dar la ilusión de un único sistema. Más adelante revisaremos las ideas básicas sobre diseño, construcción y operación de clusters, presentando aspectos relacionados al software y al hardware. 


MARÍA DE LOS ÁNGELES CRUZ CAL Y MAYOR

Como conclusión puedo decir que el Cluster es un grupo de múltiples computadoras unidas mediante una red de alta velocidad. De la convergencia de varias tendencias actuales surge el cómputo con clusters .
El MOSIX es un paquete de software que mejora el kernel de Linux con capacidades de computación de clusters, es una extensión del kernel de Linux que permite ejecutar aplicaciones normales  en un Cluster.
Tiene como  posibilidad la migración de procesos.
MOSIX funciona silenciosamente y sus operaciones son transparentes para las aplicaciones, está implementado en el kernel de Linux y sus operaciones son totalmente transparentes para las aplicaciones, esto permite definir distintos tipos de clusters, incluso un cluster con diferentes CPU’s o la velocidad de la  LAN.
Sus principales características son Soporte de organizaciones virtuales, Un ambiente de ejecución seguro para los procesos remotos, Live Queuing, Soporte de batch jobs, checkpoint y recuperación.
ClusterKnoppix es una distribución basada en Knoppix y que utiliza Linux Terminal Server Project y OpenMosix.
Gracias a su rapidez, portabilidad, la selección de herramientas que incluye y el amplio soporte para la mayoría de dispositivos que ofrece.


MICAELA PEREZ DIAZ

Se dice sistema de distribución  de alto rendimiento o bajo costo  se refiere clustering que es un conjunto de ordenadores que están conectados entre si por medio de una red  que sirve para realizar tareas que necesiten grandes requerimientos de memoria y cpu y para ahorrar horas de trabajo y operaciones. Existen 3 tipos de cluster ,de alto rendimiento ,alto disponibilidad,y alto confiabilidad.el cluster de alto  rendimiento  sirve para solucionar problemas ejemplo cálculos matemáticos,compilación de programas etc. el de alto disponibilidad  su funciona es mejorar los servicios que ofrecen las empresas  hacia los clientes  de una red. y el cluster de confiabilidad ya se refiere de un sistema  mas grande que el uso de cluster sea mas confiable y permanente para que no haya  mucho falla Con alta confiabilidad se trata de aportar la máxima confianza es un entorno en el cual se necesita saber que el sistema siempre se va a comportar de una forma determinada, como por ejemplo sistemas de respuesta a tiempo real.
Suele ser usado para entornos de tipo empresarial, necesitando un hardware especializado.

 CELIA DE JESUS NATAREN MORALES

Pues mi conclusión es que los sistemas distribuidos son de gran importancia ya que son un conjunto de ordenadores que están conectados entre sí por medio de una red, para compartir recursos con el objetivo de realizar tareas y funciones como si fuesen un único ordenador.es por ello que  nos sirve para cuando queramos realizar tareas que necesiten grandes requerimientos de memoria y CPU y para ahorrarnos horas de trabajo en tareas y operaciones. El sistema distribuido de alto rendimiento es el que
tiene como objetivo es mejorar el rendimiento, de tiempo o precisión, para la solución de un problema.  
Los clusters de alta disponibilidad están destinados a mejorar los servicios que ofrecen las empresas de cara a los clientes de una red, ya sea local o de Internet. Fundamentalmente tienen dos características: la fiabilidad y Disponibilidad
Ya que dependiendo del sistema operativo que vayamos a utilizar necesitaremos unos paquetes o programas.
Con alta confiabilidad se trata de aportar la máxima confianza es un entorno en el cual se necesita saber que el sistema siempre se va a comportar de una forma determinada. Así como también:
Software de sistema: Podemos usar distintos sistemas operativos para conseguir el funcionamiento del cluster.
  • Para ello es importante tener los elementos necesarios que son
    Dos o más nodos (ordenadores) compuestos al menos por un microprocesador, una memoria y una interfaz para que se puedan comunicar con la red del cluster.
  • Hardware apropiado al tipo de cluster que vamos a utilizar.
·         Tarjeta de red.
·         Software de sistema y un software de aplicación.






miércoles, 2 de septiembre de 2015

Exposición





Reporte de Practica

INSTITUTO TECNOLOGICO SUPERIOR
De Cintalapa


ACTIVIDAD:
Reporte de práctica, teamviewer

·        INTEGRANTES:
·        CRUCITA ITZEL LÓPEZ CRUZ
·        MICAELA PÉREZ DÍAZ
·        MARÍA DE LOS ÁNGELES CRUZ CAL Y MAYOR
·        JOSÉ MANUEL MORALES ÁLVAREZ
·        CELIA DE JESUS NATAREN MORALES
·        LUIS DONALDO CIRILO SANCHEZ


INGENIERA EN INFORMÁTICA

GRADO Y GRUPO:
5        -      “F”





 Reporte de practica de teamviewer

Empezamos instalando el programa el cual es muy fácil, le damos al icono que dice público y siguiente a todo lo demás, después iniciamos el programa, ya abierto el programa introducimos el “ID” asociado de la computadora que sedea controlar, una vez haciendo esto le damos donde dice “conectar asociado”  y esperamos a que nos pida la contraseña, después de eso ya podemos controlar la maquina o computadora desde tu propia pc.

martes, 1 de septiembre de 2015

Unidad 1 Investigación Sistema Operativo


INSTITUTO TECNOLÓGICO SUPERIOR
De Cintalapa

SISTEMAS OPERATIVOS II

ACTIVIDAD 1:
INVESTIGACIÓN

CATEDRÁTICO:
REYNOL ROQUE FARRERA



     INTEGRANTES:
·        CRUCITA ITZEL LÓPEZ CRUZ
·        MICAELA PÉREZ DÍAZ
·        MARÍA DE LOS ÁNGELES CRUZ CAL Y MAYOR
·        JOSÉ MANUEL MORALES ÁLVAREZ
·        CELIA DE JESUS NATAREN MORALES

INGENIERA EN INFORMÁTICA

GRADO Y GRUPO:
5        -      “F”


1.1.-Conceptos y características de los S.O de red y centralizados
DEFINICIÓN DE SISTEMA OPERATIVO DE RED
Un sistema operativo de red (Network Operating System) es un componente software de una computadora que tiene como objetivo coordinar y manejar las actividades de los recursos del ordenador en una red de equipos. Consiste en un software que posibilita la comunicación de un sistema informático con otros equipos en el ámbito de una red. Dependiendo del fabricante del sistema operativo de red, tenemos que el software de red para un equipo personal se puede añadir al propio sistema operativo del equipo o integrarse con él. NetWare de Novell es el ejemplo más familiar y famoso de sistema operativo de red donde el software de red del equipo cliente se incorpora en el sistema operativo del equipo. El equipo personal necesita ambos sistema operativos para gestionar conjuntamente las funciones de red y las funciones individuales.
Características de los Sistemas Operativos de Red
™ Gestión centralizada de recursos y equipos de la  red se realiza, por un servidor con S.O. en red.
™ Aparece la figura del administrador de red, que gestiona la infraestructura de la red (no presente en grupos de trabajo).
™ Conecta todos los equipos y recursos de la red.
™ Coordina las funciones de los periféricos y recursos.
™ Proporciona seguridad controlando el acceso a los datos y recursos.
™ Optimiza la utilización de los recursos.



DEFINICIÓN DE SISTEMA OPERATIVO CENTRALIZADO
se trata de aquel que utiliza los recursos de una sola computadora, es decir, su memoria, CPU, disco y periféricos. Respecto al hardware podemos decir que se suele tratar de un computador caro y de gran potencia, con terminales alfanuméricos directamente conectados. Suele tratarse de una computadora de tipo desktop, en las cuales es común encontrar un monitor grande con un teclado y un mouse, además de un case para albergar la unidad de procesamiento y los demás componentes
Características de los Sistemas Operativos de Centralizado
Gestión de procesos
Respecto al manejo de procesos podemos cubrir 3 cosas: la comunicación entre procesos, la sincronización y la planificación. Para ejecutar un proceso, se le asigna memoria y se ejecuta sobre el (normalmente) único procesador del sistema. Es más simple que en un sistema distribuido pues siempre se va a elegir el procesador local, así que el tema pasa más por buscar el funcionamiento óptimo del procesador que se posea y en buscar en qué procesador ejecutar un proceso para aprovechar las posibilidades de cómputo.
Gestión de memoria
El manejo de memoria tiene que ver con la asignación de memoria, el mapeo lógico y físico, la memoria virtual y los mecanismos de protección. En el sistema centralizado se maneja sólo la memoria con la que cuenta la computadora en la que está instalado el sistema
Gestión de dispositivos
Sobre el manejo de dispositivos podemos tratar los driver de los dispositivos, el buffering y el spooling. Para que sea un sistema centralizado la gestión de dispositivos debe encargarse sólo de los dispositivos que le pertenecen a una sola computadora.
Gestión de archivos
Para el manejo de archivos hay que tener en cuenta el acceso a archivos, la compartición de archivos, el control de concurrencia y la replicación de datos. Es la parte del sistema operativo centralizado que se encarga de proporcionar a los usuarios y aplicaciones servicios de para el uso, acceso y control de accesos, tanto de archivos como a directorios.


1.2.- Conceptos y características de los sistemas operativos distribuidos
SISTEMA OPERATIVO DISTRIBUIDO
es un conjunto de computadores independientes que se presenta a los usuarios como un sistema único.Un sistema distribuido fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.
Caracteristicas de Sistemas Distribuidos
Trasparencia
Se dice que un sistema distribuido es trasparente cuando es visto tanto por el usuario como por el programador como un sistema convencional de tiempo compartido. La trasparencia total es difícil de lograr. Parcialmente, el concepto de transparencia puede ser aplicado a varios aspectos de un sistema distribuido.
Flexibilidad
Este aspecto se refiere a la forma en que debe ser construido el sistema operativo. Conviven dos escuelas de pensamiento que son las del kernel monolítico y las del sistema operativo basado en microkernel. La primera sostiene que los servicios del sistema deben residir en el sistema operativo y la segunda que es preciso extraer todos los servicios posibles fuera del núcleo del sistema operativo y disponerlos en procesos de usuario, logrando un mayor estructura e independencia en los servicios, que pueden residir en máquinas diferentes. Hoy en día el kernel monolítico domina el mundo de los sistemas operativos, pero parece que el futuro se impondrá la filosofía microkernel, debido a su mayor flexibilidad. Para obtener un servicio, un proceso de usuario envía un mensaje al servidor adecuado.
Fiabilidad
Una de las motivaciones originales para tratar de construir sistemas distribuidos fue el aumento de la fiabilidad del sistema. En un sistema con cien UCP's el fallo de uno de ellas no tendrá consecuencias graves, por que su trabajo será realizado por las otras. En un sistema en el que el sistema de ficheros se reparte en cuatro servidores, cada uno de ellos con una probabilidad de que en un instante dado sea inoperativo de 0.05, la probabilidad de que el sistema de ficheros completo no sea operativo es de 0.054 = 0.000006.
Prestaciones
Por muy brillantemente que hayan sido resueltos los objetivos de transparencia y fiabilidad de un sistema operativo distribuido, este no tendrá éxito si es lento. La velocidad de los sistemas distribuidos viene comprometida por el tráfico de mensajes en las líneas de comunicación. En una red local, el envío de un mensaje puede llevar alrededor de un milisegundo.
 Escalabilidad
A pesar de los progresos de los últimos años, con sistemas concretos y desarrollados, el diseño de sistemas operativos distribuidos es un campo aún poco conocido e investigado. Los actuales sistemas abarcan como máximo unos cientos de máquinas.


1.3 Sistemas operativos distribuidos: ventajas y desventajas contra S.O centralizados, S.O para red, modelo cliente-servidor, modelo de N capas, características del hardware y características del software (homogéneos y heterogéneos), direccionamiento lógico y físico
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.
Ventajas de los Sistemas Distribuidos con Respecto a los de Red
La diferencia entre estos dos tipos de sistemas operativos es que el de red opera sus computadoras independientemente, cada maquina usa sus propios recursos, disco duro, memoria ram, procesador, los archivos tienen su propio directorio en cada una. En cambio los LOS SISTEMAS OPERATIVOS DISTRIBUIDOS usan todos los recursos de todas las computadoras como si fueran una sola, tienen un solo disco duro formado con el de todas, no importa donde este un archivo es la misma dirección para todas.
modelo cliente - servidor
La existencia de los encabezados genera un “costo” adicional de transmisión.
Cada envío de un mensaje genera:
Proceso en media docena de capas.
Preparación y agregado de encabezados en el camino hacia “abajo”.
Eliminación y examen de encabezados en el camino hacia “arriba”.
Con enlaces del orden de decenas (o centenas) de miles de bits / segundo y cpu poderosas:
La carga de procesamiento de los protocolos no es significativa.
El factor limitante es la capacidad de las líneas.
Ej.: redes de área extendida (WAN).
Con enlaces del orden de millones de bits / segundo y computadoras personales:
La carga de procesamiento de los protocolos sí es frecuentemente significativa.
El factor limitante no es la capacidad de las líneas.
Ej.: redes de área local (LAN).
La mayoría de los sistemas distribuidos basados en LAN no utilizan los protocolos de capas completos, sí utilizan un subconjunto de toda una pila de protocolos.
El “modelo OSI” no dice nada acerca de la forma de estructurar al sistema distribuido.
El “modelo cliente - servidor” tiene como idea fundamental la estructuración del S. O. como:
Un grupo de procesos en cooperación, llamados servidores, que ofrecen servicios a los usuarios.
Un grupo de procesos usuarios llamados clientes.
El “modelo cliente - servidor” se basa en un “protocolo solicitud / respuesta”:
Es sencillo y sin conexión.
No es complejo y orientado a la conexión como OSI o TCP / IP.
El cliente envía un mensaje de solicitud al servidor pidiendo cierto servicio.
El servidor:
Ejecuta el requerimiento.
Regresa los datos solicitados o un código de error si no pudo ejecutarlo correctamente.
No se tiene que establecer una conexión sino hasta que ésta se utilice.
La pila del protocolo es más corta y por lo tanto más eficiente.
Modelo n-capas
Modelo de desarrollo N-Capas.
Las capas dentro de una arquitectura son un conjunto de servicios especializados que pueden ser accesibles por múltiples clientes y que deben ser fácilmente reutilizables.
Lo que se conoce como arquitectura en capas es en realidad un estilo de programación donde el objetivo principal es separar los diferentes aspectos del desarrollo, tales como las cuestiones de presentación, lógica de negocio, mecanismos de almacenamiento, etc.
Una razón importante por la que surge este concepto, es debido a que en la evolución del desarrollo de software, se ha identificado la necesidad de crear nuevas capas, especializadas en funciones específicas, diferentes a las 3 identificadas previamente. Tal es el caso de la seguridad, el control de excepciones, el transporte de datos entre capas, la generación de trazas de errores, entre otros.
Ventajas
Desarrollos paralelos (en cada capa)
Aplicaciones más robustas debido al encapsulamiento
Mantenimiento y soporte más sencillo (es más sencillo cambiar un componente que modificar una aplicación monolítica)
Mayor flexibilidad (se pueden añadir nuevos módulos para dotar al sistema de nueva funcionalidad)
Alta escalabilidad. La principal ventaja de una aplicación distribuida bien diseñada es su buen escalado, es decir, que puede manejar muchas peticiones con el mismo rendimiento simplemente añadiendo más hardware. El crecimiento es casi lineal y no es necesario añadir más código para conseguir esta escalabilidad.
Desventajas
Pone más carga en la red, debido a una mayor cantidad de tráfico de la red.
Es mucho más difícil programar y probar el software que en arquitectura de dos niveles porque tienen que comunicarse más dispositivos para terminar la transacción de un usuario.
Características Hardware Sistemas Distribuidos
Conceptos de Hardware
Todos los sistemas distribuidos constan de varias cpu, organizadas de diversas formas, especialmente respecto de:
o La forma de interconectarlas entre sí.
o Los esquemas de comunicación utilizados.
Existen diversos esquemas de clasificación para los sistemas de cómputos con varias cpu:
o Uno de los mas conocidos es la “Taxonomía de Flynn”:
o Considera como características esenciales el número de flujo de instrucciones y el número de flujos de datos.
o La clasificación incluye equipos SISD, SIMD, MISD y MIMD.
SISD (Single Instruction Single Data: un flujo de instrucciones y un flujo de datos):
o Poseen un único procesador.
SIMD (Single Instruction Multiple Data: un flujo de instrucciones y varios flujos de datos):
o Se refiere a ordenar procesadores con una unidad de instrucción que:
o Busca una instrucción.
o Instruye a varias unidades de datos para que la lleven a cabo en paralelo, cada una con sus propios datos.
• Son útiles para los cómputos que repiten los mismos cálculos en varios conjuntos de datos.
MISD (Multiple Instruction Single Data: un flujo de varias instrucciones y un solo flujo de datos):
• No se presenta en la práctica.
MIMD (Multiple Instruction Multiple Data: un grupo de computadoras independientes, cada una con su propio contador del programa, programa y datos):
• Todos los sistemas distribuidos son de este tipo.
Un avance sobre la clasificación de Flynn incluye la división de las computadoras MIMD en dos grupos:
• Multiprocesadores: poseen memoria compartida:
o Los distintos procesadores comparten el mismo espacio de direcciones virtuales.
• Multicomputadoras: no poseen memoria compartida:
o Ej.: grupo de PC conectadas mediante una red.
Cada una de las categorías indicadas se puede clasificar según la arquitectura de la red de interconexión en:
• Esquema de bus:
o Existe una sola red, bus, cable u otro medio que conecta todas las máquinas:
 Ej.: la televisión por cable.
• Esquema con conmutador:
o No existe una sola columna vertebral de conexión:
 Hay múltiples conexiones y varios patrones de conexionado.
 Los mensajes de mueven a través de los medios de conexión.
 Se decide explícitamente la conmutación en cada etapa para dirigir el mensaje a lo largo de uno de los cables de salida.
 Ej.: el sistema mundial telefónico público.
• Otro aspecto de la clasificación considera el acoplamiento entre los equipos:
• Sistemas fuertemente acoplados:
o El retraso al enviar un mensaje de una computadora a otra es corto y la tasa de transmisión es alta.
o Generalmente se los utiliza como sistemas paralelos.
• Sistemas débilmente acoplados:
o El retraso de los mensajes entre las máquinas es grande y la tasa de transmisión es baja.
o Generalmente se los utiliza como sistemas distribuidos.
Generalmente los multiprocesadores están más fuertemente acoplados que las multicomputadoras.
Características Software Sistemas Distribuidos
Aunque el hardware es importante, el software lo es más. La imagen que presenta y la forma de pensar de los usuarios de un sistema, queda determinada en gran medida por el software del sistema operativo, no por el hardware.
Se puede distinguir dos tipos de sistemas operativos para los de varios CPU:
Los débilmente acoplados: El software débilmente acoplado permite que las máquinas y los usuarios de un sistema distribuido sean independientes entre sí en lo fundamental, pero que interactúen en cierto grado cuando sea necesario.
 Los fuertemente acoplados: En el software fuertemente acoplado el programa de aplicación y el sistema operativo necesario para soportarlo, están muy acoplados.
Direccionamiento Lógico- Físico Sistemas Distribuidos
Una dirección generada por la CPU se denomina dirección lógica en cambio a la que es percibida por unidad de memoria se denomina dirección física.
Los esquemas de vinculación de direcciones durante la compilación y durante la carga dan pie a un entorno en el que las direcciones lógicas y físicas son las mismas. En cambio, la ejecución del esquema de vinculación de direcciones durante la ejecución produce un entorno en el que las direcciones lógicas y físicas difieren. En este caso la dirección lógica suele llamarse dirección virtual.
Direccionamiento lógico y físico El proceso desde que los datos son incorporados al ordenados hasta que se transmiten al medio se llama encapsulación. Estos datos son formateados, segmentados, identificados con el direccionamiento lógico y físico para finalmente ser enviados al medio. A cada capa del modelo OSI le corresponde una PDU (Unidad de Datos) siguiendo por lo tanto el siguiente orden de encapsulamiento:
o  DATOS
o  SEGMENTOS
o  PAQUETES
o  TRAMAS-BITS
o  CAPA TRANSMITE
o  APLICACIÓN DATOS
o  PRESENTACIÓN
o  SESIÓN
o  TRANSPORTE SEGMENTOS
o  RED PAQUETES
o  ENLACE DE DATOS TRAMAS
o  FÍSICA BITS
Debido a que posiblemente la cantidad de los datos sean demasiados, la capa de transporte desde de origen, se encarga de segmentarlos para así ser empaquetados debidamente, esta misma capa en el destino se encargara de reensamblar los datos y colocarlos en forma secuencial, ya que no siempre llegan a su destino en el orden en que han sido segmentados, así mismo acorde al protocolo que se este utilizando habrá corrección de errores. Estos segmentos son empaquetados (paquetes o datagramas) e identificados en la capa de red con la dirección lógica o IP correspondiente al origen y destino. Ocurre lo mismo con la dirección MAC en la capa de enlace de datos formándose las tramas o frames para ser transmitidos a través de alguna interfaz.


1.4.- Sistemas distribuidos de alto rendimiento a bajo costo (clustering) en sistemas operativos de libre distribución
Sistemas distribuidos de alto rendimiento a bajo costo (clustering) en sistemas operativos de libre distribución.
 Un cluster es un conjunto de ordenadores que están conectados entre sí por medio de una red, para compartir recursos con el objetivo de realizar tareas y funciones como si fuesen un único ordenador (memoria distribuida).
Sirve para cuando queramos realizar tareas que necesiten grandes requerimientos de memoria y CPU y para ahorrarnos horas de trabajo en tareas y operaciones.
 Tipos de Cluster
·         Hay 3 tipos de cluster:
·         High Performance o Alto rendimiento.
·         High Availability o Alta Disponibilidad.
·         High Reliability o Alta Confiabilidad.

Alto Rendimiento

El objetivo es mejorar el rendimiento, de tiempo o precisión, para la solución de un problema.
Este tipo suele estar ligado a solucionar los siguientes problemas:
·         Cálculos matemáticos
·         Mejora de gráficos
·         Compilación de programas
·         Descifrado de códigos
·         Rendimiento del sistema operativo
·         Alta disponibilidad
Los clusters de alta disponibilidad están destinados a mejorar los servicios que ofrecen las empresas de cara a los clienrtes de una red, ya sea local o de internet. Fundamentalmente tienen dos características :
·         Fiabilidad
·         Disponibilidad
·         Alta confiabilidad

Con alta confiabilidad se trata de aportar la máxima confianza es un entorno en el cual se necesita saber que el sistema siempre se va a comportar de una forma determinada, como por ejemplo sistemas de respuesta a tiempo real.
Suele ser usado para entornos de tipo empresarial, necesitando un hardware especializado.
 Elementos necesarios
Dos o más nodos (ordenadores) compuestos al menos por un microprocesador, una memoia y una interfaz para que se puedan comunicar con la red del cluster.
Hardware apropiado al tipo de cluster que vamos a utilizar.
Tarjeta de red.
Un medio de transmisión entre ellos como por ejemplo RJ-45.
Software de sistema y un software de aplicación.
Software de sistemaPodemos usar distintos sistemas operatios para conseguir el funcionamiento del cluster, como son:
·         Ubuntu server
·         Windows Server
·         OpenMosix
·         ParallelKnoppix
·         Pelican
·         Software de Aplicación
Dependiendo del sistema operativo que vayamos a utilizar necesitaremos unos paquetes o programas:
En el caso de Linux:
HeartBeat: ejecuta los servicios en los nodos.
HeartBeat-Stonith: es una técnica HeartBeat que se encarga de controlar que cuando un servidor esté caído no interfiera en el funcionamiento del cluster.
En el caso del Windows:

A partir de windows 2003 server los servidores ya viene preparado con el software necesario. Para mejorar el rendimiento en windows server 2008 podemos usar Failover Cluster.