miércoles, 2 de diciembre de 2015

Unidad 5 Usos y tendencias de los Sistemas Operativos Distribuidos.


5.1 Administración Sistemas Distribuidos


La administración de sistemas distribuidos incluye las actividades como: manejo de la versión y distribución del software, monitoreo de la utilización de los recursos y el mantenimiento del sistema de seguridad, entre otros.
Los administradores de sistemas distribuidos se ocupan de monitorear continuamente al sistema y se deben de asegurar de su disponibilidad. Para una buena administración, se debe de poder identificar las áreas que están teniendo problemas así como de la rápida recuperación de fallas que se puedan presentar. La información que se obtiene mediante el monitoreo sirve a los administradores para anticipar situaciones criticas. La prevención de estas situaciones ayuda a que los problemas no crezcan para que no afecten a los usuarios del sistema.






5.2 Instalacion de Clusters


En este caso se instalara el sistema operativo distribuido Linux. Preparación Primero vamos a probar el sistema antes de instalarlo. Para ello, debemos tener un CD de Ubuntu. Podemos hacerlo de varias maneras:

1. Descargarlo desde la página web oficial.

2. Pedirlo a través de shipit (tarda de 4 a 6 semanas en llegar)

3. Obtener una copia a través de un conocido. Independientemente del método que usé, el disco que obtendrá será el mismo. Una vez que tengas el CD, debe configurar la BIOS para que nos lea el CD antes de arrancar el disco duro.

Puedes comprobar si lo tienes correctamente configurado introduciendo el CD de Ubuntu y reiniciando el sistema. Si carga el CD lo tienes bien, si no lo carga, debes hacer lo siguiente. Nada más encender el ordenador, aparece una pantalla negra con letras. Debe ser algo parecido a esto: ¿Veis que dice “Press DEL to enter SETUP”? Eso significa que pulsando la tecla Suprimir entraremos a la configuración. Advierto que la tecla varía de unas BIOS a otras. Aquí es Suprimir pero podría ser F2 o F12.

Todo es fijarse y pulsarla. Una vez hecho esto, aparecerá una pantalla típicamente azul. Dentro de ella, debemos buscar algo así como Boot Order, y poner al lector de CD el primero y al disco duro en segundo lugar. Si lo hemos hecho bien, deberá quedarse como en la imagen de abajo. Una vez ajustado este parámetro, buscamos la tecla para salir de la BIOS guardando los cambios (“Save and Exit setup” suele ser la frase asociada a tal tecla). Una vez guardemos los cambios el sistema se reiniciará y debería cargar el CD del lector.

Si sigues teniendo problemas contacta con nosotros o pide ayuda en un foro especializado. Una vez consiga cargar el CD, veremos el siguiente menú: Debemos seleccionar la opción “Probar Ubuntu sin alterar el equipo”, puesto que es lo que queremos. Tardará unos 5 minutos en arrancar. Una vez arranque, tendremos listo el sistema para un primer uso. El primer contacto Al iniciar, tendremos una pantalla parecida a esta.

Vemos 3 menús (Aplicaciones, Lugares y Sistema). Desde Aplicaciones podremos acceder a los programas instalados en el sistema. En Lugares podremos encontrar accesos a los directorios relevantes del sistema. Por último, en el menú sistema podremos configurar aspectos de nuestro sistema (salvapantallas, temas, pantalla de entrada, bluetooth,...)
Dado que estamos iniciando desde el CD, podemos tocar todo lo que queramos sin que esto repercuta en nuestro sistema. Así que lo mejor es comprobar que todo el hardware o casi todo funiona. Por lo demás, simplemente podemos ver las aplicaciones que vienen con el sistema y familiarizarnos un poco con él. Si queremos instalar hacemos doble clic en el icono que hay en el escritorio.

Si no queremos instalarlo, pulsamos en el botón que hay en la parte superior derecha, donde dice “Live Session User”, desde ahí podremos apagar el sistema. Instalando el sistema Para instalar el sistema, hacemos doble clic en el icono del escritorio que dice instalar. Nos aparecerá un asistente que nos guiará en toda la instalación. Aquí nos saltamos los primeros pasos porque son muy sencillos (Idioma, distribución del teclado y zona horaria). Así pues, llegamos al paso del particionado.

Lo más fácil es usar una de las opciones prefijadas que nos da el instalador, ya que nos evita este pasó. De todas formas, si lo que queremos es algo personalizado, debemos especificar las particiones manualmente. Debemos recordar que para funcionar correctamente, Ubuntu necesita dos particiones: una ext3 (o ext4) y una partición SWAP. Si elegimos un particionado personalizado crearlas es muy sencillo. Debemos seleccionar un espacio en blanco y crear una partición con formato ext3/ext4 y el tamaño que nosotros elijamos. Además, el punto de montaje de esta partición debe ser / puesto que será nuestra partición raíz. Debe quedar algo parecido a esto: Para la partición SWAP, debemos darle un tamaño aproximado de 1 GB.

