158
Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas [email protected] http://antares.itmorelia.edu.mx/~jc olivar Julio, 2009

Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas [email protected] jcolivar

Embed Size (px)

Citation preview

Page 1: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesos y Procesadores en Sistemas Distribuidos

M.C. Juan Carlos Olivares Rojas

[email protected]://antares.itmorelia.edu.mx/~jcolivar

Julio, 2009

Page 2: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Agenda• 3.1 Procesos y procesadores conceptos

básicos.

• 3.2 Hilos y multihilos. • 3.3 Modelos de procesadores. • 3.4 Asignación de procesadores. • 3.5 Coplanificación. • 3.6 Tolerancia a fallos. • 3.7 Sistemas distribuidos de tiempo real.

Page 3: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesos• Un proceso es un programa en ejecución.

• Todos los procesos tienen asociados un espacio de direcciones en memoria, registros y el contador de programas.

• Un programa para poderse ejecutar necesita estar en memoria principal.

• Los procesos son dependientes del sistema operativo.

Page 4: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesos• El espacio de direcciones se compone

además de direcciones para almacenar datos, código, la pila y el heap (montículo).

• Toda la información de los procesos en los SOs se guardan el PCB (Process Control Block) que es un arreglo o lista ligada que indica la descripción de cada uno de los procesos.

Page 5: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesos• Los procesos tienen asignados un

identificador de procesos (PID), el cual es la forma en que el SO trabaja con los procesos.

• La finalidad del administrador de procesos es realizar una buena administración (planificación) del tiempo de CPU.

• Los procesos presentan tres estados básicos: Ejecución, Listo y Bloqueado.

Page 6: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Ejecución de un Proceso

Page 7: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Lista de Procesos

Page 8: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesos• Un proceso está en ejecución cuando

tiene acceso real al tiempo de CPU.

• Un proceso está listo cuando se puede ejecutar, es decir, por algún motivo se suspendió para dejar ejecutar otro proceso

• Un proceso está bloqueado cuando está en espera de algún recurso (E/S) o de que ocurra un evento.

Page 9: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesos

Page 10: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesos• Estos procesos pueden trabajar de

manera cooperativa para la resolución de un problema muy particular. Para ello necesitan comunicarse entre sí y a lo que a nivel de SO se llama IPC (Inter Process Communication).

• La parte más importante de la comunicación entre procesos es sin duda la transferencia de mensajes entre los diversos procesos.

Page 11: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

IPC• La transferencia de mensajes puede

llevarse acabo en base a dos primitivas, enviar y recibir, que se pueden aplicar a casi cualquier recurso como a los archivos (leer y escribir).

• La comunicación entre procesos IPC se debe dar a través del kernel del Sistema Operativo.

Page 12: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesador• Un procesador o mejor conocido como

microprocesador es la unidad de hardware que se encarga de procesar los datos que están almacenados en una computadora para producir cualquier tipo de información de interés para los usuarios.

• Un microprocesador se compone de una Unidad Lógica-Aritmética (ALU) que se encarga de las operaciones básicas dadas a través de microprogramación.

Page 13: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesador• También se compone de una unidad de

control encargada de la sincronización de todas las operaciones y de áreas de almacenamiento principal llamadas registros y memoria caché.

• La problemática principal es que existe una confusión muy amplia entre lo que es un sistema distribuido, un sistema multiprocesamiento, un sistema paralelo, etc.

Page 14: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Clasificación de SD• Una de las clasificaciones más aceptadas

es la de Flynn, la cual se basa en dos características esenciales: el número de flujos de instrucciones y el número de flujo de datos. La clasificación es la siguiente:

• Una computadora con un sólo flujo de instrucciones y un flujo de datos (SISD, Single Instruction Single Data). Computadoras con monoprocesador.

Page 15: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Clasificación de SD• Computadoras con un flujo de

instrucciones y varios flujos de datos (SIMD, Single Instruction Multiple Data). Procesadores vectoriales.

• Computadoras con múltiples flujos de instrucciones y varios flujos de datos (MIMD, Multiple Instruction Multiple Data). Concepto de SD (no implementada como tal)

Page 16: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Clasificación SD• Los sistemas MIMD se subdividen en dos

grupos:

• Máquinas multiprocesadores. Existe un espacio de direcciones virtuales, compartido por todos los CPU del sistema.

• Sistemas multicomputadoras. Cada máquina tiene su propia memoria en particular.

Page 17: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Clasificación SD• Las categorías anteriores puede

clasificarse de acuerdo a la red de comunicación con la que se interconectan los CPU, en las siguientes categorías:

• Tecnología de bus• La tecnología de conmutador

Page 18: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Otras clasificaciones de SD• En todos los sistemas de equipo de

cómputo, algunas máquinas están fuertemente acopladas, mientras que otras están débilmente acopladas.

• A continuación se muestran cuatro categorías de sistemas de cómputo, en base al acoplamiento y tipo de conexión.

Page 19: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Otras clasificaciones de SD• Multiprocesadores con base en buses.

• Multiprocesadores con conmutador.

• Multicomputadoras con base en buses.

• Multicomputadoras con conmutador.

Page 20: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Otras clasificaciones de SD• En base al acoplamiento del software con

el hardware los SD se dividen en:• Software débilmente acoplado en

hardware débilmente acoplado. LAN • Software fuertemente acoplado en

hardware débilmente acoplado (multicomputadoras). SD

• Software fuertemente acoplado en hardware fuertemente acoplado. Sistemas Tiempo Compartido y Servidores Dedicados.

Page 21: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Cómputo Distribuido• La distribución del cómputo puede

realizarse de diversas formas de acuerdo a su grado de acoplamiento en: – Fuertemente acopladas: Multiprocesadores

