SlideShare una empresa de Scribd logo
Procesos y Procesadores en
Sistemas Distribuidos
M.C. Juan Carlos Olivares Rojas
jcolivar@antares.itmorelia.edu.mx
http://antares.itmorelia.edu.mx/~jcolivar
Julio, 2009
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.
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.
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.
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.
Ejecución de un Proceso
Lista de Procesos
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.
Procesos
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.
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.
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.
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.
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.
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)
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.
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
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.
Otras clasificaciones de SD
• Multiprocesadores con base en buses.
• Multiprocesadores con conmutador.
• Multicomputadoras con base en buses.
• Multicomputadoras con conmutador.
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.
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)
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).
Tarjeta madre
Tarjeta madre
Sistemas multiprocesadores
CPU 1 CPU n
CPU 2
Memoria
Modelo de n procesadores
CPU
N1 Nn
Memoria
Modelo de n núcleos
…
…
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.
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.
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.
“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
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.
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?
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…
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.
fork()
if (pid == -1)
perror(“Error al crear proceso”);
else
{
if (pid == 0)
/*Proceso hijo*/
else
/*Proceso padre*/
}
Procesos Padre e Hijos
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).
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.
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.
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);
wait()
• Algunas macros que nos ayudan en este proceso
son:
• WIFEXITED
• WEXITSTATUS
• WIFSIGNALED
• WTERMSIG
• WCOREDUMP
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();
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();
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.
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”);
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.
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
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.
Señales
main() {
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”);
}
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.
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.
Threads Implementation
Web Server Process

Más contenido relacionado

PDF
Computo Distribuído
PPT
programacion_redes_informaticas_clase_9_31052024.ppt
PPT
Sistemas operativos software
PDF
Tema 3. Arquitectura y diseño de seguridad
PPTX
Los sistemas operativos
PPTX
Presentacion sistemas operativos
PDF
Sistema computacional (arquitecturas y memorias)
PPT
Introducción a los sistemas_operativos.ppt
Computo Distribuído
programacion_redes_informaticas_clase_9_31052024.ppt
Sistemas operativos software
Tema 3. Arquitectura y diseño de seguridad
Los sistemas operativos
Presentacion sistemas operativos
Sistema computacional (arquitecturas y memorias)
Introducción a los sistemas_operativos.ppt

Similar a Sistemas distribuidos en computación aplicación (20)

PPTX
Resumen del primer corte
PDF
INTRODUCCION A SISTEMAS OPERATIVOS
PPTX
PPTX
Estructura de un sistema operativo
PPTX
Arquitectura de computadoras
PPTX
Estructura de los Sistemas Operativos
PPT
Organizacion del computador
PDF
Esquema Basico de un microprocesador (1).pdf
PPTX
PPTX
Arquitectura primer tutorial
PPTX
PPTX
Presentacion sistemas operativos
PPTX
0_0_Arquitectura Básica de un Sistema Computacional_RAL.pptx
PPTX
Presentacion sistemas operativos
PPTX
Presentacion sistemas operativos
PPS
Los sistemas operativos
PPT
Diseño logisco de Microprocesadores - El Microprocesador y su Arquitectura
PPTX
Administración y Comando Básicos
PPTX
Presentacion
Resumen del primer corte
INTRODUCCION A SISTEMAS OPERATIVOS
Estructura de un sistema operativo
Arquitectura de computadoras
Estructura de los Sistemas Operativos
Organizacion del computador
Esquema Basico de un microprocesador (1).pdf
Arquitectura primer tutorial
Presentacion sistemas operativos
0_0_Arquitectura Básica de un Sistema Computacional_RAL.pptx
Presentacion sistemas operativos
Presentacion sistemas operativos
Los sistemas operativos
Diseño logisco de Microprocesadores - El Microprocesador y su Arquitectura
Administración y Comando Básicos
Presentacion
Publicidad

Último (20)

PPTX
MODULO 2. METODOLOGIAS PARA ANALISIS DE RIESGOS 2da Parte.pptx
PDF
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
PDF
1132-2018 espectrofotometro uv visible.pdf
PPTX
Presentación - Taller interpretación iso 9001-Solutions consulting learning.pptx
PDF
S15 Protección de redes electricas 2025-1_removed.pdf
PPT
Sustancias Peligrosas de empresas para su correcto manejo
PPTX
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
PDF
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
PDF
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
DOC
informacion acerca de la crianza tecnificada de cerdos
PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PDF
Primera formulación de cargos de la SEC en contra del CEN
PDF
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
PPTX
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
PDF
Módulo-de Alcance-proyectos - Definición.pdf
PDF
Perfilaje de Pozos _20250624_222013_0000.pdf
PPT
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
PDF
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
MODULO 2. METODOLOGIAS PARA ANALISIS DE RIESGOS 2da Parte.pptx
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
1132-2018 espectrofotometro uv visible.pdf
Presentación - Taller interpretación iso 9001-Solutions consulting learning.pptx
S15 Protección de redes electricas 2025-1_removed.pdf
Sustancias Peligrosas de empresas para su correcto manejo
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
informacion acerca de la crianza tecnificada de cerdos
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
Primera formulación de cargos de la SEC en contra del CEN
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
Módulo-de Alcance-proyectos - Definición.pdf
Perfilaje de Pozos _20250624_222013_0000.pdf
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
Publicidad

Sistemas distribuidos en computación aplicación

  • 1. Procesos y Procesadores en Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas jcolivar@antares.itmorelia.edu.mx http://antares.itmorelia.edu.mx/~jcolivar Julio, 2009
  • 2. 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.
  • 3. 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.
  • 4. 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.
  • 5. 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.
  • 8. 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.
  • 10. 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.
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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)
  • 16. 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.
  • 17. 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
  • 18. 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.
  • 19. Otras clasificaciones de SD • Multiprocesadores con base en buses. • Multiprocesadores con conmutador. • Multicomputadoras con base en buses. • Multicomputadoras con conmutador.
  • 20. 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.
  • 21. 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)
  • 22. 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).
  • 23. Tarjeta madre Tarjeta madre Sistemas multiprocesadores CPU 1 CPU n CPU 2 Memoria Modelo de n procesadores CPU N1 Nn Memoria Modelo de n núcleos … …
  • 24. 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.
  • 25. 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.
  • 26. 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.
  • 27. “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
  • 28. 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.
  • 29. 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?
  • 30. 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…
  • 31. 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.
  • 32. fork() if (pid == -1) perror(“Error al crear proceso”); else { if (pid == 0) /*Proceso hijo*/ else /*Proceso padre*/ }
  • 34. 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).
  • 35. 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.
  • 36. 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.
  • 37. 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);
  • 38. wait() • Algunas macros que nos ayudan en este proceso son: • WIFEXITED • WEXITSTATUS • WIFSIGNALED • WTERMSIG • WCOREDUMP
  • 39. 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();
  • 40. 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();
  • 41. 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.
  • 42. 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”);
  • 43. 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.
  • 44. 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
  • 45. 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.
  • 46. Señales main() { 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”); }
  • 47. 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.
  • 48. 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.