Las particiones swap no tienen punto de montaje así que es mucho más sencillo crearlas. Una vez creada debe ser parecido a esto: Recordad que los tamaños de las particiones (tanto la raíz como SWAP se escriben MB. Para pasar a GB debéis dividir por 1024). Una vez tengamos el particionado completo pasamos a rellenar los datos de usuario.
Si tenemos una partición con una versión de Windows, el instalador nos ofrecerá la opción de utilizar los datos de esa cuenta para Ubuntu. Si es lo que quieres, marcas las casillas correspondientes y listo.

Detallamos un poco como rellenar estos apartados. En el primero debemos poner nuestro nombre. En el segundo, el nombre para iniciar sesión. Este nombre sólo puede contener minúsculas. La contraseña es a vuestra elección. El nombre del equipo es el nombre con el que otros usuarios verán al equipo en la red. Por último, podremos seleccionar si queremos que este usuario se identifique en el sistema automáticamente o por el contrario pida la contraseña. Esto último es a nuestra elección.

Una vez hayamos terminado de configurar todos los apartados, se nos mostrará un resumen de todos los cambios que el instalador hará en el sistema. Conviene comprobarlos para ver si está todo correcto. Si lo está, pulsamos en Instalar y comenzará la instalación del sistema. Suele durar unos 15-20 minutos. Cuando termine, nos mostrará una pantalla para, o bien continuar usando el sistema del CD, o bien reiniciar y empezar a usar el nuevo sistema.

Si seguEs utilizando el CD, recordad que para salir debEs pulsar en el botón que hay en la parte superior derecha. Al reiniciar, usaremos el sistema nuevo, con las mismas características que el del CD, pero trabajando mucho más rápido. Ahora pasaremos a la correcta configuración del sistema, que es otro aspecto importante a tener en cuenta.

5.3 Estándares de administración en sistemas distribuidos

El establecimiento de estándares

Aquellas normas usuales, los propósitos, los objetivos, a alcanzar, los datos de carácter histórico las directrices que guían las actividades, las predicciones sobre el volumen de estas, las metas a alcanzar y aquellos índices que integran los planes , y todo dato o cifra que pueda emplearse como medida para cumplirlas, son considerados como estándares.

Estas medidas son indispensables para el control, ya que indican la manera en que deseas que se ejecute una actividad. En la práctica, son los objetivos declarados y definidos de la organización y por esa razón los estándares deben abarcar las funciones básicas y áreas clave de los resultados logrados.

Para construir los estacares, debe partirse del análisis de procesos, como las normas de trabajo o de costos y la recopilación de experiencias anteriores.

Estándares estadísticos o históricos: parten del análisis de datos de experiencias logradas, que muchas veces son complementadas con el criterio personal.

Los estándares elaborados técnicamente se fundamentan en el estudio objetivo y cuantitativo de una situación de trabajo específica.

Los estándares puedes ser físicos, intangibles, de costos, de inversión, de recursos o medios de producción, de ingresos o de resultados, y expresarse cuantitativamente, en unidades numéricas, de uno u otro tipo(moneda, volumen, capacidad ), o cualitativos, cunado se establecen subjetivamente y lo que se mide y evalúa se refiere a cierta calidad(impacto en el mercado, nombre de la empresa, precio en la competencia).

5.4 Computo de alto rendimiento a bajo costo

En la actualidad, es factible disponer de alta capacidad computacional, incluso equivalente a la encontrada en las poderosas y costosas supercomputadoras clásicas, mediante clusters (conglomerados) de computadoras personales (PCs) independientes, de bajo costo, interconectadas con tecnologías de red de alta velocidad, y empleando software de libre distribución. El conglomerado de computadoras puede trabajar de forma coordinada para dar la ilusión de un único sistema. Este artículo presenta las ideas básicas involucradas en el diseño, construcción y operación de clusters, presentando aspectos relacionados tanto al software como al hardware. 
Se presentan los diferentes tipos de clusters, su arquitectura, algunas consideraciones de diseño, y se mencionan ejemplos concretos del hardware para los nodos individuales y para los elementos de interconexión de alta velocidad, así como ejemplos concretos de los sistemas de software para el desarrollo de aplicaciones y administración de los clusters.

5.5. Súper cómputo basado en clustering como
solución a la necesidad de alto


La tecnología de clústeres ha evolucionado en apoyo de actividades que van desde aplicaciones de supercómputo y software de misiones 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.

5.6 Tendencias de investigación


Las razones para construir sistemas distribuidos son las siguientes:
Computación más rápida: si un cálculo dado se puede subdividir en varios subcalculos susceptibles de ejecución concurrente, un sistema distribuido podría permitirlo distribuir el cálculo entre los distintos sitios, y ejecutándolo de forma concurrente.
Confiabilidad: si en un sitio de un sistema distribuido falla, los sitios restantes podrían seguir funcionando.
Comunicación: hay muchos casos en los que los programas necesitan intercambiar datos con otros programas del mismo sistema Si muchos sitios están conectados a través de una red de comunicaciones, los procesos de diferentes sitios tienen la oportunidad de intercambiar información. Los usuarios podrían iniciar transferencia de archivo o comunicarse entre sí por correo electrónico.

Arquitectura DSM (Numa).

