domingo, 18 de noviembre de 2012

5.4 Tendencias de Investigacion Sistemas Distribuidos


Hoy en día, y gracias a la tecnología, "el termino centralizado" está desapareciendo, con la llegada de la redes de ordenadores podemos compartir recursos sin preocuparnos de la ubicación geográfica de la otra persona, podemos manejar ordenadores como si estuviésemos trabajando físicamente en ellos, además de transmitir información o escribir cartas que llegan al receptor en lapsos de tiempo mínimos.

Por ellos existen dos arquitecturas que resuelven dichos problemas Arquitectura SMP (Uma) Arquitectura DSM (Numa.) Arquitectura SMP (Uma) Los multiprocesadores simétricos (Symmetric Multiprocessor): son ordenadores con arquitectura de memoria compartida que presentan en la memoria principal un acceso simétrico desde cualquier procesador, es decir, el retardo en el acceso a cualquier posición de memoria es el mismo con independencia del procesador desde el que se realice la operación o tarea, dicha arquitectura es denominada como "Acceso Uniforma a Memoria" (UMA) y se lleva a cabo con una memoria compartida pero centralizada. Estos multiprocesadores dominan el volumen como el capital invertido. 

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.3 Tendencias de Investigacion 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).

Los estándares pueden representar calidad, mediante índices o calificaciones convencionales o por medio de coeficientes.

5.2 Estandares administracion 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).

Los estándares pueden representar calidad, mediante índices o calificaciones convencionales o por medio de coeficientes.

5.1.3 Control Sod


El Control de Sistemas e Informática, consiste en examinar los recursos, las operaciones, los beneficios y los gastos de las producciones (servicios y/o productos de los Sistemas Informáticos), de los Organismos sujetos a control, con la finalidad de evaluar la eficacia y eficiencia Administrativa Técnica y/u Operacional de los Organismos, en concordancia con los principios, normas, técnicas y procedimientos normalmente aceptados. Asimismo de los Sistemas (Planes, Programas y Presupuestos, Diseño, Software, Hardware, Seguridad, Respaldos y otros) adoptados por la Organización para su dinámica de Gestión en salvaguarda de los Recursos del Estado.

Existe otra definición sobre el "control técnico" en materia de Sistemas e Informática, y esta se orienta a la revisión del Diseño de los Planes, Diseños de los Sistemas, la demostración de su eficacia, la Supervisión compulsa de rendimientos,
Productividad de la Gestión - Demanda llamada "Pruebas intermedias", el análisis de resultados, niveles y medios de seguridad, respaldo, y el almacenamiento. Así mismo medición de la vida útil del Sistema Informático adoptado por la Organización bajo control.

5.1.2 Configuracion de Sod


En este caso se configurara el sistema operativo LINUX. Primero debemos identificarnos en el sistema (si elegimos en la instalación que entrara automáticamente no será necesario). Para configurar el sistema necesitaremos una conexión a internet, así que lo primero que debes hacer es establecerla. Bien, entraremos en el menú Sistema, después vamos a Administración, y luego Soporte de idiomas. Ahora pulsaremos en el botón "Instalar/eliminar idiomas...". Se nos abrirá una ventana, donde debemos marcar nuestro idioma nativo (Castellano, español, inglés, etc.) y desmarcar los demás. Cuando terminemos pulsamos en aplicar y llevará a cabo ciertas acciones. Nos pedirá la contraseña de usuario. Se la damos y listo.




Administración y luego Orígenes del Software. Si nos pide la contraseña se la introducimos. Aquí configuraremos dos pestañas: Software de Ubuntu, y actualizaciones. Si disponemos de una conexión a internet permanente desmarcaremos los CD-ROM de Ubuntu (abajo) y marcaremos las 4 primeras casillas. En el servidor de descarga debe elegir, o bien el de nuestro país (España en mi caso) o bien el servidor principal, que también suele ir rápido. En la parte de actualizaciones marcaremos las dos primeras casillas (security y updates). La tercera queda a vuestra elección, aunque mi experiencia personal es que no es muy inestable.