(memoria compartida). UMA (Uniform Memory Acces)

– Débilmente acopladas: Multicomputadoras (memoria privada). NUMA (Non Uniform Memory Access)

Page 22: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas multiprocesadores• Son sistemas que tienen dos o más

procesadores (CPU), comparten las misma memoria (espacio de direcciones).

• Los sistemas multinúcleos es la nueva tendencia en el desarrollo de sistemas multiprocesadores. En un solo chip se tienen varios procesadores (no es nada nuevo bajo el sol).

Page 23: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tarjeta madre

Tarjeta madre

Sistemas multiprocesadores

CPU 1 CPU nCPU 2

Memoria

Modelo de n procesadores

CPU

N1 Nn

Memoria

Modelo de n núcleos

Page 24: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas multicomputadoras• Son sistemas donde cada unidad de

proceso es autónoma e independiente de las demás pero trabajan de manera conjunta.

• La interconexión de unidades de proceso se hace a través de redes de computadora de preferencia de altas velocidades.

• Este es el concepto más estandarizado de un SD.

Page 25: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Agenda• 3.1 Procesos y procesadores conceptos

básicos.

• 3.2 Hilos y multihilos. • 3.3 Modelos de procesadores. • 3.4 Asignación de procesadores. • 3.5 Coplanificación. • 3.6 Tolerancia a fallos. • 3.7 Sistemas distribuidos de tiempo real.

Page 26: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Concurrencia• El término concurrencia indica que se

tienen dos o más procesos al mismo tiempo en el mismo lugar; esto no implica que se estén ejecutando al mismo tiempo (paralelismo).

• El término concurrencia se ha utilizado para indicar que se ejecutan dos o más actividades quasi-paralelamente. En sistemas monoprocesadores esto se logra a través de esquemas de multitarea real y cooperativa.

Page 27: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

“Granularidad” del paralelismo• Cuando queremos explotar el

paralelismo, podemos hacerlo en niveles de detalle distintos:– Instrucciones de máquina– Sentencias de un lenguaje de programación– Módulos dentro de un programa– Programas ejecutables completos

• Grano fino grano grueso

Page 28: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

28

“Granularidad” del paralelismo• El programador debe saber con qué “grano” debe

trabajar ante cada problema y no trabajar en niveles de detalle inferior.

• Ej. si trabajamos con Ada o Java, estamos en el nivel de “módulos”:– Concurrencia basada en hilos (threads)– no deberíamos perder el tiempo buscando sentencias

simples que se pueden ejecutar en paralelo crear un hilo nuevo para ejecutar una única instrucción no hace ganar tiempo, incluso puede tardar más.

Page 29: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

29

¿Dónde se encuentra la concurrencia?

• En el hardware (la herramienta para construir sistemas informáticos):– ejecución paralela de instrucciones– funcionamiento paralelo de los periféricos– procesadores múltiples– sistemas distribuidos

• En la Naturaleza (los sistemas que modelamos cuando hacemos ingeniería de software)– ¿ejemplos?

Page 30: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

30

Concurrencia inherente o potencial

• Concurrencia inherente:– Hay sistemas que en los que forzosamente se

dan actividades simultáneas.– p.ej. GUI; red de cajeros automáticos; etc.

• Concurrencia potencial:– Hay sistemas o problemas que se pueden

resolver de forma secuencial, pero en los que se puede aprovechar la concurrencia p.ej. para aumentar el rendimiento.

– P.ej. multiplicar dos matrices, ordenar un vector…

Page 31: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Concurrencia Unix• Los subprocesos se crean con fork()

#include <sys/types.h>pid_t pid; pid = fork()

• Se pueden copiar procesos con la familia de funciones exec.

Page 32: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

fork()if (pid == -1) perror(“Error al crear proceso”);else{ if (pid == 0) /*Proceso hijo*/ else /*Proceso padre*/}

Page 33: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Procesos Padre e Hijos

Page 34: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Terminación de procesos• Cuando un proceso termina devuelve un valor

de retorno al proceso padre.

• Todos los procesos tienen un proceso padre. Este código de retorno puede ser consultado a través de la variable de entorno $?

• La forma más fácil de salir es devolver un código de retorno (e.g., return 0).

Page 35: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Terminación de procesos• Otra forma de salir es a través de exit(),

realiza aparentemente el mismo comportamiento, ayuda a desbloquear procesos en espera.

• La función atexit() permite definir una función que se ejecutará al finalizar un programa.

Page 36: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Terminación de procesos• A el código de estado de un proceso

formalmente se llama señal.

• Un proceso huérfano es aquel que se ha quedado sin padre.

• Un proceso zombi es aquel que se ha quedado ocupando una posición de la tabla de descriptor de procesos.

Page 37: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

wait()• En algunas ocasiones un proceso padre

necesita esperar a que sus hijos termine. Para ello necesita sincronizarse los procesos.

• La función que nos permite parar un proceso hasta que termine otro es wait

• pid = wait(&estado);

Page 38: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

wait()• Algunas macros que nos ayudan en este

proceso son:

• WIFEXITED• WEXITSTATUS• WIFSIGNALED• WTERMSIG• WCOREDUMP

Page 39: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Más sobre procesos• Un ejemplo de clonación de procesos es

la ejecución de la función system() que nos permite ejecutar una llamada al sistema, generalmente un comando de la shell.

• hijo = getpid();• Padre = getppid();• Grupo = getpgrp();

Page 40: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Identificadores de usuario y de grupo

• En muchas ocasiones no sólo es necesario conocer los identificadores de procesos sino conocer los usuarios y los grupos.

• uid_t getuid(); /*usuario real*/• uid_t geteuid(); /*usuario extendido*/• gid_t getgid();• gid_t getegid();