Esta arquitectura de memoria que se genera en retardo de acceso dependiente tanto la posición de memoria como el procesador se denomina Acceso No Uniforme a Memoria (NUMA), hace su aparición cuando la memoria compartida está distribuida entre los nodos. De esta manera, se mejora el retardo medio de acceso a memoria, ya que en cada ordenador los accesos a posiciones de su memoria local presentan un retardo sensiblemente inferior al caso en que es accedido a posiciones de memoria en otros ordenadores. Esta clase de ordenadores con arquitectura NUMA presentas escalabilidad. Propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación.

Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras. El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.

Sistema realmente distribuido.- El objetivo es crear la ilusión en la mente de los usuarios de que toda la red es un solo sistema de tiempo compartido. Características: Debe existir un Mecanismo de comunicación global entre los procesos (cualquiera puede hablar con cualquiera). No tiene que haber distintos mecanismos en distintas máquinas o distintos mecanismos para la comunicación local o la comunicación remota. Debe existir un esquema global de protección. La administración de procesos debe ser la misma en todas partes (crear, destruir, iniciar, detener). Debe existir un sistema global de archivos y debe tener la misma apariencia en todas partes.
El rasgo clave es que existe una sola cola para una lista en el sistema, de los procesos que no se encuentran bloqueados y que están listos para su ejecución. Dicha cola de ejecución de procesos se encuentra almacenada en la memoria compartida. Cuando los procesos que se encuentran en la cola listos para su ejecución son asignados a los procesadores de la siguiente manera: 1.- Encuentra que el cache del procesador esta ocupad, por palabras de memoria compartida que contiene al programa del proceso anterior. 2.- Después de un pequeño intervalo de tiempo, se remplazara por el código y los datos del programa del proceso que le ha sido asignado a dicho procesador.

5.7. Sistemas distribuidos como infraestructura
para el soporte de las empresas en las TI.

El modelo de sistema distribuido es el más general, por lo que, aunque no se ha alcanzado a nivel comercial la misma integración para todo tipo de recursos, la tendencia es clara a favor de este tipo de sistemas. La otra motivación es la relación de costes a la que ha llevado la evolución tecnológica en los últimos años. Hoy en día existe un hardware estándar de bajo coste, los ordenadores personales, que son los componentes básicos del sistema. Por otra parte, la red de comunicación, a no ser que se requieran grandes prestaciones, tampoco constituye un gran problema económico, pudiéndose utilizar infraestructura cableada ya existente (Ethernet, la red telefónica, o incluso la red eléctrica) o inalámbrica.

Unidad 4 Memoria Compartida Distribuida MCD


Los sistemas de Memoria Compartida Distribuida (MCD), son sistemas que, mediante software, emulan semántica de memoria compartida sobre hardware que ofrece soporte solo para comunicación mediante paso de mensajes. Este modelo permite utilizar una red de estaciones de trabajo de bajo costo como una maquina paralela con grandes capacidades de procesamiento y amplia escalabilidad, siendo a la vez fácil de programar.

El objetivo principal de estos sistemas es permitir que un multicomputador pueda ejecutar programas escritos para un multiprocesador con memoria compartida
Cada uno de los nodos en un sistema de MCD aporta una parte de su memoria local para construir un espacio global de direcciones virtuales que será empleado por los procesos paralelos que se ejecuten en el sistema. El software de MCD se encarga de interceptar las referencias a memoria que hacen los procesos, y satisfacerlas, ya sea local o remotamente.



4.1 Configuraciones de memoria compartida distribuida.

COMPUTACIÓN PARALELA
Un computador paralelo es un conjunto de procesadores capaces de cooperar en la solución de un problema. El problema se divide en partes. Cada parte se compone de un conjunto de instrucciones. Las instrucciones de cada parte se ejecutan simultáneamente en diferentes CPUs. Técnicas computacionales que descomponen un problema en sus tareas y pistas que pueden ser computadas en diferentes máquinas o elementos de proceso al mismo tiempo.

Por qué utilizar computación paralela?

Reducir el tiempo de procesamiento
Resolver problemas de gran embergadura.
Proveer concurrencia.
Utilizar recursos remotos de cómputo cuando los locales son escasos.
Reducción de costos usando múltiples recursos "baratos" en lugar de costosas supercomputadoras.
Ampliar los límites de memoria para resolver problemas grandes.
El mayor problema de la computación paralela radica en la complejidad de sincronizar unas tareas con otras, ya sea mediante secciones críticas, semáforos o paso de mensajes, para garantizar la exclusión mutua en las zonas del código en las que sea necesario.

La computación paralela está penetrando en todos los niveles de la computación, desde computadoras masivamente paralelas usados en las ciencias de larga escala computacional, hasta servidores múltiples procesadores que soportan procesamiento de transacciones. Los principales problemas originados en cada uno de las áreas básicas de la informática (por ejemplo, algoritmos, sistemas, lenguajes, arquitecturas, etc.) se vuelven aún más complejos dentro del contexto de computación paralela.




DE CIRCUITOS, BASADOS EN BUS, ANILLO O CON CONMUTADOR
Existen varias formas de implantar físicamente memoria compartida distribuida, a continuación se describen cada una de ellas.