También marcaremos la casilla de comprobar actualizaciones diariamente. Con esto ya tendremos configurados los repositorios. Ahora pasaremos a instalar el driver de la tarjeta gráfica. Si nuestra tarjeta gráfica es nVidia o ATI, el propio sistema nos mostrará un icono en la bandeja del sistema (parte superior derecha) informándonos de que existen controladores para instalar. Si queremos instalarlos, debemos ir al menú Sistema, Administración y luego Controladores de Hardware. Allí marcaremos el driver para instalarlo. Ahora pasaremos a instalar el driver de la tarjeta gráfica. Si nuestra tarjeta gráfica es nVidia o ATI, el propio sistema nos mostrará un icono en la bandeja del sistema (parte superior derecha) informándonos de que existen controladores para instalar. Si queremos instalarlos, debemos ir al menú Sistema, Administración y luego Controladores de Hardware. Allí marcaremos el driver para instalarlo.

5.1.1 Instalacion de Sistemas Operativos Distribuidos


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.1 Administracion 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.

UNIDAD 5 USOS Y TENDENCIAS DE LOS SISTEMAS DISTRIBUIDOS

4.3.1 Diseño Replica Granularidad Consistencia, propietario y copias.


Razones para la Replicación  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.


Los modelos de consistencia se presentan divididos en dos conjuntos:

*      Modelos de consistencia centrados en los datos.

*      Modelos de consistencia centrados en el cliente.
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.
En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulación de la info. Y repartida a través de la red, estos objetos serán definidos por el Programador y las CPU´s cambiaran los estados según procedan con los accesos. MCD Basada en Variables Compartidas.
ANEXOS
SETI: Consiste en que cada usuario  se conecte y compartan recursos.
·         Mcd basados en páginas: segmenta el proceso en página y cada página tiene un tamaño definido.
·         Mcd basados en objetos: es de tamaño variable y es más lento.
·         Mcd basados en variables: es un proceso al cual se le asigna una variable como su nombre lo indica. Esto lo hace el programador del sistema o el propio sistema.

AMOEBA
El sistema operativo Amoeba se originó en la universidad Vrije Universiteit, de Holanda en 1981, como un proyecto de investigación del cómputo distribuido y paralelo.
Éste sistema operativo esta basado en el modelo cliente servidor en el cual los clientes ( procesos de usuario) realizan llamadas a los servidores para que les proporcionen lo pedido. Estos servidores son utilizados para gestionas los objetos ya que en Amoeba todo esta considerado como un objeto que tiene predefinido una serie de operaciones que se realizan sobre él. Se trata como objeto a los procesos, las CPU's, los archivos, los directorios, los discos, etc. y por tanto existen servidores que se encargan de gestionar todo esto.
Existen varios modos de comunicación en Amoeba y por cada uno de ellos existe un servidor que se encarga de gestionarlos.
La primera de ellas es la llamadas a procedimiento remoto RPC. Para realizar este tipo de comunicación el servidor de RPC utiliza tres llamadas principalmente que son GET_REQUEST, PUT_REPLY y TRANS que permite la comunicación entre clientes y servidores.
La segunda forma de comunicación en Amoeba es la comunicación en grupo y las llamadas que proporciona para este tipo de comunicación nos permiten crear nuevos grupos, unir procesos a grupos existentes, enviar información a grupos y una serie tareas más para gestionar esta comunicación.
Con todo esto se observa que el sistema Operativo Amoeba es un sistema compartido ideal donde cada usuario del sistema cree que está ejecutando el sistema en modo exclusivo pero en realidad no sabe donde se están ejecutando sus procesos y donde está guardando sus archivos. Es por esto que uno de los bloque más potentes de llamadas al sistema sea el de la comunicación.

