Publicado el 28 de Mayo del 2018
613 visualizaciones desde el 28 de Mayo del 2018
744,0 KB
34 paginas
Creado hace 10a (30/04/2014)
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Proyecto Universidad-Secundaria
Incorporación de contenidos de programación paralela en
la rama de tecnologías informáticas
Facultad Informática, Universidad de Murcia e
Instituto de Enseñanza Secundaria Ingeniero Juan de la Cierva
Programación Multiproceso
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Posible utilización
Módulo de Programación de servicios y procesos, segundo
de Desarrollo de Aplicaciones Multiplataforma
Parcialmente se podría usar en Tecnologías de la Información
y de las Comunicaciones, primero de Bachillerato
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Contenido
1 Procesos
2 Elementos de Programación Multiproceso
3 Entornos de Programación Multiproceso
Uso de pipe en C/C++
Captura de flujo de I/O en Java
MPI
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Concepto de proceso
Un proceso es una instancia de un programa que se ejecuta:
Programa: Colección de instrucciones.
Proceso: Ejecución de las instrucciones.
se pueden ejecutar varias instancias (procesos) del mismo
programa,
varios procesos (del mismo o distinto programa) pueden
colaborar en la resolución de un problema, compartiendo los
recursos del sistema computacional,
se necesitan mecanismos de comunicación y sincronización.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Recursos asociados a un proceso
Cada proceso tiene asociados una serie de recursos del sistema:
Una imagen del código máquina del programa
Una parte de memoria, para almacenar el código, los datos
del proceso, la pila de llamadas de sus rutinas...
Descriptores de los recursos del sistema asociados al
proceso (por ejemplo, descriptores de ficheros)
El contexto del proceso: contenido de los registros,
direcciones de memoria...
El sistema operativo almacena la información de los procesos
activos en bloques de control de procesos.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Estados de un proceso
Inicialmente se crea el proceso: se carga
de memoria secundaria a principal.
Después pasa a estado de esperando,
hasta que el scheduler del sistema lo
asigna a un procesador.
Pasa a estado de ejecutándose.
Cuando necesita esperar a que un
recurso esté disponible pasa a
bloqueado, y cuando ya tiene el recurso
pasa a esperando y de ahí a
ejecutándose.
Finalmente pasa a terminado.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Planificación de procesos
El sistema operativo puede mantener varias instancias
programas al mismo tiempo: puede haber programas de
usuarios distintos, varias instancias del mismo programa...
Un núcleo ejecuta sólo un proceso en un instante de tiempo.
En sistemas con varios núcleos o procesadores se pueden
asignar procesos distintos a núcleos distintos (ejecución
concurrente).
La asignación y desasignación de procesos a núcleos debe
hacerla el sistema operativo de forma rápida.
Los procesos pueden cambiar de estado por interrupciones
software o hardware.
Un cambio de contexto ocurre cuando un proceso en un
núcleo para y se le asigna otro proceso.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Procesos versus hilos
Un proceso puede tener subprocesos o hilos, que son
secuencias independientes de ejecución dentro del código de
un proceso.
Los hilos son las secuencias más pequeñas de instrucciones
que el sistema operativo puede manejar de forma
independiente.
Los hilos dentro de un proceso comparten más recursos que
los procesos: la memoria, la última instrucción del código,
valores de las variables...
La gestión de hilos por el sistema operativo será más rápida
que la de procesos.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Programación concurrente, paralela y distribuida
Programación Concurrente
Cuando varios elementos de proceso (hilos, procesos)
trabajan de forma conjunta en la resolución de un problema.
Puede ser en un único procesador o núcleo.
Programación Paralela
Es programación concurrente cuando se utiliza para acelerar
la resolución de los problemas,
normalmente usando varios procesadores o núcleos.
Programación Distribuida
Es programación paralela cuando los sistemas están
distribuidos,
por ejemplo una red de procesadores,
con lo que hay que usar paso de mensajes.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Necesarios mecanismos de
creación
ejecución
finalización
comunicación
sincronización
de procesos.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Creación
Se ordena al sistema poner en marcha procesos, y cada proceso tiene
asociadas sus zonas de memoria:
En C:
Con fork se crea un proceso hijo, que tiene una copia de las variables del
proceso padre.
En MPI:
Al lanzar la ejecución con mpicc -np X programa se ponen en marcha X
procesos que ejecutan el mismo código programa y cada uno tiene en su
memoria asociada copias distintas de las variables del programa.
Los procesos pueden empezar a colaborar cuando se inicializa MPI, con
MPI Init.
En Java:
Está la clase ProcessBuilder, y se inicializan con el método start.
También se pueden poner en marcha desde otro proceso con
Runtime.getRuntime().exec("programa").
Y se pueden usar RMI (Java Remote Method Invocation) para invocar
métodos de forma remota, para aplicaciones cliente-servidor.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Ejecución
Una vez puestos en marcha, los procesos trabajan de forma
independiente, ejecutando el mismo o distinto programa, y
cada uno con los datos a él asociados.
Si ejecutan el mismo programa, aunque las variables se
llaman igual, cada proceso trabaja con una copia distinta de
ellas, por lo que la misma variable tiene valores distintos en
procesos distintos.
Hay mecanismos para sincronizar los procesos.
Cuando un proceso necesita datos de otro proceso el acceso
a esos datos se realiza con comunicaciones.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Finalización
La finalización de un proceso supone la liberación de los recursos que se
le asociaron (memoria, variables, descriptores de fichero...).
En C:
Con wait el proceso padre espera a que finalice un proceso hijo.
En MPI:
Los procesos que se lanzaron con mpicc -np X programa acaban
cuando llegan al final del programa.
Al ejecutar MPI Finalize se liberan los recursos generados para
gestionar procesos a través de MPI, y los procesos dejan de poder
colaborar.
En Java:
En la clase ProcessBuilder se pueden usar los métodos
finalize, wait, notify y notifyAll heredados de la clase
Object.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Comunicación
Los procesos acceden a datos asociados a otros procesos por
medio de comunicaciones.
En C:
Los procesos padre e hijo emparentados al ejecutar fork
pueden comunicarse a través de una tubería usando la
función pipe.
En MPI:
Hay comunicaciones punto a punto (MPI Send, MPI Recv, y
otras versiones) y comunicaciones colectivas (MPI Bcast,
MPI Gather...)
En Java:
Ofrece multitud de posibilidades: colas de mensajes, canales,
RMI, sockets, redireccionamiento de flujos de entrada/salida.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Sincronización
Los procesos se sincronizan al comunicarse,
pero también al acabar la ejecución, por ejemplo si un
proceso espera a otro en un wait.
En las comunicaciones puede haber sincronización entre dos
procesos (comunicaciones punto a punto, o tuberías
asociadas a dos procesos) o entre varios procesos
(comunicaciones colectivas).
Puede ser necesaria sincronización sin comunicar datos, por
ejemplo para esperar que todos los procesos lleguen a un
punto de la ejecución para seguir trabajando juntos. Se
utilizan barreras, en MPI con la función MPI Barrier.
Univ de Murcia-IES Ing. de la Cierva
Paralelismo en la rama de tecnologías informáticas
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso
Uso de pipe en C/C++
Captura de flujo de I/O en Java
MPI
Veremos ejemplos básicos de programación multiproceso:
Uso de pipe en C/C++
Captura de flujo de I/O en Java
MPI
veremos programación por paso de mensajes en MPI
con versiones nuevas de l
Comentarios de: Programación Multiproceso - Proyecto Universidad-Secundaria - Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas (0)
No hay comentarios