Memoria basada en circuitos: Existe una única área de memoria y cada micro tiene su propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado)
MCD basada en bus: En este esquema los micros comparten un bus de datos y direcciones por lo que es más barato de implementar, se necesita tener una memoria caché grande y sumamente rápida.
Multiprocesadores tipo bus.
Conexión entre CPU y memoria se hace a través de cables paralelos:
o Algunos transmiten las direcciones y datos que el CPU quiere leer o escribir
o Otros envían o reciben datos
o El resto para controlar las transferencias.

Dicha colección de cables se conoce con el nombre de bus.
Buses pueden ser parte del chip, pero en la mayoría de los sistemas los buses son externos y son usados para conectar circuitos impresos.
Una forma simple de construir multiprocesadores es conectarlos en un bus con más de un CPU.

MCD basada en anillos: Es más tolerante a fallos, no hay coordinador central y se privilegia el uso de la memoria más cercana.
Multiprocesadores basados en anillo.


Ejemplo Memnet: un espacio de direcciones se divide en una parte privada y otra compartida.

La parte privada:
o se divide en regiones cada máquina cuenta con memoria para su pila, datos y códigos no compartidos.

Parte compartida:
o común a todas las máquinas y se guarda de forma consistente mediante un protocolo de hardware parecido a los de bus se divide en bloques de 32 bytes, (unidad transferencia)


MCD basada en conmutador: Varios micros se conectan entre sí en forma de bus formando un grupo, los grupos están interconectados entre sí a través de un conmutador. Cuando se realiza una operación de memoria se intenta realizar dentro del grupo, de lo contrario pasa al conmutador para que lo redirecciones a otro grupo.

Multiprocesadores con conmutador.

En anillo o bus, el hecho de añadir un CPU satura el ancho de banda del bus o anillo

Dos métodos para solucionar el problema:

o 1. Reducir la cantidad de comunicación
o 2. Incrementar la capacidad de comunicación


Una forma de reducir la cantidad de comunicación es el ocultamiento trabajo adicional en esta área:

o mejorar protocolo de ocultamiento
o optimizar el tamaño del bloque
o incrementar la localidad de las referencias a memoria.


Sin embargo siempre se querrá añadir más CPUs y no habrá más ancho de banda en el bus.


4.2 Modelos de consistencia.

Un modelo de consistencia de memoria especifica las garantías de consistencia que un sistema MCD realiza sobre los valores que los procesos leen desde los objetos, dado que en realidad acceden sobre una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.
La duplicidad de los bloques compartidos aumenta el rendimiento, pero produce un problema de consistencia entre las diferentes copias de la página en caso de una escritura.
Si cada escritura es necesario actualizar todas las copias el envió de las paginas por red provoca que el tiempo de espera aumente demasiado convirtiendo el método en impracticable.



CARACTERISTICAS DE CONSISTENCIA

• Mantener consistencia no es algo simple.
• Un simple acceso a memoria puede requerir un gran número de paquetes a ser enviados.


ESTRICTA, CASUAL, SECUENCIAL, DEBIL, DE LIBERACION Y DE ENTRADA

CONSISTENCIA ESTRICTA: El modelo de consistencia más restrictivo es llamado consistencia estricta y es definido por la siguiente condición cualquier lectura sobre un ítem de dato X retorna un valor correspondiente con la más reciente escritura sobre X.

CONSISTENCIA CASUAL: Es un debilitamiento de la consistencia secuencial. Se hace una diferenciación entre eventos que están potencialmente relacionados en forma casual y aquellos que no.
La condición a cumplir para que unos datos sean casualmente consistentes es:
Escrituras que están potencialmente relacionados en forma casual deben ser vistas por todos los procesos en el mismo orden.

Esta secuencia es permitida con un almacenamiento casualmente consistente o con un almacenamiento consistente en forma estricta.

La condición a cumplir para que unos datos sean causalmente consistentes es:Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden.

Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas.
Esta secuencia es permitida con un almacenamiento causalmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.


CONSISTENCIA SECUENCIAL: La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:

El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial y las operaciones de cada proceso individual aparecen en esta operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su programa
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.

CONSISTENCIA DÉBIL: Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades:
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado. No se permiten operaciones de escritura o lectura sobre ítems de datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.

CONSISTENCIA LIBERACIÓN (RELEASE): El modelo de consistencia release, RC, se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación release. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.

Puesto que ningún otro proceso, ni local ni remoto, puede acceder a las variables que han sido modificadas mientras se encuentren protegidas en la sección critica, la actualización de cualquier modificación puede postergarse hasta el momento en que se lleva a cabo la operación reléase.

Propagación de Actualizaciones bajo RC y LRC de código sin proteger. En consecuencia obtuvo un valor inconsistente para la variable leída.



4.3 MCD en base de páginas.