MINIX
Este sistema operativo fue escrito por A. S. Tanenbaun para ser estudiado en universidades y a modo personal. El autor lo escribió como una copia exacta de UNIX en su versión 7, ya que a partir de esta versión el código de UNIX ya no era de manejo público. Es sistema operativo esta escrito íntegramente en C y se puede ejecutar en Pc's compatibles sin necesidad de disco duro. Al ser una copia de UNIX posee todas sus características como la capacidad de soportar multiusuario, multitarea, etc.
Al ser copia de UNIX las llamadas al sistema de minix cumplen con el Standard Posixx. En concreto minix posee un total de 41 llamadas al sistema para ser utilizadas por lo programadores. Este conjunto de llamadas se pueden dividir en dos grandes grupos: Las llamadas al sistema para la gestión de procesos y Las llamadas al sistema para la gestión de ficheros. Estos dos grupos de llamadas son los más importantes ya que en minix al igual que en UNIX todo el sistema se basa en procesos y ficheros.
Existen tres grupos más de llamadas al sistema que se encargan de la gestión de directorios, protección y gestión de tiempo.
El primero de ellos nos permite entre otras cosas establecer vínculos entre ficheros de esta forma un fichero se encuentra en un directorio y puede ser compartido por los usuarios teniéndolo en sus directorios con nombres distintos.
El segundo grupo encargado de la protección nos permite realizar operaciones sobre los permisos de los ficheros y directorios y por ultimo el tercer grupo en el que cabe destacar la llamada TIMES que devuelve información sobre el tiempo de procesador empleado por un proceso.
En relación a los objetivos principales del sistema operativo minix, los cuales eran ser un mini-unix, para ser estudiado en las universidades, observamos que el conjunto de llamadas al sistema que realiza es muy completo ya que permite, al igual que UNIX, multiusuario y multitarea con el conjunto de llamadas que realiza para gestionar los procesos y ficheros.

LINUX
El sistema operativo Linux nace en la Universidad de Helsinki, en Finlandia de las manos de Linux Trovalds que contaba con la ayuda de muchos colaboradores expertos en Unix. Este sistema operativo en un principio sólo fue un proyecto de aficionado de Linux Trovalds pero en la actualidad se ha convertido en uno de los sistemas operativos mejor diseñados del mundo.
Éste es un sistema de libre distribución donde cualquier persona puede participar en la escritura del código. Esto lo hace todavía más interesante porque todos los fuentes del sistema se pueden consultar y ver.
Linux es un sistema operativo completo multitarea u multiusuario como cualquier sistema Unix. Linux es compatible con ciertos estándares como IEE, POSIX.1, System V y BSD.

4.3 Mcd en base a Páginas.

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.

4.2.1 Estricta Causal Secuencial Débil, de liberación y de entrada.


onsistencia Estricta 
El modelo de consistencia más restrictivo es llamado consistencia estricta y es definido por la siguiente condición Cualquier lectura sobre un item de dato x retorna un valor correspondiente con la más reciente escritura sobre x 
Consistencia Causal

es un debilitamiento de la consistencia secuencial. Se hace una diferenciación entre eventos que están potencialmente relacionados en forma causal y aquellos que no. Las operaciones que no están causalmente relacionadas se dicen concurrentes. 

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. 
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.
Consistencia liberación (Reléase)
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.

4.2 Modelos de Consistencia.

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 con cada escritura es necesario actualizar todas las copias, el envío de las páginas por la red provoca que el tiempo de espera aumente demasiado, convirtiendo este método en impracticable. Para solucionar este problema se proponen diferentes modelos de consistencia, que establezcan. 


Nombramos algunos modelos de consistencia, del más fuerte al más débil: consistencia estricta, secuencial, causal, PRAM, del procesador, débil, de liberación y de entrada.

4.1.1 De Circuitos Basados en Bus, anillo o con conmutador.


Arquitecturas de MCD 
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. 
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 
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. 

4.1 Configuraciones 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.

4 Memoria Compartida Distribuida.

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. 

UNIDAD 4 MEMORIA COMPARTIDA DISTRIBUIDA (MCD).

3.6 SISTEMAS DISTRIBUIDOS EN TIEMPO REAL


Los sistemas operativos en tiempo real o RTOS (Real-Time Operating System), son sistemas los cuales manejan sucesos o eventos de gran importancia, por lo que deben cumplir con sus tareas bajo ciertas restricciones.
El Objetivo principal de estos sistemas es proporcionar minimizar los tiempos de respuesta de cada petición o tarea por medio de algoritmos de  planificación, los cuales definen que tareas deben ejecutarse en cada momento.

No utiliza mucha memoria
Cualquier evento en el soporte físico puede hacer que se ejecute una tarea
Multi-arquitectura (código portado a cualquier tipo de CPU)
Muchos tienen enfermedades predecibles para eventos electrónicos

