# data[].attributes.body
✓ Unidad: III.
✓ Tema: Procesos y procesadores en sistemas distribuidos.

3.2. Hilos y multihilos

Los hilos son como mini procesos:

• Cada hilo:

o Se ejecuta en forma estrictamente secuencial.

o Tiene su propio contador de programa y una pila para llevar un registro de su posición.

• Los hilos comparten la CPU de la misma forma que lo hacen los procesos:

o Secuencialmente, en tiempo compartido.

• Solo en un multiprocesador se pueden ejecutar realmente en paralelo.

• Los hilos pueden crear hilos hijos.

• Mientras un hilo está bloqueado se puede ejecutar otro hilo del mismo proceso.

Uso de Hilos

Los hilos permiten la combinación del paralelismo con la ejecución secuencial y el bloqueo de las llamadas al sistema.

modelo servidor / trabajador:

• Un hilo, el servidor, lee las solicitudes de trabajo en el buzón del sistema.

• Elige a un hilo trabajador inactivo (bloqueado) y le envía la solicitud, despertándolo.

• El hilo trabajador verifica si puede satisfacer la solicitud por medio del bloque caché compartido, al que tienen acceso todos los hilos.

• Si no envía un mensaje al disco para obtener el bloque necesario y se duerme esperando el fin de la operación.

modelo es el de equipo:

• Todos los hilos son iguales y cada uno obtiene y procesa sus propias solicitudes.

• No hay servidor.

• Se utiliza una cola de trabajo que contiene todos los trabajos pendientes, que son trabajos que los hilos no han podido manejar.

• Un hilo debe verificar primero la cola de trabajo antes de buscar en el buzón del sistema.

Un tercer modelo es el de entubamiento:

• El primer hilo genera ciertos datos y los transfiere al siguiente para su procesamiento.

• Los datos pasan de hilo en hilo y en cada etapa se lleva a cabo cierto procesamiento.

• Un programa diseñado adecuadamente y que utilice hilos debe funcionar bien.

Aspectos del Diseño de un Paquete de Hilos

En un diseño estático:

• Se elige el número de hilos al escribir el programa o durante su compilación.

• Cada uno de ellos tiene asociada una pila fija.

• Se logra simplicidad pero también inflexibilidad.

En un diseño dinámico:

• Se permite la creación y destrucción de los hilos durante la ejecución.

Implantación de un Paquete de Hilos

Implantación del paquete de hilos en el espacio del usuario:

• El núcleo no sabe de su existencia.

• El núcleo maneja procesos con un único hilo.

• No requiere soporte de hilos por parte del S. O.

Implantación del paquete de hilos en el espacio del núcleo:

• No se necesita un sistema de tiempo de ejecución.

• Para cada proceso el núcleo tiene una tabla con una entrada por cada hilo que contiene.

• Todas las llamadas que pueden bloquear un hilo se implantan como llamadas al sistema.

• Cuando un hilo se bloquea, el núcleo puede ejecutar.

Un problema fundamental de los paquetes de hilos a nivel usuario es el de las llamadas al sistema con bloqueo.

• No se puede permitir que el hilo realmente realice la llamada al sistema.

• Una solución es agregar código junto a la llamada al sistema para verificar si la misma no generaría bloqueo.

Otro problema de los paquetes de hilos a nivel usuario es que si un hilo comienza su ejecución no puede ejecutarse ningún otro hilo de ese proceso, salvo que el hilo entregue voluntariamente la CPU.

Un problema adicional para los hilos a nivel usuario es que generalmente los programadores desean los hilos en aplicaciones donde los hilos se bloquean a menudo.

Hilos y RPC

 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

Modelos de Sistemas

• Modelo de estación de trabajo.
• Modelo de la pila de procesadores.
• Modelo híbrido.

3.3.1. De estación de trabajo

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

Uso de Estaciones de Trabajo Inactivas

La idea consiste en ordenar remotamente la ejecución de procesos en estaciones de trabajo inactivas.

Condiciones de estación de trabajo inactivas

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

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

Algoritmos para localizar las estaciones de trabajo

• Controlados por el servidor.
• Controlados por el cliente.

3.3.2. De pila de procesadores

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

3.3.3. Híbrido

Los sistemas híbridos combinan una variedad de buses de instrumentación y plataformas en un sistema.

Características de los Sistemas Híbridos