Cada CPU cuenta con su propia memoria y no pueden referenciar memoria remota directamente.
Cuando dirección CPU se encuentra en una página que reside en una máquina remota:
Se notifica al sistema operativo
Sistema solicita dicha página con un mensaje.
Tanto ubicación como acceso son realizados a nivel software.
Ejemplos: IVY y Mirage
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras.
El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.

Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y privada y una zona de memoria compartida, que se usará únicamente por procesos que necesiten compartir datos. Esta abstracción se acerca a la idea de programación mediante la declaración explícita de datos públicos y privados, y minimiza el envío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse.


DISEÑO REPLICA GRANULARIDAD CONSISTENCIA

Hay dos razones principales para la replicación de datos:


Confiabilidad
Continuidad de trabajo ante caída de la réplica, mayor cantidad de copias mejor protección contra la corrupción de datos.

Rendimiento
El SD escala en número
Escala en área geográfica (disminuye el tiempo de acceso al dato) Consulta simultánea de los mismos datos.

GRANULARIDAD.

Se refiere a la especificidad a la que se define un nivel de detalle en una tabla, es decir, si hablamos de una jerarquía la granularidad empieza por la parte más alta de la jerarquía, siendo la granularidad mínima, el nivel más bajo.

MODELOS DE CONSISTENCIA.

Es esencialmente un contrato entre procesos y el almacenamiento de datos.
Es decir: si los procesos acuerdan obedecer ciertas reglas, el almacenamiento promete trabajar correctamente.

Normalmente un proceso que realiza una operación de lectura espera que esa operación devuelva un valor que refleje el resultado de la última operación de escritura sobre el dato.
Los modelos de consistencia se presentan divididos en dos conjuntos:

Modelos de consistencia centrados en los datos.
Modelos de consistencia centrados en el cliente.


4.4 MCD en base a variable.


Munin:

Consistencia de liberación.
Protocolos múltiples.
Directorios.
Sincronización.


Midway:

Consistencia de entrada.
Implementación. La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.

En los MCD basados en variables se busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.
En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulación de la información. Y repartida a través de la red, estos objetos serán definidos por el Programador y las CPUs cambiaran los estados según procedan con los accesos.

MCD BASADA EN VARIABLES COMPARTIDAS
El problema del false sharing puede eliminarse si se utiliza una granularidad más tan fin tan fina, como las entidades que usualmente se comparten en los programas paralelos:
Las variables. De ser así, el problema ahora consiste en cómo mantener registro de las variables replicadas. Además, es probable que sea más conveniente utilizar una política de actualización y no de invalidación, puesto que en la implementación debe ser posible identificar escrituras a variables individuales.


4.5 MCD en base a objetos.Nace como respuesta a la creciente popularización de los lenguajes orientados por objetos.

Los datos se organizan y son transportados en unidades de objetos, no unidades de páginas.

Es un modelo de programación de DSM de alto nivel.

Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.
Un ejemplo de un sistema de MCD que utiliza una granularidad a nivel de variable compartida es Munin, una de las primeras implementaciones de MCD. Munin permite la ubicación de variables individuales en páginas diferentes, de modo que se pueda utilizar el hardware de paginación para identificar los accesos a las variables compartidas.


4.6. Administradores de memorias en clusters.



La operación de clusters requiere de un manejo adecuado de los recursos asociados. Los recursos del cluster deben ser administrados adecuadamente para que el administrador invierta la menor cantidad de tiempo en detectar, investigar y recuperar fallos de hardware y software, y de este modo definir posibles medidas de contingencia y tratar que el sistema esté libre de errores. A su vez, estos pasos permiten la adaptabilidad a los requerimientos y cambios constantes que se presentan en la manipulación de tecnologías cluster, en cuanto se refiere al
hardware, software y al uso de ciertos patrones de diseño.


El administrador de un cluster debe tomar en cuenta algunos aspectos, una vez que se ha completado la instalación de los recursos básicos de hardware y software. Estos aspectos incluyen la configuración e instalación de un sistema de archivos universal, la configuración y administración de recursos mediante herramientas implementadas en software; el monitoreo de sus actividades y el registro de cada uno de los eventos generados por la ejecución de cálculos computacionales.


Varios de los sistemas más importantes para la instalación automática de clusters, incluyen herramientas de monitoreo, administración y registro de eventos mediante paquetes de distribución para sistemas Windows y Linux. Entre estos sistemas están OSCAR y Rocks NPACI; ambos sistemas permiten el uso de herramientas de software que tienen propósitos específicos tales como:
Definición y administración de nodos.
Administración de colas por lotes (Batch Queue Management).
Administración de recursos: grupos NIS (Network Information Service), cuotas de disco y CPU.
Administración de servicios de resolución de nombres : DNS (Domain Name System para clusters).
Registro de usuarios para clusters de dimensiones superiores a los 100 nodos.

Monitoreo de carga.


La administración de clusters, implica tomar medidas preventivas y planificar tareas. La administración implica los siguientes aspectos:
Registro de eventos.
Monitoreo o medida del estado de los recursos del cluster.
Recuperación ante fallos de hardware, software, incluyendo el sistema de archivos.
Administración del registro de usuarios y grupos de usuarios, de los servicios del cluster (accounting).
Planificación de tareas y balanceo de carga.


Registro de Eventos