Compuesta por un conjunto de nodos conectados por redes de comunicación.
Cada nodo puede ser un multiprocesador conectado por buses.
Sólo consideraremos sistemas débilmente acoplados.
Es frecuente que estos sistemas tengan gran complejidad.
Se suelen estructurar jerárquicamente, para tratar con:

Plazos de respuesta de diversas escalas.
Tipo de información.
Requisitos de procesador
Este tipo de sistemas operativos no es necesariamente eficiente en el sentido de tener una capacidad de procesamiento alta. El algoritmo de programación especializado, y a veces una tasa de interrupción del reloj alta pueden interferir en la capacidad de procesamiento.

3.5 COPLANIFICACION


TOMA EN CUENTA LOS PATRONES DE COMUNICACION ENTRE LOS PROCESOS DURANTE LA PLANIFICACION.
DEBE GARANTIZAR QUE TODOS LOS MIEMBROS DEL GRUPO SE EJECUTEN AL MISMO TIEMPO.

SE EMPLEA UNA MATRIZ CONCEPTUAL DONDE:
LAS FILAS SON ESPACIOS DE TIEMPO.
LAS COLUMNAS SON LAS TABLAS DE PROCESOS DE LOS PROCESADORES.

CADA PROCESADOR DEBE UTILIZAR UN ALGORITMO DE PLANIFICACION.

Tolerancia de Fallas
Los sistemas de computo pueden fallar debido a una falla en algún componente, como procesador, la memoria, un dispositivo de E/S un cable o el software.
Una falla es un desperfecto, causado tal vez por un error de diseño, un error de fabricación, un error de programación, un daño físico, el deterioro con el curso del tiempo, condiciones ambientales adversas, entradas inesperadas, un error del operador, roedores comiendo parte de sistema, etc.

3.4 ASIGNACION DE PROCESOS


Hay 3 cuestiones:
Un proceso puede pasar de información a otro
Hacer que 2 o mas procesos no se interpongan entre si
Obtener la secuencia apropiada cuando hay dependencias presentes

Exclucion mutua
Es una forma de asegurar que si un proceso esta usando una variable o archivo compartido se excluiran de hacer lo mismo.

REGION O SECCION CRITICA
Un proceso esta ocupado realizando cálculos internos y otras cosas que no producen condiciones de carrera; algunas veces un proceso tiene que acceder a la memoria compartida o a archivos compartidos, o hacer otras cosas criticas que pueden producir carreras. Es la parte del programa en el que se accede a la memoria compartida