Page 41: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Variables de entorno• En algunos casos es necesario compartir

algunos valores entre aplicaciones, esto se puede hacer a través de la variable de entorno.

• Las variables de entorno pueden verse con el comando env (ambiente). Muchos comandos muestran información a través de este entorno.

Page 42: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Variables de entorno• Hay algunas variables disponibles en la

mayoría de los sistemas como HOME, SHELL, TERM, PATH.

• Pueden accederse de manera individual haciendo eco en la pantalla con echo.

• char *valor = getenv(“TERM”);

Page 43: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Variables de entorno• char *var1 = “VARIABLE=valor”• putenv(var1); /*Coloca una variable en el

entorno*/

• La función sleep() permite dormir un proceso una cantidad determinada de milisegundos.

Page 44: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Señales

• Definidas en <signal.h>

• 1 SIGHUP• 2 SIGINT• 3 SIGQUIT• 4 SIGILL• 5 SIGTRAP• 6 SIGIOT• 7 SIGEMT• 8 SIGFPE• 9 SIGKILL

• 10 SIGBUS• 11 SIGSEGV• 12 SIGSYS• 13 SIGPIPE• 14 SIGALARM• 15 SIGTERM• 16 SIGUSR1• 17 SIGUSR2• 18 SIGCLD• 19 SIGPWR

Page 45: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Señales• int kill(pid, sig) sirve para mandar una

señal de un proceso a otro.

• pid > 0 proceso; pid = 0 a todos los procesos que pertenecen al mismo grupo.

• La función signal sirve para capturar una señal y realizar una función con ella.

Page 46: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Señalesmain() { void sigint_handler();if(signal(SIGINT,sigint_handler)== SIG_ERR) perror(“Error en la señal”);……..}

void sigint_handler(int sig) { printf(“señal recibida”);}

Page 47: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• Son procesos ligeros ya que no se

duplican completamente, sólo duplican su segmento de código. Por tal motivo, comparten datos fácilmente, la desventaja es que ocurren muchos problemas del tipo “race conditions”, pero al igual que IPC se soluciona con mecanismos como regiones críticas, zonas de exclusión mutua, etc.

Page 48: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• Los hilos son procesos ligeros a diferencia

de los procesos hijos, los hilos sólo replican el segmento de código, por lo que comparten datos entre otros hilos haciendo mejor uso de la memoria.

• La problemática con los hilos es que cada sistema operativo implementa sus hilos de manera distinta. Por ejemplo existen los hilos POSIX, los hilos C de Mach, los hilos en Windows, etc.

Page 49: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Threads Implementation

Page 50: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Web Server Process

Page 51: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• PThreads (POSIX Threads) es la biblioteca

para la creación de hilos más implementada en sistemas *X.

• Se utiliza la biblioteca pthread por lo que algunos compiladores ya la incluyen de manera predeterminada sino habrá que indicar su uso: gcc … -lpthread

Page 52: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• Crear hilos:int pthread_create(pthread_t *thread,

pthread_attr_t *attr, void * (*start_routine)(void *), void *arg)

• Esperar la finalización de hilos:int pthread_join(pthread_t th, void

**thread_return)

Page 53: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• No guardar estado del hilo:int pthread_detach(pthread_t h)

• Salir de un hilo:pthread_exit(void *retval)

• Biblioteca a utilizar: #include <pthread.h>

Page 54: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilostypedef struct parametros {

int id;char *nombre

};

void *funcion(parametros *p) {printf(“%s %d”, p->cadena, p->id);pthread_exit(&(p->id))

}

Page 55: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• Referencia asi mismo:Yo = pthread_self(); /*Demás funciones*/

• Enviar una señal a un hilo:pthread_kill(pthread_t hilo, int señal);

• Los hilos no están tan extendidos por que existen muchas variantes: hilos mach, hilos solaris, Gthreads, etc.

Page 56: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• Mutex:

pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex_attr_t *attr)

int pthread_mutex_lock(pthread_mutex_t *mutex) int pthread_mutex_lock(pthread_mutext_t

*mutex)

int pthread_mutext_destroy(pthread_mutext_t *mutex)

Page 57: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• En general los hilos en Java debido a su

portabilidad binaria son idénticos en todas las plataformas. Existen dos formas básicas de implementar procesos: heredar de la clase Thread o bien implementar la interfaz Runnable.

• En general en el método public void run() se agrega la funcionalidad del hilo.

Page 58: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• Si se heredo de la clase Thread el hilo

debe crearse de la siguiente forma:

• Thread hilo = new Thread(new Objeto());

• El método Thread.sleep(ms); permite dormir un proceso n cantidad de milisegundos.

Page 59: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• En general se ejecuta el hilo poniendo el

método start(), e.g.: hilo.start();

• Otros métodos de los hilos son: isAlive() para determinar si un hilo está con vida, el metodo stop()* finaliza un hilo, el método suspend()* lo suspende, el método resume() reanuda un proceso y join() espera a que finalice un proceso especificado.

Page 60: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• Se pueden asignar prioridades a los hilos

con el método setPriority(), en donde la prioridad puede ser MIN, MAX y NORM_PRIORITY.

• El método yield() cede prioridad, mientras que el método setDaemon(true) hace que un hilo sea demonio.

Page 61: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Hilos• Los demonios son hilos que pueden

correrse sin depender de otros procesos. Se utilizan mucho para la programación de servicios del sistema.

• Se pueden crear grupos de hilos con la clase GroupThread para un mejor manejo.

Page 62: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Agenda• 3.1 Procesos y procesadores conceptos

básicos. • 3.2 Hilos y multihilos. • 3.3 Modelos de procesadores. • 3.4 Asignación de procesadores. • 3.5 Coplanificación. • 3.6 Tolerancia a fallos. • 3.7 Sistemas distribuidos de tiempo real.