El manejo de logs, o el registro de eventos generados tanto por el kernel del sistema operativo, como por los diferentes servicios que han sido habilitados para el establecimiento de comunicación entre los nodos, se lo puede realizar mediante comandos del sistema operativo Linux para poder visualizar los archivos de logs, o utilizar herramientas de monitoreo tales como:
LogCheck
Swatch
LogSentry
LogDog


Monitoreo y Estado del Cluster


El monitoreo permite conocer si todos los componentes de hardware y software están disponibles y operando de acuerdo a lo esperado. Es decir, debe asegurarse que todos los componentes de hardware estén disponibles durante el arranque del sistema operativo (CPUs, memoria, discos, dispositivos de red y otros), y de igual forma, que todos los servicios de software, tales como: planificadores de tareas, administradores de recursos, y demonios de monitoreo se ejecuten correctamente en el cluster. 

Entre las herramientas de monitoreso se pueden mencionar:
Big Brother
Cluemon
Ganglia
Nagios
PARMON
Supermon

jueves, 15 de octubre de 2015

Unidad 3 Procesos y procesadores en sistemas operativos distribuidos.




3.1 CONCEPTOS BÁSICOS PROCESOS Y PROCESADORES

Proceso: es un concepto manejado por el sistema operativo que consiste en el conjunto formado por:

• Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.

• Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa.

• Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenido.

Procesador: es un circuito electrónico integrado que actúa como unidad central de proceso de un ordenador, proporcionando el control de las operaciones de cálculo. 

Los procesadores distribuidos se pueden organizar de varias formas:

• Modelo de estación de trabajo

• Modelo de la pila de procesadores

• Modelo híbrido


3.2. HILOS Y MULTIHILOS

Un hilo de ejecución, es una característica que permite a una aplicación realizar varias tareas concurrentemente.

Comparten una serie de recursos como el espacio de memoria, los archivos abiertos, situación de autenticación, etc.

Permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.

SINCRONIZACION DE HILOS

Los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos.

Cualquier modificación de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso.

Es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de datos.

VENTAJAS DE LA PROGRAMACION MULTIHILO

Es que los programas operan con mayor velocidad en sistemas de computadores con múltiples CPUs (sistemas multiprocesador o a través de grupo de máquinas) ya que los hilos del programa se prestan verdaderamente para la ejecución concurrente.

FORMAS DE MULTIHILO

Los sistemas operativos generalmente se implementan hilos de dos maneras:

Multihilo apropiativo: permite al sistema operativo determinar cuándo debe haber un cambio de contexto. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenómeno conocido como inversión de prioridades y otros problemas.

Multihilo cooperativo: depende del mismo hilo abandonar el control cuando llega a un punto de detención, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.


3.3. MODELOS DE PROCESADORES

La historia de los microprocesadores comienza en 1971, con el desarrollo del procesador 4004 de Intel, para facilitar el uso de una computadora.

La época de los PC (personal computer), comenzó en 1978 junto con el procesador, 8086.

Los modelos de procesadores se han ido desarrollando de acuerdo a las necesidades de cada uno de los usuarios, los cuales pedían menores tiempos de respuesta, demandaban más capacidad de almacenamiento así como también, las posibilidades de compartir información de una manera mucho mas fácil y eficiente, es por eso que se desarrollaron tres modelos básicos, los de estación de trabajo, de pila de procesadores y los híbridos los cuales permitían hacer mejor uso de los recursos existentes.


3.3.1. MODELO DE ESTACION DE TRABAJO

El sistema consta de estaciones de trabajo (PC) dispersas conectadas entre sí mediante una red de área local (LAN).

Pueden contar o no con disco rígido en cada una de ellas

Los usuarios tienen:

· Una cantidad fija de poder de cómputo exclusiva.

· Un alto grado de autonomía para asignar los recursos de su estación de trabajo.



USO DE LOS DISCOS EN LAS ESTACIONES DE TRABAJO:

Sin disco:

Bajo costo, fácil mantenimiento del hardware y del software, simetría y flexibilidad.

Gran uso de la red, los servidores de archivos se pueden convertir en cuellos de botella.

Con disco:

• Disco para paginación y archivos de

• tipo borrador:

• Reduce la carga de la red respecto del

• caso anterior.

• Alto costo debido al gran número de discos necesarios.

Generalmente se considera que una estación de trabajo está “inactiva” cuando se dan ambas condiciones:

• Nadie toca el ratón o el teclado durante varios minutos.

• No se ejecuta algún proceso iniciado por el usuario.


3.3.2. MODELO DE PILA DE PROCESADORES

Se dispone de un conjunto de CPU que se pueden asignar dinámicamente a los usuarios según la demanda.

Los usuarios no disponen de estaciones de trabajo sino de terminales gráficas de alto rendimiento.

En general este modelo puede reducir significativamente el tiempo de espera al tener una sola cola de procesadores a repartir.

La capacidad de cómputo se puede gestionar de mejor forma si se tiene micros con mayores capacidades.


3.3.3 MODELO HÍBRIDO

Consta de estaciones de trabajo y una pila de procesadores. El sistema operativo permite más de un hilo por proceso.