❖ Combina las mejores características del modelo de estación de trabajo y de pila de procesadores teniendo un mejor desempeño en las búsquedas y mejor uso de los recursos.

❖ Aumento en flexibilidad, los sistemas híbridos proporcionan una longevidad mayor para el sistema de pruebas con la habilidad para usar hardware y software existente, y aún así, incorporar nuevas tecnologías con mayor desempeño y menor costo.

# data[].attributes.body
✓ Unidad: III.
✓ Tema: Procesos y procesadores en sistemas distribuidos (Continuación).

3.4.1. Modelos y algoritmos con sus aspectos de diseño e implantación

Modelos de Asignación

Estrategias de asignación de procesadores

No migratorias:

o Una vez colocado un proceso en una máquina permanece ahí hasta que termina.

• Migratorias:

o Un proceso se puede trasladar, aunque haya iniciado su ejecución.

o Permiten un mejor balance de la carga, pero son más complejas.

Los algoritmos de asignación intentan optimizar algo:

• Uso de las CPU.
• Tiempo promedio de respuesta.
• Tasa de respuesta.

Aspectos del Diseño de Algoritmos de Asignación de Procesadores

• Algoritmos deterministas vs. heurísticos.
• Algoritmos óptimos vs. subóptimos.
• Algoritmos locales vs. globales.
• Algoritmos iniciados por el emisor vs. iniciados por el receptor.

Los algoritmos deterministas son adecuados cuando se sabe anticipadamente todo acerca del comportamiento de los procesos.

Los algoritmos heurísticos son adecuados cuando la carga es impredecible.

Los diseños centralizados permiten reunir toda la información en un lugar y tomar una mejor decisión.

Aspectos de la Implantación de Algoritmos de Asignación de Procesadores

• La medición de la carga no es tan sencilla.

•Un método consiste en contar el número de procesos (hay que considerar los procesos latentes no activos).

• Otro método consiste en contar sólo los procesos en ejecución o listos.

• También se puede medir la fracción de tiempo que la CPU está ocupada.

Otro aspecto importante es el costo excesivo en consumo de recursos para recolectar medidas y desplazar procesos.

Ejemplos de Algoritmos de Asignación de Procesadores

• Un Algoritmo Determinista Según la Teoría de Gráficas

•Requerimientos de CPU y de memoria de los procesos.

• Tráfico promedio entre cada par de procesos.

• Cada nodo es un proceso.

• Cada arco es el flujo de mensajes entre dos procesos.

• Cada subgráfica es una unidad de asignación.

• Un Algoritmo Centralizado

Es un algoritmo heurístico que a diferencia del anterior no precisa información anticipadamente.

• Contiene una entrada por estación de trabajo inicializada en “0”.

• Cuando ocurren eventos significativos se envían al coordinador mensajes para actualizar la tabla.

• No se intenta maximizar el uso de la CPU.

• Se procura otorgar a cada usuario una parte justa del poder de cómputo.

• Un Algoritmo Jerárquico

El algoritmo anterior no se adapta bien a los sistemas de gran tamaño, pues el nodo central se convierte en un cuello de botella y en un único punto de fallo.

• Un Algoritmo Distribuido Heurístico

Al crearse un proceso:

• La máquina donde se origina envía mensajes de prueba a una máquina elegida al azar; pregunta si su carga está por debajo de cierto valor de referencia.

• Si la respuesta es positiva el proceso se envía a ese lugar.

• Si no, se elige otra máquina para la prueba.

• Luego de “n” pruebas negativas el algoritmo termina y el proceso se ejecuta en la máquina de origen.

• Un Algoritmo de Remates

Utiliza un modelo económico con:

• Compradores y vendedores de servicios.

• Precios establecidos por la oferta y la demanda.

3.5. Coplanificación

Planificación en Sistemas Distribuidos
Generalmente cada procesador hace su planificación local (si tiene varios procesos en ejecución) independientemente de lo que hacen los otros procesadores.

3.6. Tolerancia a fallos

La tolerancia a fallos es un aspecto crítico para aplicaciones a gran escala, ya que aquellas simulaciones que pueden tardar del orden de varios días o semanas para ofrecer resultados deben tener la posibilidad de manejar cierto tipo de fallos del sistema o de alguna tarea de la aplicación.

3.7. Sistemas distribuidos de tiempo real

Un sistema distribuido está formado por un conjunto de computadores autónomos conectados para conseguir un objetivo común.

Ventajas:

✓ rendimiento
✓ fiabilidad
✓ cercanía a los elementos del entorno físico
✓ flexibilidad.

Características:

1. Se activan por evento o por tiempo.
2. Su comportamiento debe ser predecible.
3. Debe ser tolerante a fallas.
4. La comunicación en los sistemas distribuidos de tiempo real debe de ser de alto desempeño.

Clasificación:

Sistema de tiempo real suave.
Sistema de tiempo real duro.

# data[].attributes.body
✓ Asignatura: Sistemas Operativos II.
✓ Unidad: IV.

4.1. Configuraciones de MCD:

Ventajas:

• La escalabilidad.

Desventajas:

• El acceso remoto a memoria es lento.
• La programación puede ser complicada.

4.1. Configuraciones de MCD:

Computación paralela:
Un computador paralelo es un conjunto de procesadores capaces de cooperar en la solución de un problema.

¿Por qué utilizar computación paralela?

• Reducir el tiempo de procesamiento.

• Resolver problemas de gran envergadura.

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

4.1.1. De circuitos, basados en bus, anillo o conmutador

Arquitecturas de MCD

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: Varias 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.2. Modelos de consistencia

Es esencialmente en contrato entre procesos y el almacenamiento de datos.

4.2.1. Estricta, causal, secuencial, débil, de liberación y de entrada.

Consistencia Estricta

Cualquier lectura sobre un ítem de dato x retorna un valor correspondiente con la más reciente escritura sobre x.

Consistencia Causal

Se hace una diferenciación entre eventos que están potencialmente relacionados en forma causal y aquellos que no.

Consistencia Débil

Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.

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.

4.3. MCD en base a páginas

El Modelo basado en páginas segmenta el proceso en página y cada página tiene un tamaño definido.

4.3.1. Diseño réplica, granularidad, consistencia, propietario y copias

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.

4.4. MCD en base a variables

MCD en base a 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.

4.5. MCD en base a objetos

En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulación de la info.

# data[].attributes.body
✓ Asignatura: Sistemas Operativos II.
✓ Unidad: V.

5.1. Estándares de administración en sistemas distribuidos

Los estándares son aquellas normas usuales, los propósitos, los objetivos, a alcanzar, las metas a alcanzar y aquellos índices que integran los planes, y todo dato o cifra que pueda emplearse como medida para cumplirlas.

CORBA: Es el estándar para la creación de sistemas distribuidos creado por el Object Management Group (OMG).

Características de CORBA: Permite una total libertad a los implementadores siempre que estos respeten unos mínimos orientados a la interoperabilidad entre implementaciones.

Ventajas

1) Disponibilidad y Versatilidad
2) Eficiencia
3) Adaptación a Lenguajes de programación

5.2. Tendencias de investigación

Una tendencia reciente en los sistemas de computador es distribuir el cómputo entre varios procesadores.

Razones para construir sistemas distribuidos

Recursos compartidos
Computación más rápida
Confiabilidad
Comunicación

Tendencias para la explotación y administración de sistemas de información que se están implantando actualmente

• Nuevos requerimientos a los sistemas informáticos

• Extensión completa a las intranets y extranets

• Criticidad de servicios considerados de baja prioridad

• Incremento de los servicios sensibles a la seguridad

• Crecimiento de los servicios móviles y ubicuos

• Sistemas de procesamiento y almacenamiento en red

• Crecimiento de las herramientas y soluciones de gestión de aplicaciones

• Utilización de la gestión basada en web

• Gestión y administración de los flujos de trabajo (workflow)

• Plataformas de integración corporativa de la gestión (frameworks)

5.3. Sistemas distribuidos y la sociedad

Algunas de estas son las siguientes aplicaciones

Aplicaciones comerciales: generalmente se llevan a cabo procesos administrativos, registros, bitácoras, nominas, etc.

Aplicaciones de red de área extensa: Se concreta al intercambio de información a trevés de la red: correo electrónico, servicio de transferencia de ficheros (ftp), servicios de noticias, búsqueda de ficheros, servicio de consulta textual y por supuesto Word Wide Web (www).

Aplicaciones Multimedia: son la más difíciles de instrumentar ya que imponen necesidades de hardware sobre todo en velocidad y transmisión controlada de datos.

Áreas de la informática: orientadas al diseño de sistemas operativos, comunicación (hardware y software), base de datos distribuidos, servidores de ficheros y lenguaje de programación distribuida.