Page 63: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelos de Procesadores• En un sistema distribuido, con varios

procesadores, un aspecto fundamental del diseño es cómo se los utiliza

• Los procesadores distribuidos se pueden organizar de varias formas:

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

Page 64: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

3.3 Modelos de Procesadores• 3.3.1 De estación de trabajo.

• 3.3.2 De pila de procesadores.

• 3.3.3 Híbrido.

Page 65: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelo de Estación 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.

Page 66: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelo de 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.

Page 67: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelo de Estación de Trabajo• 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.

Page 68: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelo de Estación de Trabajo• Los aspectos clave en el uso de las

estaciones de trabajo inactivas son:

• ¿Cómo encontrar una estación de trabajo inactiva?.

• ¿Cómo lograr que un proceso remoto se ejecute de forma transparente?.

• ¿Qué ocurre si regresa el poseedor de la máquina?.

Page 69: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelo de Estación de Trabajo• 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.

Page 70: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelo de Estación de Trabajo• Los algoritmos para localizar las

estaciones de trabajo inactivas se pueden dividir en dos categorías: Controlados por el servidor y Controlados por el cliente.

• La localización de estaciones de trabajo en sí no es problemático, el problema radica en la sincronización de procesos entre las diferentes estaciones de trabajo.

Page 71: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

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.

• No existe el concepto de propiedad de los procesadores, los que pertenecen a todos y se utilizan compartidamente.

Page 72: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelo de Pila de Procesadores• Este modelo basa su funcionamiento en

la teoría de colas.

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

Page 73: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelo Híbrido• 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.

Page 74: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Agenda• 3.1 Procesos y procesadores conceptos

básicos. • 3.2 Hilos y multihilos. • 3.3 Modelos de procesadores. • 3.4 Asignación de procesadores. • 3.5 Coplanificación. • 3.6 Tolerancia a fallos. • 3.7 Sistemas distribuidos de tiempo real.

Page 75: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Asignación de procesadores• Son necesarios algoritmos para decidir cuál

proceso hay que ejecutar y en qué máquina .

• Para el modelo de estaciones de trabajo: • Decidir cuándo ejecutar el proceso de

manera local y cuándo buscar una estación inactiva.

• Para el modelo de la pila de procesadores: • Decidir dónde ejecutar cada nuevo proceso.

Page 76: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

3.4 Asignación de Procesadores• 3.4.1 Modelos y algoritmos con sus

aspectos de diseño e implantación.

Page 77: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelos de asignación• Generalmente se utilizan las siguientes

hipótesis:

• Todas las máquinas son idénticas (o al menos compatibles en el código); difieren a lo sumo en la velocidad.

• Cada procesador se puede comunicar con los demás.

Page 78: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelos de Asignación• Existen dos estrategias de asignación:

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

Page 79: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelos de Asignación• Los algoritmos de asignación intentan

optimizar:

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

Page 80: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelos de Asignación• 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.

• Los principales aspectos a tomar en cuenta en el diseño de algoritmos de asignación de procesos son los siguientes:

• Algoritmos deterministas vs. heurísticos.

Page 81: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelos de Asignación• Algoritmos centralizados vs. distribuidos.

• Algoritmos óptimos vs. subóptimos.

• Algoritmos locales vs. globales.

• Algoritmos iniciados por el emisor vs. iniciados por el receptor.

Page 82: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Modelos de Asignación• En general son muchos aspectos que se

deben considerar para la generación de algoritmos de asignación de procesadores, por ejemplo, que el micro este conciente de su carga de trabajo implica una serie de mediciones que pueden ser realmente inciertas.

• Los algoritmos de asignación en primera instancia deben buscar la estabilidad del sistema.

Page 83: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Agenda• 3.1 Procesos y procesadores conceptos

básicos. • 3.2 Hilos y multihilos. • 3.3 Modelos de procesadores. • 3.4 Asignación de procesadores. • 3.5 Coplanificación. • 3.6 Tolerancia a fallos. • 3.7 Sistemas distribuidos de tiempo real.

Page 84: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Planificación de Procesos• La planificación de procesos es la etapa

más importante del administrador de procesos ya que se encarga de administrar la disponibilidad del uso de CPU.

• Los planificadores no importando su complejidad deben respetar los siguientes elementos: equitatividad, eficiencia, tiempo de respuesta, retorno, volumen de producción.

Page 85: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Calendarizador de Procesos

Page 86: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Planificación de Procesos• La problemática con este tipo de

administración es que los recursos son únicos e imprendecibles. Por este motivo el planificador trata de estimar algunas características.

• Un planificador no sabe cuanto tiempo tardará en ejecutarse un proceso y si este en algún momento se bloquea por alguna petición de entrada o de salida.

Page 87: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Planificación de Procesos• Por este motivo un planificador debe de

asignar un tiempo predeterminado llamado Quantum para la ejecución de procesos.

• Un proceso puede ser interrumpido por otro proceso cuando este último requiera de una atención inmediata. Esto da origen a planificadores don prioridades.

Page 88: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Planificación de Procesos• El planificador de procesos se encarga de

mantener el contexto de cada una de las aplicaciones para poder realizar multitarea.

• Existen diverso algoritmos de planificación de tareas:

• El algoritmo de round robin (torneo)• Planificación por prioridad• Colas múltiples

Page 89: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Planificación de Procesos• Primero el trabajo más corto• Planificación garantizada• Planificación por loteria• Planificación por niveles

• En los Sistemas Dstribuidos, generalmente cada micro hace su propio administración local.

Page 90: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Coplanificación• Después de tener un modelo de

procesamiento y de un algoritmo de asignación de procesadores, el siguiente gran reto es la administración conjunta de los tiempos de uso de CPU de los procesos de forma global.