El soporte de lenguaje de programación utiliza un hilo del núcleo para implementar un grupo de hilos de usuario. Proporciona flexibilidad y un máximo rendimiento potencial al programador de la aplicación.

El trabajo interactivo se ejecuta en cada estación de trabajo, y el no interactivo o más pesado en la pila de procesadores, obteniendo una respuesta más rápida, un diseño sencillo y un uso de los recursos adecuado.

VENTAJAS DE UN MODELO HÍBRIDO

• Recursos de procesamiento ajustados a las necesidades del usuario.

• Ejecución concurrente.

• Acceso a través de terminales (menor precio).

• Los usuarios utilizan estaciones de trabajo.

• Realizan trabajos interactivos en las estaciones de trabajo.


3.4 ASIGNACIÓN DE PROCESADORES

En todos los casos, se necesita cierto algoritmo para decidir cuál proceso hay que ejecutar y en qué máquina.

Para el modelo de estaciones de trabajo, la pregunta es cuándo ejecutar el proceso de manera local y cuándo buscar una estación inactiva.

Para el modelo de la pila de procesadores, hay que tomar una decisión por cada nuevo proceso.

Entonces, cada maquina puede tener un sistema de archivos auto contenido, con la posibilidad de montarlo o tener su sistema de archivos de otras maquinas. La idea aquí es que cada maquina esta auto contenida en lo fundamental y que el contacto con el mundo exterior sea limitado. Este sistema proporciona un tiempo de respuesta uniforme y garantizada para el usuario y pone poca carga en la red.

Plantea el problema de encontrar estaciones de trabajo inactivas en la red que puedan ejecutar procesos. Por lo cual las estaciones de trabajo deben de anunciar cuando no cuentan con una carga de trabajo asignada, así todas las demás estaciones toman nota de esto y lo registran.

IMPORTANCIA DE LA ASIGNACION

Existe un peligro potencial de que aparezcan condiciones de competencia si dos usuarios llaman al mismo tiempo al comando remote y ambos descubren que la misma maquina esta inactiva, ambos intentaran iniciar procesos al mismo tiempo.

Para detectar y evitar esta situación, el programa remote verifica la estación de trabajo inactiva, la cual si continua libre se elimina así misma del registro y da la señal de continuar, de esta manera quien hizo la llamada puede enviar su ambiente e iniciar el proceso remoto.

ESTRATEGIAS DE ASIGNACION DINAMICA

Las estrategias de asignación de procesadores se dividen en:

• No migratorias:Una vez colocado un proceso en una máquina permanece ahí hasta que termina.

• Migratorias: Un proceso se puede trasladar aunque haya iniciado su ejecución. Permiten un mejor balance de la carga pero son más complejas.

• Centralizadas o Distribuidas: Existe un coordinador central

• Óptimas o Subóptimas: Busca la mejor asignación o una que sea aceptable.

• Locales o Globales: Tiene en cuenta estado de la máquina local o estado del sistema

ESTRATEGIAS DE ASIGNACION ESTATICA

• Asignar procesos de una aplicación paralela a procesadores minimizando el tiempo de ejecución total: Debe buscar equilibrio entre paralelismo (uso de distinto procesador) y minimizar coste de comunicaciones (uso del mismo procesador)

• No solución óptima aunque muy estudiado. Dificultades en:Estimar coste de comunicacionesy Cómo reflejar que un proceso no ejecuta igual en todos procesadores

• Distintos modelos de paralelismo dependiendo de herramienta de programación paralela utilizada. Dos modelos típicos:Modelo basado en precedencia de procesos (cobegin-coend). Modelo basado en procesos que se comunican

ALGORITMOS DE ASIGNACION

Los algoritmos de asignación intentan optimizar algo:

• Uso de las CPU:Maximizar el número de ciclos de CPU que se ejecutan para trabajos de los usuarios. Minimizar el tiempo de inactividad de las CPU.

• Tiempo promedio de respuesta:Minimizar no los tiempos individuales de respuesta sino los tiempos promedio de respuesta.

• Tasa de respuesta:Minimizar la tasa de respuesta, que es el tiempo necesario para ejecutar un proceso en cierta máquina dividido por el tiempo que tardaría en cierto procesador de referencia.



3.4.1. MODELOS Y ALGORITMOS CON SUS ASPECTOS DE DISEÑO E IMPLEMENTACION


Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.

Los principales aspectos son: algoritmos determinísticos v/s heurísticos; centralizados v/s distribuidos, optimos v/s suboptimos; locales v/s globales; iniciados por el emisor v/s iniciados por el receptor.



3.5. COPLANIFICACION

Toma en cuenta los patrones de comunicación entre los procesos durante la planificación.

Debe garantizar que todos los miembros del grupo se ejecuten al mismo tiempo.

Cada procesador debe utilizar un algoritmo de planificación ROUND ROBIN.

Se emplea una matriz conceptual donde: Las filas son de espacios de tiempo.



3.6 TOLERANCIA A FALLOS

Es la propiedad que permite a un sistema continuar operando adecuadamente en caso de una falla en alguno de sus componentes.

Ante una falla, otro componente o un procedimiento especial de respaldo pueden tomar el control para subsanar o amortiguar los efectos del fallo.