CONDICIONES:
No puede haber 2 procesos de manera simultanea dentro de sus regiones criticas
1) No puede haber dos procesos de manera simultanea dentro del sus regiones criticas
2) No puede hacerse suposiciones acerca de las velocidades o el numero de cpu`s
3)Ningùn procesos que se ejecute fuera de su región critica puede bloquear otros procesos
4)Nungun proceso tiene que esperar para siempre para entrara a su región critica

3.3.2 MODELOS DE PLIAS 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.

El principal argumento para la centralización del poder de cómputo como una pila de procesadores proviene de la teoría de colas:
Llamamos “l” a la tasa de entradas totales de solicitudes por segundo de todos los usuarios combinados.

Llamamos “m” a la tasa de procesamiento de solicitudes por parte del servidor.
Para una operación estable debe darse que “m > l”:

3.3.3 HIBRIDO
Se puede establecer una mediación al proporcionar cada usuario una estación de trabajo personal y además tener una pila de procesadores. Aunque esta solución es mas cara que cualquiera de los modelos puros, combina las ventajas de ambos.

El trabajo interactivo se puede llevar acabo en las estaciones de trabajo con una respuesta garantizada. Sin embargo las estaciones iniciativas no se utilizan, lo cual hace mas sencillo el diseño del sistema. Solo se dejan sin utilizar. En vez de esto, todos los procesos no interactivos se ejecutan en la pila de procesadores, asi como todo el computo pesado en general. Este modelo proporciona una respuesta interactiva mas rápida, un uso eficiente de los recursos y un diseño sencillo.

3.3.1MODELO 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.

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.

Disco para paginación, archivos de tipo borrador y archivos binarios (ejecutables):
Reduce aún más la carga sobre la red.
Alto costo y complejidad adicional para actualizar los binarios.

Disco para paginación, borrador, binarios y ocultamiento de archivos:
Reduce aún más la carga de red y de los servidores de archivos.
Alto costo.
Problemas de consistencia del caché.

Sistema local de archivos completo:
Escasa carga en la red.
Elimina la necesidad de los servidores de archivos.
Pérdida de transparencia.

3.3 MODELOS DE PROCESADORES


8086 y 8088 (de 1978 a 1982)
*Son los primeros procesadores utilizados en PC.
Carecían de instrucciones de coma flotante, pero para implementar estas se podían complementar con el coprocesador matemático 8087, que era el más utilizado, aunque no el único.
i386SX –  Procesador de 32bits, pero externamente se comunicaba a 16bits, lo que hacía que fuera a la mitad de la velocidad de un 80386 normal.

i386SX Now - Versión del 80386SX,  compatible pin a pin con los procesadores 80286, desarrollado por Intel para poder actualizar los 80286 sin necesidad de cambiar de placa base.

Pentium (de 1993 a 1997)
Los primeros Pentium tenían una frecuencia de entre 60Mhz, 66Mhz, 75Mhz y 133Mhz, y a pesar de las mejoras en su estructura, entre las que destaca su arquitectura escalable, no llegaban a superar a los i486 de Intel que en ese momento había en el mercado, y mucho menos a los Cyrix y Am486 DX4.

Pentium Pro (de 1995 hasta 1998)
El Pentium PRO no fue diseñado como sustituto de ningún procesador, sino como un procesador para ordenadores de altas prestaciones destinados a estaciones de trabajo y servidores.

3.2HILOS Y MULTI HILOS


Sincronización de hilos
Todos 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. Por lo tanto, es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de datos.

Formas de multihilos
Los sistemas operativos generalmente 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.

Procesamiento asíncrono
Los elementos asíncronos de un programa se pueden implementar como hilos. Un ejemplo es como los softwares de procesamiento de texto guardan archivos temporales cuando se está trabajando en dicho programa. Se crea un hilo que tiene como función guardar una copia de respaldo mientras se continúa con la operación de escritura por el usuario sin interferir en la misma.

Aceleración de la ejecución
Se pueden ejecutar, por ejemplo, un lote mientras otro hilo lee el lote siguiente de un dispositivo.
Implementaciones
Hay dos grandes categorías en la implementación de hilos:
Hilos a nivel de usuario
Hilos a nivel de Kernel

3.1 PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS


Un hilo de ejecución, en sistemas operativos, es una característica que permite a una aplicación realizar varias tareas concurrentemente. Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente. 

Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos.



Cuando un hilo modifica un dato en la memoria, los otros hilos acceden e ese dato modificado
inmediatamente.
Un ejemplo de la utilización de hilos es tener un hilo atento a la interfaz gráfica (iconos, botones, ventanas), mientras otro hilo hace una larga operación internamente. De esta manera el programa responde de manera más ágil a la interacción con el usuario. También pueden ser utilizados por una aplicación servidora para dar servicio a múltiples clientes.

3.Procesos y procesadores en sistemas distribuidos.

2.3.7 Modelo de Terry.


El problema principal de cualquier sistema de nombre reside en encontrar de manera fácil, sencilla y rápida cualquier recurso a través del identificador (nombre) dado.

Para solucionar este problema, Terry y otros propusieron un modelo de facilidades que debe de poseer todo sistema de nombres, dichas características son las siguientes:
Facilidad centralizada de nombramiento
Facilidad replegada de nombramiento
Facilidad descentralizada de nombramiento
Facilidad distribuida de nombramiento
Facilidad jerárquica de nombramiento.

A continuación se muestra el caso de ejemplo de un sistema de nombres: el DNS
Los nombres deben ser únicos y mantener una nomenclatura estándar.

En el sistema DNS se utiliza dominios raiz (.com, .net, .org, etc.) y dominios locales (.mx, .it, .cl, etc.) Esto forma una jerarquía de dominios y subdominios.

Los recursos pueden ser movibles, por lo que el servicio de nombres debe actualizarse