• Para poder realizar esto, se necesita de algoritmos de planificación y métodos de comunicación más eficiente. A continuación se describen algunos algoritmos de coplanificación.

Page 91: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Coplanificación• El algoritmo de Ousterhout 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.

• Se emplea una matriz conceptual donde:Las filas son espacios de tiempo.Las columnas son las tablas de procesos de los procesadores.

Page 92: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Coplanificación• Cada procesador debe utilizar un

algoritmo de planificación Round Robin.

• Todos los procesadores ejecutan el proceso en el espacio “0” durante un cierto período fijo.Todos los procesadores ejecutan el proceso en el espacio “1” durante un cierto período fijo, etc.

Page 93: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Coplanificación• Se deben mantener sincronizados los

intervalos de tiempo.

• Todos los miembros de un grupo se deben colocar en el mismo número de espacio de tiempo pero en procesadores distintos.

• A continuación se describe un cómputo paralelo y coplanificación de procesos

Page 94: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

¿Es el cómputo paralelo un sistema distribuido?

• Sí y No. Depende de la implementación.

• Los objetivos de la programación en paralelo de acuerdo con [5] son: – Reducir el tiempo de procesamiento utilizado

por un algoritmo convencional– Reducir la complejidad del algoritmo

• Se trata de aprovechar mejor el hardware.

Page 95: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Cómputo Paralelo

Page 96: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Analogía con el Tráfico de una Autopista

¿Qué se puede lograr con el paralelismo?

Suponer que tenemos un convoy largo de carga: troncos de madera…

Una aplicación no paralelizada

Vamos a dividir en 4 trocas más pequeñas…

Cuatro hilos independientes

Ahora, podemos poner una troca en cada carril…

Explotar los múltiples núcleos…

La carga llega mucho más rápido!

Resultado: Mejora la tasa de trabajos!

Page 97: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

97

Analogía con el Tráfico de una Autopista

Planificación del Sistema OperativoPlanificador del SO (Selecciona el carril)

Debe esperar la troca.

El SO piensaCarril 1

1

2

3

4

Carril 2

El Sistema Operativo no puede romper una aplicación en hilos…

… solo puede planificar hilos existentes.

Page 98: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Paralelismo

A B C D

A

B

C

D

P1

P2

P3

P4

Homoparalelismo

A B C D

A

B

C

D

P1

P2

P3

P4

Hetereoparalelismo

Page 99: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Paralelismo• El problema del paralelismo radica en que

muchos algoritmos no pueden paralelizarse (son serializable o secuenciales) [6].

• Existen dos tecnologías para realizar paralelismo:– PVM (Parallel Virtual Machine) [7]– MPI (Message Parking Interface) [8][9][10]

Page 100: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Algoritmo paralelosfor(int i = 0; i < 4; i++){

aleatorio(i); }

aleatorio(1) micro1aleatorio(2) micro2aleatorio(3) micro3aleatorio(4) en espera

• Compilador optimizado. Sistemas Operativos optimizados

Page 101: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Algoritmos paralelos

mnmnmm

n

n

b

b

b

x

x

x

aaa

aaa

aaa

2

1

2

1

21

22221

11211

No conviene

Conviene

Page 102: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Algoritmos paralelos• Instrucciones como while son más

difíciles de paralelizar por que depende de la condición.

• No siempre los compiladores pueden paralelizar de manera automática un algoritmo.

• En algunas ocasiones se invierte más tiempo tratando de paralelizar un algoritmo que ejecutándolo de manera secuencial.

Page 103: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Algoritmos paralelos

//Procesador unofor( i=0; i<N/2; i++){ a[i]= c+i;}

//Procesador dosfor( ; i<N; i++){ a[i]= c+i;}

//Procesador unofor( i=0; i<N/2; i++){ a[i]= c+i;}

//Procesador dosfor( i = N/2; i<N; i++){ a[i]= c+i;}

Page 104: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Algoritmos paralelos

A[0] = C;

//Procesador unofor( i=1; i<N/2; i++){ a[i]= a[i-1]+1;}

//Procesador 2for( i=N/2; i<N; i++){ a[i]= a[i-1]+1;}

• ¿Por qué no se puede paralelizar?

• Por que el segundo proceso depende del resultado del primero.

• Si se puede si se encuentra un algoritmo que permita encontrar el valor de a[N/2] directo.

2/N

Ci

i

Page 105: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Caso práctico MPI• Existen diversas implementaciones de

MPI: LAM/MPI, MPICH, MPICH2, OpenMPI

• MPI se puede programar en C o Fortran.

• El primer paso es tener nuestro programa paralelo y asegurarnos de que está corriendo el demonio de MPI:

• mpd –ncpus=procesadores &• mpdtrace -1

Page 106: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Caso Práctico MPI• Se debe compilar el programa:• mpicc holamundo.c –o holamundo

• Se debe de correr el proceso idicando el número de procesadores:

• mpirun –np 10 ./holamnudo

Page 107: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Holamundo.c en MPI#include <stdio.h>#include “mpi.h”int main(int argc, char **argv){ int procesos, rango, tam;

char nombre[MPI_MAX_PROCESSOR_NAME];MPI_Iinit (&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &procesos);MPI_Comm_rank(MPI_COMM_WORLD, &rango);MPI_Get_processor_name(nombre, &tam);MPI_barrier(MPI_COMM_WORLD);printf(“Hola, mundo!, soy %d de %d y me ejecuto en:%s\n”, rango, procesos, nombre);MPI_Finalize();return 0;

}

Page 108: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Esquema de un programa en MPI

Esquema de un programa en MPI/*Cabecera de MPI*/#include <mpi.h>int main(int argc, char **argv){