Para que un sistema distribuido pueda ser tolerante a fallos, se ocupan las siguientes características:

DISPONIBILIDAD:Un sistema con alta disponibilidad es aquel que puede trabajar en cualquier tiempo.

CONFIABILIDAD:Un sistema con alta confiabilidad, es aquel que funciona por largos periodos de tiempo sin fallo alguno.

SEGURIDAD:Se refiere a la situación en la que un sistema falla temporalmente, no pasa nada grave, algunos de esos sistemas fallan, pueden traer consecuencias catastróficas.

MANTENIMIENTO:Se refiere a que tan rápido puede ser reparado un sistema.

Un sistema con alto grado de mantenimiento es aquel, que puede evitar o reparar fallas automáticamente.

CLASIFICACION DE FALLOS

FALLOS TRASCENDENTALES:Son aquellos fallos que aparecen una vez y después desaparecen aun cuando la misma operación se repite.

FALLOS INTERMITENTES:Son aquellos fallos que aparecen una vez y después desaparecen y después vuelven a aparecer y continua el ciclo.

FALLOS PERMANENTES: Son aquellos fallos que aparecen y no desaparecen hasta que el componente erróneo es remplazado o es arreglado el problema.

MODELOS DE FALLOS




3.7 SISTEMAS DISTRIBUIDOS DE TIEMPO REAL

Son aquellos que interactúan con el mundo exterior donde el tiempo es un factor importante.

CARACTERÍSTICAS

*Se activan por evento o por tiempo.

*Su comportamiento debe ser predecible.

*Deben ser tolerantes a fallas.

*La comunicación en estos sistemas deben de ser de alto desempeño.


CLASIFICACIÓN


SISTEMA DE TIEMPO REAL SUAVE.El tiempo real suave significa que no existe problema si se rebasa un tiempo límite.

Ejemplo de Sistema de Tiempo Real Suave: Conmutador telefónico.


SISTEMA DE TIEMPO REAL DURO.Es aquel en el que un tiempo límite no cumplido puede resultar catastrófico.

Ejemplo de Sistema De Tiempo Real Duro: Alarma sísmica.


3.8. SISTEMAS OPERATIVOS DISTRIBUIDOS EN TIEMPO REAL.

Un sistema computacional distribuido está formado por varios elementos de procesamiento autónomos que cooperan en un objetivo común o para lograr una meta común, al hablar de funcionamiento en tiempo real hacemos referencia a que las aplicaciones tienes varios nodos dispersos que realizan operaciones complejas en un marco de soncronía con una margen de error de fracciones de segundo. Un Sistema en Tiempo real proporciona un tipo de transparencia equivalente a la proximidad física, de tal suerte que un cluster permite a un grupo de usuarios remotos y separados físicamente, interactuar y trabajar como si estuvieran en la misma habitación y teóricamente, en una misma computadora.

En un sistema distribuido hay ciertos factores que cobran especial importancia:

Soporte del lenguaje: el desarrollo de un programa distribuido se facilita en gran medida si el lenguaje y su entorno de programación soportan el particionado, la configuración, asignación y reconfiguración de la aplicación distribuida, junto a un acceso independiente de la ubicación de los recursos remotos.
Fiabilidad: disponer de varios procesadores permite que la aplicación sea tolerante a fallos; si bien, la aplicación deberá ser capaz de explotar esta redundancia. 

El disponer de varios procesadores también introduce la posibilidad de que aparezcan fallos distintos a los que aparecen en un sistema monoprocesador. 

Algoritmos de control distribuidos: La presencia de paralelismo real en la aplicación, procesadores físicamente distribuidos, y la posibilidad de que fallen los procesadores y los elementos de proceso, implica la necesidad de nuevos algoritmos para el control de los recursos.
Planificación con tiempos límite (deadlines): cuando los procesos son distribuidos, los algoritmos óptimos para un procesador dejan de serlo. Se precisan nuevos algoritmos.



3.9. BALANCEO DE CARGA EN SISTEMAS DISTRIBUIDOS


El balance o balanceo de carga es un concepto usado en informática que se refiere a la técnica usada para compartir el trabajo a realizar entre varios procesos, ordenadores, discos u otros recursos. Está íntimamente ligado a los sistemas de multiprocesamiento, o que hacen uso de más de una unidad de procesamiento para realizar labores útiles.
El balance de carga se mantiene gracias a un algoritmo que divide de la manera más equitativa posible el trabajo, para evitar los así denominados cuellos de botella.

Balance de carga en servidores web
Uno de los principales problemas de los mayores sitios web en Internet es cómo gestionar las solicitudes de un gran número de usuarios. Se trata de un problema deescalabilidad que surge con el continuo crecimiento del número de usuarios activos en el sistema.
Este servicio se puede brindar tanto con un enrutador como con una computadora con dos placas de red y software específico.
Hay balanceadores de carga tipo round-robin (uno a uno) y por pesos (que son capaces de saber cuál de los nodos está más libre y lanzarle la petición). El más conocido esLVS, sin embargo hay otros, como el Red Hat Piranha.

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