int quiensoy, tamano;MPI_Status estado;/*Inicializamos MPI*/MPI_Init(&argc, &argv);/*Preguntamos quienes somos*/MPI_Comm_rank(MPI_COMM_WORLD, &quiensoy);

/*Nos esperamos hasta quetodos hayan inicializado MPI*/MPI_Barrier(MPI_COMM_WORLD);/*Preguntamos cuanto somos*/MPI_Comm_size(MPI_COMM_WORLD, &tamano);/*PROGRAMA*/

Page 109: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Esquema de un programa en MPIif(quiensoy == root)

{/*Inicialización estrructuras repartidorReparte tareasEspera resultadosVisualiza resultados*/

}else{

/*recibe la tarearealiza cálculosmanda resultados*/

} /*Finaliza el programa*/

MPI_Finalize();exit(0);

}

Page 110: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Paralelización Multiplicación de Matrices

• Programa secuencial de multiplicación de matrices en Java o C.

• Programa concurrente, partir del hecho de que se puede poner un hilo en ejecución para multiplicaciones no dependientes.

Page 111: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Agenda• 3.1 Procesos y procesadores conceptos

básicos. • 3.2 Hilos y multihilos. • 3.3 Modelos de procesadores. • 3.4 Asignación de procesadores. • 3.5 Coplanificación. • 3.6 Tolerancia a fallos. • 3.7 Sistemas distribuidos de tiempo real.

Page 112: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tolerancia a Fallas• La tolerancia a falla en sistemas con

multiprocesamiento puede lograrse a través de una buena sincronización entre procesos (IPC).

• Los IPC de POSIX son: cola de mensajes, tuberías, semáforos y memoria compartida (discutida en la siguiente unidad).

• Los IPC se ejecutan a nivel de kernel y no a nivel de usuario.

Page 113: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tuberías• Las tuberías nos permiten redireccionar el

flujo de salida de un proceso para ser la entrada de otro.

• A nivel de comandos se puede realizar con el operador | (pipe). Por ejemplo ls –l | more, hace que la salida del comando –ls sea la entrada de more, por lo que se verá pantalla por pantalla la información

Page 114: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tuberías• Se pueden utilizar tuberías desde los

procesos.

• int pipe(tuberia);• int tuberia[2];

• tuberia[0] • tuberia[1]

Page 115: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tuberías• Al dejar de utilizar una tubería, esta se

debe de cerrar en sus dos extremos: close(pipe).

• Por un extremo de la tubería se lee, y por el otro se escribe. Ya depende de la lógica del programa ubicar que lado escribe y que lado lee. En general, primero se escribe y luego se lee.

• Se utiliza la biblioteca unistd.h*

Page 116: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tuberías• Para escribir en una tubería se realiza lo

siguiente: write(tuberia[1], mensaje, strlen(mensaje)+1).

• Para leer: read(tuberia[0], mensaje, MAX)

• Las tuberías no son bidireccionales, sólo van en un sentido, pero se pueden utilizar dos tuberías para pasar mensajes en ambas direcciones.

Page 117: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tuberías• Las tuberías utilizadas sólo están

disponibles para los descendientes de un proceso que lo crean. Por este motivo, no están disponible para otros procesos.

• Las tuberías entre procesos iguales se les llama sin nombre. El otro tipo de tuberías tienen nombre y generalmente se les llama FIFO.

Page 118: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tuberías• Las tuberías con nombre se manejan

igual que las tuberías sin nombre con la salvedad de que presentan un nombre que ocupa una entrada de directorio.

• Se trabajan igual que un archivo sólo que se bloquea cuando un proceso escribe en la tubería.

Page 119: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Tuberías• Para crear una tubería con nombre desde

shell se debe ejecutar: mknod fifo_1 p

• Desde programación las tuberías con nombre se crean: mknod(“tubo”, S_IFIFO | permisos, 0)

• Las comunicaciones vistas hasta ahora son half-duplex. Se puede utilizar un poll o select para realizar comunicación full-duplex

Page 120: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforos

• Los semáforos son mecanismos que permiten sincronizar procesos.

• Todos los mecanismos IPC tienen una entrada en una tabla especial con una llave definida por el usuario.

• Los posibles valores de la llave son IPC_PRIVATE, IPC_CREATE, IP_EXECL, entre otros.

Page 121: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforos• Cada entrada de la tabla tiene un registro de

permisos (rw), información de estado y llamadas de control.

• Las llaves son del tipo key_t. Para crear una llave se utiliza:

#include <types.h>#include <sys/ipc.h>key_t ftok(path, id)

Page 122: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Llaveskey_t llave;if((llave= ftok(“/etc/ntp.conf”, ‘A’) ==

(key_t)-1)/*Error al crear la llave*/

• ipcs se utiliza para ver los mecanismos ipc asignados (-q, -m, -s, -b)

• ipcrm se utiliza para liberar recursos (-q msqid, -m shmid, -s semid)

Page 123: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforos• Es un mecanismo para prevenir colisiones

cuando uno o más procesos solicitan simultáneamente un recurso.

• Dijsktra los define como un objeto tipo entero en los cuales se puede aplicar dos operaciones: P (Proberen, comprobar) y V (Verhogen, incrementar), donde P sirve para obtener el recurso y V para liberarlo.

Page 124: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforos• Las operaciones sobre un semáforo son

semget para crear un semáforo o habilitar uno existente, semctl para realizar operaciones de control e inicialización, semop para realizar operaciones P y V.

#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>int semget(key, nsems, semflg)

Page 125: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforosint llave, semid;if((llave= ftok(“auxiliar”, ‘K’)) ==(key_t)-1)

/*Tratamiento del error*/

if((semid= semget(llave, 4, IPC_CREAT | 0600)) == -1)/*Error al crear el semáforo*/

Page 126: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforosint semctl(semid, semnum, cmd, arg)union semun{

int val;struct semid_ds *buf;ushort *array;

}arg;

• Las opciones de control son: GETVAL, SETVAL, GETPID, GETNCNT, GETZCNT, GETALL, SETALL, IPC_STAT, IPC_SET

Page 127: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforosushort asem;asem[0]=5; asem[1]=3; asem[2]=4;

asem[3]=8;semctrl(semid, 0, SETALL, asem)valor = semctrl(semid, 3, GETVAL, 0)

int semop(semid, sops, nsops)struct sembuf *sops;

Page 128: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforos

struct sembuf{ushort sem_num;short sem_op;short sem_flg;

};

• Si semop es negativo se decrementará (P), si se incrementa (V) y si es 0 no hace nada.

• Las banderas son: IPC_WAIT, IPC_NOWAIT, SEM_UNDO

Page 129: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Semáforosstruct sembuf operacines[4];Operaciones[0].semnum = 1;Operaciones[0].sem_op = -1;Operaciones[0].sem_flg = 0;Operaciones[1].semnum = 4;Operaciones[1].sem_op = 1;Operaciones[1].sem_flg = 0;

semop(semid, operaciones, 2);

Page 130: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Colas de mensajes• La filosofía de las colas de mensajes es

similar a las tuberías, pero con mayor versatilidad.

• Una cola es una estructura de datos gestionada por el kernel, en la cual varios procesos pueden escribir sobre ella. El sincronismo para evitar colisión lo realiza el kernel.

Page 131: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Colas de mensajes

#include <sys/msg.h>int msgget(key, msgflg)

If((msqid= msgget(llave, IPC_CREATE | 0600)) == -1)/*Error al crear la cola de mensajes*/

• msgctrl(msq, cmd, buf) sirve para leer y modificar la información estadística y de control de una cola.

Page 132: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Colas de mensajes• Los comandos de control son: IPC_STAT,

IPC_SET, IPC_RMID. Por ejemplo: msgctrl(msqid, IPC_RMID, 0);

• Las operaciones básicas de una cola de mensajes son enviar y recibir los mensajes que se realizan con las siguientes funciones:

int msgsnd(msqid, msgp, msgsz, msgflg);int msgrcv(msqid, msqp, msgtyp, msgflag);

Page 133: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Cola de mensajes• El parámetro msgtyp indica el tipo de

mensaje que se desea leer: 0 para el primer mensaje, > 0 el primer mensaje de tipo msgtyp que haya en la cola, <0 lee el primer mensaje que sea menor o igual al valor absoluto de msgtyp y además sea el mensaje más pequeño de los que hay.

Page 134: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Cola de mensajesstruct{

long tipo;char cadena[20];

}mensaje;

strcpy(mensaje.cadena, “SD1”);mensaje.tipo = 1; longitud = strlen(mensaje.cadena)if(msgsnd(msqid,&mensaje,longitud,0)==-1)

/*Err*/if(msgrcv(msqid,&mensaje,longitud,1,0) ==-1)

/*Er*/

Page 135: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Agenda• 3.1 Procesos y procesadores conceptos

básicos. • 3.2 Hilos y multihilos. • 3.3 Modelos de procesadores. • 3.4 Asignación de procesadores. • 3.5 Coplanificación. • 3.6 Tolerancia a fallos. • 3.7 Sistemas distribuidos de tiempo real.

Page 136: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas de tiempo real• Son sistemas para poder ejecutar

satisfactoriamente tareas que han de completarse en un plazo prefijado de tiempo (ej. sistemas de control industrial, sistemas multimedia, sistemas de misión crítica).

• Se caracterizan porque los procesos tienen que ejecutar en instantes predeterminados.

Page 137: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Clasificación de STR• Existen dos tipos de STR:

• Crítico (rígido): para tareas que siempre deben cumplir los plazos de terminación. Adecuados para la industria. Muy simples, incompatibles con tiempo compartido, memoria virtual, etc.

• No crítico (flexible): intentan cumplir los plazos, pero no los garantizan al 100%. Adecuados para multimedia, etc.

Page 138: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Ejemplo de STR• Aeronave

• Carro

Page 139: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas Embebidos de TR

Page 140: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Aplicaciones de los STR• Dominio Industrial

– Controlador de la planta– Robot para tratamiento de material peligroso

• Uso militar– Sistema de reconocimiento de blancos

automático– Sistema de guiado de misiles y navegación

• Sistemas altamente críticos– Plantas nucleares– Sistemas de aviónica

Page 141: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas de Tiempo Real• Los tipos de tiempo pueden ser:

– Los de plazo fijo se ejecutan una vez en un instante determinado.

– Los periódicos se ejecutan cada cierto tiempo.

• Los sistemas en tiempo real críticos tienen asignada una franja de tiempo que no pueden rebasar.

Page 142: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas de Tiempo Real• Suelen tener pocos procesos en estado

de listo a fin de que no se retrase la ejecución de los mismos.

• Se introducen retardos en la ejecución, como puede ser la memoria virtual, puesto que la paginación puede producir retrasos inadmisibles para el proceso.

• Los STR son altamente tolerante a fallas manejados por el sistema.

Page 143: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Arquitecturas de Tiempo Real

Comunicaciones

Software de Tiempo-Real

MedioAmbiente

E/SDigital

E/SAnalógico

Otras E/S

Reloj

Otras Computadoras

Computadora (HW)

Microcontroladores y sistemas embebidos.DSP’s, PLC’s.Buses de multiprocesadores:VMEBUs,Multibus,FutureBus

Arquitecturas RISC, Transputers.Uniprocesadores, Multiprocesadores.Memorias chache, DMA’s.

Sistema en Tiiempo Real Distribuido. Arqutecturas homogeneas o heterogeneas.Redes de area local, y topologias de red.Protocolos de comunicaciones:Ethernet, Token RingModelo OSI.Redes FFDI, X-25, ATM.

Page 144: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Ejemplo de un sistema en tiempo real.

Actividades en una computadora de automobil.

Control deVelocidad

Control decombustible

Control de Frenado

Otro software no-critico

C=4ms.T=20ms.D=5ms.

C=10ms.T=40ms.D=40ms.

C=40ms.T=80ms.D=80ms.

C=10ms.T=40ms.

C=tiempo de computo (peor caso), T=Periodo de ejecucion, D=Plazo de respuesta

Page 145: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Solucion Ciclica.

velocidadfrenado

com busti ble-1

vel.

combustible-2velocidad

frenado

com busti ble-3

vel.

combustible-2

nocritico

0 4

14

20

24

4044

54

60

64

76

* implica descomponer actividadesgrandes en varias ejecuciones.

Page 146: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Solucion Concurrente.

task body speed isbeginloop speed_measurement; next:=next+0.2 sleep_until_next;end loopend speed

task body non_critical isbeginloop perform computation;end loopend speed

task body brake isbeginloop control_brakes; next:=next+0.2 sleep_until_next;end loopend speed

task body fuel isbeginloop fuel_injection; next:=next+0.2 sleep_until_next;end loopend speed

La solucion concurrente es mas simple de disenar y modificar.

Page 147: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas Distribuidos de TR• Son totalmente más complejos debido a

la gran heterogeneidad de sus componentes.

• Debido a esta problemática son poco los Sistemas Operativos Distribuidos de Tiempo Real aunque muchos SO de Tiempo Real (ej. SO de dispositivos empotrados) tienen capacidad de comunicación distribuida.

Page 148: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas Operativos de TR• El problema de la distribución radica en

los tiempos de latencia de los mecanismos de comunicación distribuida (sockets, RPC, middlewares, etc.) dado que no hay una garantía de servicio y más si se enfoca en redes públicas como la Internet.

• En la práctica la gran mayoría de los Sistemas Operativos Distribuidos de Tiempo Real se llegan a implementar en sistemas multiprocesadores.

Page 149: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Sistemas Operativos Distribuidos de TR

• La mayoría de los sistemas operativos distribuidos de tiempo real caen en el área de multimedia (QNX) y de los sistemas empotrados (Symbian). Los sistemas de navegación son otro claro ejemplo de SOTR.

Page 150: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

SOD de Tiempo Real• Estos sistemas deben de ser totalmente

determinísticos y predecibles.

• Otro tópico que es un gran reto en este tipo de sistema es la seguridad y en específico el control de acceso.

• El balanceo de cargas de trabajo es de suma importancia para el uso eficiente del sistema

Page 151: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

SOD de Tiempo Real• La concurrencia y sincronización de

procesos es aún más complicada (un recurso que es utilizado por un proceso debe de ser liberado automáticamente para que otro proceso más crítico pueda trabajar inmediatamente).

• La selección de hardware es más compleja.

• La caracterización (medición de tiempos) de estos sistemas es compleja y no muy exacta.

Page 152: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

SOD de Tiempo Real• El uso de SOD de Tiempo Real tiene que

ser manejado con las aplicaciones, ya que de lo contrario no tendría una utilidad práctica; por este motivo, es necesario la adaptación de herramientas como: compiladores, utilerías, base de datos y software de sistema.

Page 153: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Referencias• Liberty, Jesse, Horvarth, David (200).

Aprendiendo C++ para Linux en 21 Días. México, Prentice Hall.

• Márquez, Francisco (1994). Unix Programación Avanzada. Estados Unidos, Addison-Wesley.

Page 154: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Referencias• Colouris, George, Dollimore, Jean,

Kindberg, Tim (2001). Sistemas Distribuidos Conceptos y Diseño. 3a. Edición. España, Pearson Addison-Wesley.

• Horstmann, Cay, Cornell, Gary (2006). Core Java 2 Volumen II Carácterísticas Avanzadas. España, Perason Prentice Hall.

Page 155: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Referencias• Deitel, Harvey, Deitel, Paul (2004). Java

Como Programar. Quinta Edición. México, Pearson Prentice Hall.

• Márquez, Francisco (2004). UNIX Programación Avanzada. Tercera edición, México, Alfaomega Ra-Ma.

Page 156: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Referencias• Froufe, Agustín, Jorge, Patricia (2004). J2ME Java

2 Micro Edition Manual de usuario y tutorial. México, Alfaomega.

• Firtman, Maximiliano (2004). Programación de celulares con Java. Argentina, MP Ediciones.

• Ruíz, Diego (2005). C# La guía total del programador. Argentina, MP Ediciones.

Page 157: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Referencias• Tanenbaum, Andrew (1996). Sistemas

Operativos Distribuidos. México, Prentice Hall.

• Tanenbaum, Andrew, Van Steen, Maarten (2006). Distributed Systems Principles and Paradigms. Estados Unidos, Pearson Prentice Hall.

• Mejía, P. (2009), Curso de Sistemas de Tiempo Real, CINVESTAV, México.

Page 158: Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx jcolivar

Referencias• J. Senn, “Análisis y Diseño de Sistemas de

Información”, 2da. Edición, McGraw-Hill, México, 1992, ISBN: 968-422-991-7.

• A. Tanenbaum, et al., “Sistemas Operativos. Diseño e implementación”, 2da. Edición, Prentice Hall, México, 1998, ISBN: 970-17-0165-8.

• Aguas, N. (2009) Procesos y Procesadores en Sistemas Distribuidos.