Вы находитесь на странице: 1из 42

REG-

REG-ES
REV01
REV01

INGENIERÍA EN INFORMÁTICA
PROGRAMACIÓN
CONCURRENTE
Directorio

Lic. Emilio Chuayffet Chemor


Secretario de Educación

Dr. Fernando Serrano Migallón


Subsecretario de Educación Superior

Mtro. Héctor Arreola Soria


Coordinador General de Universidades Tecnológicas y Politécnicas

Dr. Gustavo Flores Fernández


Coordinador de Universidades Politécnicas.

II de 42
Página Legal.

Participantes
Participantes

M. en C. Ismaylia Saucedo Ugalde Universidad Politécnica de Sinaloa


M. en A. Liliana Márquez Mundo Universidad Politécnica de Morelos
M. en C. Irma Yazmín Hernández Báez Universidad Politécnica de Morelos
DR. Pedro Vargas García Universidad Politécnica de Puebla
M. en C. Gilberto García González Universidad Politécnica del Valle de México
M. en C. Rafael Díaz de Salazar Universidad Politécnica de Toluca
M. en C. Salvador Contreras Hernández Universidad Politécnica del Valle de México
M. en A. Sixto Vite Cisneros Universidad Politécnica del Valle de México

Primera Edición: 2013

DR  2013 Coordinación de Universidades Politécnicas.


Número de registro:
México, D.F.

ISBN-----------------

III de 42
ÍNDICE

INTRODUCCIÓN ............................................................................................................................................ 5
PROGRAMA DE ESTUDIOS .......................................................................................................................... 6
FICHA TÉCNICA ............................................................................................................................................. 7
DESARROLLO DE LAS PRÁCTICAS O PROYECTOS .................................................................................... 9
INSTRUMENTOS DE EVALUACIÓN............................................................................................................. 33
GLOSARIO ................................................................................................................................................... 39
BIBLIOGRAFÍA ............................................................................................................................................ 43

IV de 42
INTRODUCCIÓN

La programación concurrente es utilizada en sistemas informáticos que ejecutan múltiples


tareas, como los sistemas operativos Unix, Linux, Windows y Android, por mencionar algunos
de los más conocidos. Estos sistemas operativos tienen que controlar las condiciones de
competencia que se presentan en los procesos e hilos que se generan en los equipos que
administran. Estas condiciones de competencia pueden representar problemas en la
operación del sistema o de las aplicaciones, razón por la que se deben programar de forma
adecuada para que no se presente un problema de concurrencia, es decir, un problema
donde más de un hilo o proceso ocupen un recurso compartido al mismo tiempo.
Además de los sistemas operativos, existen otras aplicaciones que resuelven problemas
interesantes que requieren de control de concurrencia, como por ejemplo las aplicaciones
que necesitan de un mayor poder de cómputo y utilizan técnicas de programación en
paralelo. La elaboración de soluciones en paralelo implica la generación de hilos de
ejecución que actúan normalmente solicitando recursos compartidos.

La arquitectura actual de las computadoras personales, de escritorio o laptops, o bien, los


equipos con tecnologías recientes como tabletas, teléfonos y otros dispositivos móviles
utilizan procesadores de dos o más núcleos. Estos procesadores pueden correr programas
diseñados para ocupar todos sus núcleos, sin embargo la tecnología de software está
avanzando lentamente hacia la construcción de este tipo de programas. Es importante
mencionar que las aplicaciones tienen que programarse con una metodología de
programación paralela si es que se quiere aprovechar al máximo las capacidades del
hardware multi-núcleo del que disponemos en la actualidad.

El paralelismo y la concurrencia no son sinónimos pero son dos conceptos estrechamente


relacionados. La concurrencia puede presentarse en computadoras o sistemas de un solo
núcleo, mientras que el cómputo paralelo debe forzosamente presentarse en sistemas que
puedan ser capaces de ejecutar procesos, o hilos, en un mismo lapso de tiempo
estrictamente. Por supuesto, muchos de los problemas de concurrencia ocurren también en
procesadores multi-núcleo o en sistemas paralelos, de ahí la relación entre los dos
conceptos.

La asignatura de Programación Concurrente aborda los temas necesarios para que los
estudiantes aprendan la forma de programar aplicaciones que utilicen recursos
compartidos. Estos recursos compartidos deben ser utilizados por hilos o procesos que
trabajan en forma secuencial o paralela. En la asignatura el alumno aprenderá cuán
importante es el concepto de concurrencia en sistemas multi-programados o multitareas y
desarrollará las capacidades necesarias para resolver problemas que puedan paralelizarse
considerando siempre el control hilos que compiten por los mismo recursos, es decir, el
control de la concurrencia.

5 de 42
PROGRAMA DE ESTUDIO
DATOS GENERALES
N
N OM
OMBRE
BRE DEL
DEL PROGRAMA
PROGRAMA EDUCATIVO:
EDUCATIVO: INGENIERÍA EN INFORMÁTICA

OBJETIVO
Formar ingenieros competentes en la implementación y administración de soluciones de negocios ó para la investigación basadas en computadora, con una amplia visión de la ciencia y las nuevas tecnologías
OBJETIVO DEL
DEL PROGRAMA
PROGRAMA EDUCATIVO:
EDUCATIVO:
de la información, bajo el modelo de educación basado en competencias.

NOM
NOMBRE
BRE DE
DE LA
LA ASIGNATURA:
ASIGNATURA: PROGRAMACIÓN CONCURRENTE
CLAVE
CLAVE DE
DE LA
LA ASIGNATURA:
ASIGNATURA: REG-ES

OBJETIVO
OBJETIVO DE
DE LA
LA ASIGNATURA:
ASIGNATURA:
Practicar las técnicas de control de concurrencia de procesos e hilos, en ambientes computacionales donde existan condiciones de competencia por recursos compartidos, a través del diseño de programas
eficaces para garantizar su sincronización.
TOTAL
TOTAL HRS.
HRS. DEL
DEL CUATRIM
CUATRIMESTRE:
ESTRE: 120
FECHA
FECHA DE
DE EMISIÓN:
EMISIÓN: 28 de junio del 2011
UNIVERSIDADES
UNIVERSIDADES PARTICIPANTES:
PARTICIPANTES: UNIVERSIDAD POLITÉCNICA DEL VALLE DE MÉXICO

CONTENIDOS
CONTENIDOS PARA
PARA LA
LA FORMACIÓN
FORMACIÓN ESTRATEGIA
ESTRATEGIA DE
DE APRENDIZAJE
APRENDIZAJE EVALUACIÓN
EVALUACIÓN

ESPACIO
ESPACIO
TECNICAS
TECNICAS SUGERIDAS
SUGERIDAS MOVILIDAD
MOVILIDAD FORMATIVA
FORMATIVA TOTAL
TOTAL DE
DE HORAS
HORAS
EDUCATIVO
EDUCATIVO
OBSERVACIÓN
OBSERVACIÓN
MATERIALES
MATERIALES EQUIPOS
EQUIPOS TEÓRICA
TEÓRICA PRÁCTICA
PRÁCTICA
UNIDADES
UNIDADES DE
DE APRENDIZAJE
APRENDIZAJE RESULTADOS
RESULTADOS DE
DE APRENDIZAJE
APRENDIZAJE EVIDENCIAS
EVIDENCIAS
PARA
PARA LA
LA PARA
PARA EL
EL REQUERIDOS
REQUERIDOS REQUERIDOS
REQUERI DOS
PROY
PROYECTO
ECTO PRÁCTI
PRÁCTICA
CA
ENSEÑANZA
ENSEÑANZA APRENDIZAJE
APRENDIZAJE AULA
AULA LABORATORIO
LABORATORIO OTRO
OTRO NO
NO TÉCNICA
TÉCNICA INSTRUMENTO
INSTRUMENTO TO
TOTA
TALL DDEE HHOORRAS
AS
Presencial
Presencial NO
NO Presencial
Presencial Presencial
Presencial
(PROF
(PROFESOR)
ESOR) (A
(ALUM
LUMN
NO)
O) Presencial
Presencial

Pizarrón, diapositivas,
manuales de
Al término de la unidad el alumno será capaz de: Rúbrica para la
Exposición sobre el Participación en clase programación, Interface
*Fundamentar el concepto de programación EP: Reporte por escrito sobre el elaboración de
concepto de aportando ejemplos que X X
Programable de Computadora Investigación
concurrente a través de ejemplos para la resolución concepto de programación 2 1 2 1 documentos sobre 6
programación impliquen el concepto de Aplicaciones, entorno de multinúcleo, proyector. documental
de problemas que requieran más de un proceso concurrente actividades de
concurrente. programación concurrente. desarrollo para
haciendo uso de recursos compartidos. aprendizaje
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Rúbrica para la
Al término de la unidad el alumno será capaz de: EP: Documento donde explique programación, Interface
Comparación entre proceso e elaboración de
*Explicar la diferencia entre proceso e hilo desde el claramente, con elementos Exposición de proceso e Programable de Investigación
Principios de la programación concurrente hilo, destacando sus X X Computadora, proyector. 2 1 2 1 documentos sobre 6
punto de vista técnico para conocer los escenarios técnicos la diferencia entre hilo y sus diferencias. Aplicaciones, entorno de documental
similitudes y diferencias. actividades de
adecuados para cada uno. proceso e hilo. desarrollo para
aprendizaje
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Debate sobre casos prácticos
Al término de la unidad el alumno será capaz de: programación, Interface
ED: Explica de manera verbal la Expone los conceptos de donde se aplique la
*Fundamentar la diferencia entre concurrencia y Programable de Rúbrica para
diferencia entre los conceptos concurrencia y concurrencia y el paralelismo, X X Computadora, proyector. 2 0 2 0 Exposición 4
paralelismo destacando los aspectos técnicos de Aplicaciones, entorno de exposición de temas
de concurencia y paralelismo. paralelismo. indicando la diferencia entre
cada una para conocer en qué casos se aplican. desarrollo para
ambos.
programación
concurrente.

Pizarrón, diapositivas,
Al término de la unidad el alumno será capaz de: Exposición de las manuales de
ED: Explica de manera verbal en
*Explicar los conceptos de concurrencia y condiciones de Exposición de las condiciones programación, Interface
que consisten las condiciones
condiciones de competencia en problemas de competancia en de competancia en Programable de Rúbrica para
de competencia y su relación X X Computadora, proyector. 4 2 4 1 Exposición 11
sincronización a través de ejemplos para determinar problemas de problemas de sincronización Aplicaciones, entorno de exposición de temas.
con la programación
cómo resolver los problemas de competencia por sincronización entre entre procesos o hilos. desarrollo para
concurrente.
recursos compartidos. procesos o hilos. programación
concurrente.

Pizarrón, diapositivas,
manuales de
Al término de la unidad el alumno será capaz de: EP: Reporte por escrito sobre la Presentar y explicar ante Diseñar la solución a los programación, Interface
Sincronización de procesos
*Resolver problemas que presenten exclusión propuesta de solución a el grupo una serie de problemas presentados, Programable de Lista de cotejo para
X X Computadora, proyector. 4 2 4 1 Exposición y debate 11
mutua diseñando algoritmos eficaces para la problemas de sincronización problemas que requieren utilizando exclusión mutua. Aplicaciones, entorno de exposición y debate
sincronización de procesos. utilizando exclusión mutua. exclusión mutua. Trabajo en equipo. desarrollo para
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Presentar los problemas Resolver en equipo los
Al término de la unidad el alumno será capaz de: programación, Interface
de sincronización de problemas presentados Computadoras con
*Resolver problemas clásicos de concurrencia EP: Código de programas de Programable de Rúbrica para diseño
procesos para el análisis utilizando los conceptos de X X procesadores 4 0 4 2 Análisis de casos 10
desarrollando programas para implementar la sincronización de procesos. Aplicaciones, entorno de de programas.
por parte de los concurrencia, condiciones de multinúcelo, proyector.
sincronización adecuada. desarrollo para
alumnos. competencia y sección crítica.
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Al término de la unidad el alumno será capaz de:
Elaboración de programas programación, Interface
*Desarrollar soluciones de problemas de Computadoras con Rúbrica para la
EP: Programas donde se utilice Exposición del modelo concurrentes que sigan el Programable de
sincronización utilizando el modelo Fork-Join para X X procesadores 3 1 3 1 Análisis de casos. elaboración de 8
el concepto de reducción. Fork-Join. modelo Fork-Join. Trabajo en Aplicaciones, entorno de
problemas que requieren grandes cantidades de multinúcelo, proyector. programas.
equipo. desarrollo para
tiempo de cómputo.
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Al término de la unidad el alumno será capaz de: Análisis de programas programación, Interface
EP: Código de programas Desarrollar programas con Computadoras con Rúbrica para la
*Proponer soluciones a problemas de recursos con secciones críticas, Programable de
División de tareas para proceso en hilos deonde se definan secciones regiones protegidas. Trabajo X X procesadores 3 1 3 1 Análisis de casos. elaboración de 8
compartidos utilizando secciones críticas para evitar en colaboración con el Aplicaciones, entorno de
críticas. en equipo. multinúcelo, proyector. programas.
los problemas de acceso a recursos compartidos. grupo. desarrollo para
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Exposición del concepto Desarrollar programas con programación, Interface
Al término de la unidad el alumno será capaz de: EP: Código de programas donde Computadoras con Rúbrica para la
de semáforo y del control semáforos para controlar la Programable de
*Desarrollar aplicaciones utilizando semáforos para se utilicen semáforos para la X X procesadores 3 1 3 1 Análisis de casos. elaboración de 8
de sincronización concurrencia entre hilos. Aplicaciones, entorno de
problemas de uso de recursos compartidos. sincronización entre hilos. multinúcelo, proyector. programas.
utilizando esta técnica. Trabajo en equipo. desarrollo para
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Al término de la unidad el alumno será capaz de:
Exposición de cómputo programación, Interface
*Explicar las características del paralelismo en los Exposición sobre el cómputo Computadoras con
paralelo en Programable de Rúbrica para
procesadores multi-núcleo por medio de casos EC: Reporte por escrito. paralelo y aplicaciones en X X procesadores 2 1 2 1 Exposición 6
procesadores Aplicaciones, entorno de exposición de temas
prácticos para conocer las ventajas que esta procesadores multinúcleo. multinúcelo, proyector.
multinúcleo. desarrollo para
tecnología nos ofrece.
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Al término de la unidad, el alumno será capaz de: Debate sobre la Ejercicios de programación programación, Interface
EP: Código de programas donde Computadoras con Rúbrica para la
Cómputo paralelo *Programar aplicaciones con descomposición descomposición con descomposición funcional Programable de
se realice descomposición X X procesadores 2 1 2 1 Análisis de casos. elaboración de 6
funcional y descomposición de datos para resolver funcional y de datos, así para los hilos de una Aplicaciones, entorno de
funcional y de datos. multinúcelo, proyector. programas.
problemas con paralelismo. como sus aplicaciones. aplicación. desarrollo para
programación
concurrente.

Pizarrón, diapositivas,
manuales de
Al término de la unidad el alumno será capaz de: programación, Interface
Exponer una breve Exposición de los tipos de Computadoras con
*Fundamentar los diferentes tipos de cómputo ED: Reporte de investigación Programable de Investigación Rúbrica para reportes
introducción de los tipos cómputo paralelo. Trabajo en X X procesadores 2 0 2 0 4
paralelo a través de ejemplos para conocer cuál es el sobre los tipos de paralelismo Aplicaciones, entorno de documental de investigación
de cómputo paralelo. equipo. multinúcelo, proyector.
más adecuado para cada tipo de problema. desarrollo para
programación
concurrente.

Pizarrón, diapositivas,
Debate sobre el número manuales de
Debate sobre el número de
Al término de la unidad el alumno será capaz de: de hilos adecuado para programación, Interface
hilos adecuado para alguna Computadoras con Rúbrica para la
*Determinar el número de hilos adecuado en alguna aplicación Programable de
EP: Código de programas aplicación concurrente. X X procesadores 4 1 4 1 Análisis de casos. elaboración de 10
programas concurrentes a través del análisis de concurrente. Considerar Aplicaciones, entorno de
Considerar la planificación del multinúcelo, proyector. programas.
rendimiento, para lograr la eficacia en su ejecución. la planificación del desarrollo para
sistema operativo.
sistema operativo. programación
concurrente.

Pizarrón, diapositivas,
manuales de
Al término de la unidad: el alumno será capaz de: Explicación de la Investigación sobre el trabajo programación, Interface
Cómputo paralelo en procesadores multinúcleo EP: Código de programas Computadoras con Rúbrica para la
*Programar hilos con comunicación entre ellos, para reducción en problemas colaborativo entre hilos X X
Programable de
aplicando el modelo Fork-Join y procesadores 4 1 4 1 Análisis de casos. elaboración de 10
desarrollar trabajo colaborativo y obtener un de programación usando el concepto de Aplicaciones, entorno de
el concepto de reducción. multinúcelo, proyector. programas.
resultado único. multihilo. Reducción. desarrollo para
programación
concurrente.
6 de 42
Pizarrón, diapositivas,
Al término de la unidad, el alumno será capaz de: manuales de
*Desarrollar programas que resuelvan problemas Mostrar como se programación, Interface
EP: Programas que utilicen Computadoras con Rúbrica para la
mediante cómputo paralelo en procesadores elaboran los programas Programar aplicaciones en Programable de
todos los núcleos de un X X procesadores 4 2 4 2 Análisis de casos. elaboración de 12
multinúcleo para obtener un mejor rendimiento en paralelos para ejecución paralelo. Trabajo en equipo. Aplicaciones, entorno de
procesador multinúcleo. multinúcelo, proyector. programas.
problemas que requieren grandes cantidades de en multiples núcleos. desarrollo para
cómputo. programación
concurrente.
FICHA TÉCNICA

GESTIÓ
GESTIÓN DE PROYECTOS DE TECNOLOGÍ
TECNOLOGÍA

Nombre: Programación concurrente


Clave: OP-ES
Justificación: La programación concurrente es utilizada para solucionar problemas en donde los
sistemas contienen programas que hacen uso de recursos compartidos. Para que estos
programas funcionen correctamente se tienen que sincronizar adecuadamente. Esta
sincronización es necesaria en múltiples entornos como en los sistemas operativos, por
ejemplo. Sin embargo, hoy en día son comunes las computadoras con multi núcleos, por
lo que se requiere que la programación de aplicaciones utilice esta arquitectura al
máximo, a través de programación paralela y concurrente.
Objetivo: Formar ingenieros competentes en la implementación y administración de soluciones
de negocios o para la investigación basadas en computadora, con una amplia visión de
Habilidades: la ciencia y las nuevas tecnologías de la información, bajo el modelo de educación
Programar sistemas de información usando lenguajes de programación y considerando
las características de diseño para automatizar los procesos..
Competencias Planear, organizar, dirigir y controlar actividades realizadas en una organización.
genéricas a desarrollar: Expresión oral y escrita.

Capacidades a desarrollar en la asignatura Competencias a las que contribuye la asignatura


• Diseñar soluciones a problemas de concurrencia. • Desarrollar aplicaciones de software mediante
• Desarrollar programas con sincronización de procesos lenguajes especializados para hacer eficientes
e hilos. los procesos de las organizaciones.
• Implementar el control de concurrencia en
procesadores multi-núcleo.

HORAS TEORÍA HORAS PRÁCTICA


Unidades de aprendizaje No No
Presencial presencial Presencial presencial
Principios de la
6 2 6 2
programación concurrente
Estimación de tiempo (horas)
Sincronización de procesos 12 4 12 4
necesario para transmitir el
aprendizaje al alumno, por
División de tareas para
Unidad de Aprendizaje: 9 3 9 3
proceso en hilos

Cómputo paralelo 6 2 6 2

Cómputo paralelo en
12 4 12 4
procesadores multi-núcleo
Total de horas por cuatrimestre: 120
Total de horas por semana: 8
Créditos: 8

7 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

ACTIVIDAD 1

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
1. Principios de la programación concurrente.
Aprendizaje:

Nombre de la práctica o Mesa redonda sobre las características de la programación concurrente


proyecto:
Número: 1/4 Duración (horas) : 2
Al término de la unidad, el alumno será capaz de:
Resultado de *Fundamentar el concepto de programación concurrente a través de
aprendizaje: ejemplos para la resolución de problemas que requieran más de un
proceso haciendo uso de recursos compartidos.

Requerimientos (Material Pizarrón, diapositivas.


o equipo):
Actividades a desarrollar:
1) El profesor introduce el tema mediante exposición del concepto de programación concurrente.
2) El alumno investiga las características de la programación concurrente:
- Aplicaciones en Sistemas operativos
- Lenguajes de programación
- Aplicaciones en la programación de sistemas
- Cómputo paralelo
3) Debate sobre las aplicaciones de la programación concurrente.
4) El alumno elabora un ensayo sobre los temas abordados en la actividad y con las conclusiones
a las que se llegó.
5) El profesor hace una retroalimentación al alumno basado en las conclusiones.
Evidencias a las que contribuye el desarrollo de la actividad:

EC: Ensayo con los puntos solicitados en la investigación y aportaciones en el debate.


ED, EC: Participación en el debate
EA: Actitud, responsabilidad, asistencia y puntualidad.

8 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

ACTIVIDAD2

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
1. Principios de la programación concurrente.
Aprendizaje:

Nombre de la práctica o
Concepto y características de Proceso e Hilo.
proyecto:

Número: 2/4 Duración (horas) : 2

Al término de la unidad, el alumno será capaz de:


Resultado de
*Explicar la diferencia entre proceso e hilo desde el punto de vista técnico
aprendizaje:
para conocer los escenarios adecuados para cada uno.

Requerimientos (Material
Pizarrón, diapositivas, manuales de programación, computadoras.
o equipo):

Actividades a desarrollar:
1. El alumno analiza los conceptos de proceso e hilo.
2. El alumno explica las características de un hilo y como se puede crear a partir de un proceso.
Para ello deberá exponer algunos ejemplos de código.

Evidencias a las que contribuye el desarrollo de la actividad:

EP: Códigos de los programas de ejemplo donde se muestre como generar hilos.
EC: Reporte por escrito sobre el funcionamiento de los programas.
EA: Actitud, responsabilidad, asistencia y puntualidad.

9 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

ACTIVIDAD3

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
1. Principios de la programación concurrente.
Aprendizaje:

Nombre de la práctica o
Problemas que requieren de programación concurrente para su solución.
proyecto:

Número: 3/4 Duración (horas) : 2


Al término de la unidad, el alumno será capaz de:
Resultado de *Fundamentar el concepto de programación concurrente a través de
aprendizaje: ejemplos para la resolución de problemas que requieran más de un
proceso haciendo uso de recursos compartidos.

Requerimientos (Material Pizarrón, diapositivas, manuales de programación,


o equipo): computadoras,Lenguaje de programación, entorno de desarrollo.

Actividades a desarrollar:
1. Los alumnos trabajarán en equipo para seleccionar un problema de programación en el
que se requiera aplicar control de concurrencia.
2. Cada equipo presentará las conclusiones del problema analizado en un debate con los
demás equipos.
3. Cada equipo elaborará un reporte por escrito.
Evidencias a las que contribuye el desarrollo de la actividad:

EC: Reporte por escrito sobre en análisis del problema de control de concurrencia.
ED: Participación en el debate.
EA: Actitud, responsabilidad, asistencia y puntualidad.

10 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

ACTIVIDAD4

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
1. Principios de la programación concurrente.
Aprendizaje:

Nombre de la práctica o
Cómputo paralelo y programación concurrente.
proyecto:

Número: 4/4 Duración (horas) : 2

Al término de la unidad, el alumno será capaz de:


Resultados de
*Fundamentar la diferencia entre concurrencia y paralelismo destacando
aprendizaje:
los aspectos técnicos de cada una para conocer en qué casos se aplican.

Requerimientos (Material Pizarrón, diapositivas, manuales de programación, computadoras,


o equipo): lenguajes de programación.

Actividades a desarrollar:
1. Analizar en equipos las características de las aplicaciones con control de concurrencia y
programación paralela seleccionadas para esta actividad, destacando los lenguajes de
programación en que están desarrolladas, los recursos adicionales utilizados, la plataforma en
que funciona y requerimientos para su implantación.

2. El alumno realzará una exposición de los ejemplos analizados y destacará las diferencias y
coincidencias entre el cómputo paralelo y la programación concurrente.

Evidencias a las que contribuye el desarrollo de la actividad:

ED: Exposición de análisis de casos de estudio.


EA: Actitud, responsabilidad, asistencia y puntualidad.
EC: Cuestionario de la unidad.

11 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

ACTIVIDAD 1

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
2. Sincronización de procesos.
Aprendizaje:

Nombre de la práctica o
Condiciones de competencia
proyecto:

Número: 1/4 Duración (horas) : 4


Al término de la unidad, el alumno será capaz de:
*Explicar los conceptos de concurrencia y condiciones de competencia
Resultado de
en problemas de sincronización a través de ejemplos para determinar
aprendizaje:
cómo resolver los problemas de competencia por recursos
compartidos.

Requerimientos (Material
Pizarrón, diapositivas.
o equipo):

Actividades a desarrollar:
1. El profesor que son las condiciones de competencia entre procesos.
2. El alumno investiga y expone 2 ejemplos de donde existan condiciones de competencia
entre procesos o hilos.
3. Debate sobre las aplicaciones de la programación concurrente.
4. El alumno expone de manera verbal los resultados obtenidos en esta actividad.
Evidencias a las que contribuye el desarrollo de la actividad:

EC: Código de los programas.


ED: Exposición de los programas desarrollados en esta actividad.
EA: Actitud, responsabilidad, asistencia y puntualidad.

12 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

ACTIVIDAD2

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
2. Sincronización de procesos.
Aprendizaje:

Nombre de la práctica o
Concepto y características de Proceso e Hilo.
proyecto:

Número: 2/4 Duración (horas) : 4

Al término de la unidad, el alumno será capaz de:


Resultado de
*Resolver problemas que presenten exclusión mutua diseñando
aprendizaje:
algoritmos eficaces para la sincronización de procesos.

Requerimientos (Material
Pizarrón, diapositivas, manuales de programación, computadoras.
o equipo):

Actividades a desarrollar:
1. El profesor expone ejemplos de problemas de sincronización entre procesos que requieren
exclusión mutua.
2. El alumno desarrolla el programa para solucionar el problema del “Directorio Spooler”, el
cual es un problema clásico de sincronización entre procesos.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Códigos de los programas de ejemplo donde se muestre como generar hilos.
EC: Explicación de manera verbal, sobre el funcionamiento de los programas.
EA: Actitud, responsabilidad, asistencia y puntualidad.

13 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

ACTIVIDAD3

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
2. Sincronización de procesos.
Aprendizaje:

Nombre de la práctica o
Bloques de código restringido por secciones críticas.
proyecto:

Número: 3/4 Duración (horas) : 4

Al término de la unidad, el alumno será capaz de:


Resultado de
*Resolver problemas clásicos de concurrencia desarrollando programas
aprendizaje:
para implementar la sincronización adecuada.

Requerimientos (Material Pizarrón, diapositivas, manuales de programación,


o equipo): computadoras,Lenguaje de programación, entorno de desarrollo.

Actividades a desarrollar:
1. El profesor explica el concepto de sección crítica en la sincronización entre procesos.
2. El alumno elabora programas con segmentos de código protegido con secciones
críticas.
3. El alumno expone los resultados de sus programas.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Códigos de los programas.


EC: Explicación de manera verbal, sobre el funcionamiento de los programas.
EA: Actitud, responsabilidad, asistencia y puntualidad.

14 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

ACTIVIDAD4

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
2. Sincronización de procesos.
Aprendizaje:

Nombre de la práctica o
Cómputo paralelo y programación concurrente.
proyecto:

Número: 4/4 Duración (horas) : 4

Al término de la unidad, el alumno será capaz de:


Resultados de
*Resolver problemas clásicos de concurrencia desarrollando programas
aprendizaje:
para implementar la sincronización adecuada.

Requerimientos (Material Pizarrón, diapositivas, manuales de programación, computadoras,


o equipo): lenguajes de programación.

Actividades a desarrollar:
1. El profesor explica los problemas de control de concurrencia clásicos.
2. El alumno desarrolla una investigación sobre los problemas de concurrencia más
conocidos o importantes.
3. El alumno elabora un reporte de la investigación realizada.

Evidencias a las que contribuye el desarrollo de la actividad:

EC: Exposición sobre los resultados de la investigación realizada.


EA: Actitud, responsabilidad, asistencia y puntualidad.
EC: Cuestionario de la unidad.

15 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 1

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
3. División de tareas para proceso en hilos
Aprendizaje:

Nombre de la práctica o
Desarrollo de programas del lado del servidor.
proyecto:

Número: 1/6 Duración (horas) : 2


Al término de la unidad, el alumno será capaz de:
Resultado de *Explicar los modelos de programación concurrente: Fork Join y Paso de
aprendizaje: mensajes, a través de ejemplos para conocer dos formas de trabajo en la
programación con múltiples hilos.
Pizarrón, diapositivas, manuales de programación, computadora,
Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) Revisión de la API OpenMp
2) El profesor desarrolla programas de ejemplo con OpenMp para generar hilos.
3) Identificar el comportamiento de los hilos en el modelo Fork-Join.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código de los programas de ejemplo para generar hilos de ejecución.


ED: Exposición sobre la forma de trabajo del modelo Fork-Join.
EA: Actitud, responsabilidad, asistencia y puntualidad.

16 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 2

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
3. División de tareas para proceso en hilos
Aprendizaje:

Nombre de la práctica o
Aceleración en la ejecución de programas.
proyecto:

Número: 2/6 Duración (horas) : 2


Al término de la unidad, el alumno será capaz de:
Resultado de *Explicar los modelos de programación concurrente: Fork Join y Paso de
aprendizaje: mensajes, a través de ejemplos para conocer dos formas de trabajo en la
programación con múltiples hilos.
Pizarrón, diapositivas, manuales de programación, computadora,
Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) Desarrollar un programa secuencial para calcular el área bajo la curva, correspondiente a la
función: 4.0/1+x2
El programa deberá contener el cálculo de tiempo que tarda en realizar la operación para
1000 millones de ciclos.
2) Desarrolle el programa en paralelo para resolver el problema anterior. Calcule el tiempo que
emplea en obtener la solución con:
- 4 hilos
- 8 hilos
- 20 hilos
Explique qué ocurre.
Evidencias a las que contribuye el desarrollo de la actividad:
EP: Programas para la autenticación e inicio de sesión de usuario.
ED: Exposición del sistema de autenticación
EC: Reporte de la aceleración para el programa desarrollado es esta actividad
EA: Actitud, responsabilidad, asistencia y puntualidad.

17 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 3

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
3. División de tareas para proceso en hilos
Aprendizaje:

Nombre de la práctica o
Repartición de carga de trabajo.
proyecto:

Número: 3/6 Duración (horas) : 2


Al término de la unidad, el alumno será capaz de:
Resultado de *Explicar los modelos de programación concurrente: Fork Join y Paso de
aprendizaje: mensajes, a través de ejemplos para conocer dos formas de trabajo en la
programación con múltiples hilos.
Pizarrón, diapositivas, manuales de programación, computadora,
Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
 Analizar el problema la factorización de números primos. Este problema consiste en
determinar los factores primos a partir de un número, es decir, dado el número X,
determinar cuáles números se tuvieron que multiplicar entre sí para obtener X.
 Realizar el programa que calcula los factores primos de un número primo. El dato de
entrada es el número primo X y los datos de salida son los factores primos de X.
 Repartir la carga del programa en hilos.

Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código de los programas.


ED: Exposición sobre los programas desarrollados.
EA: Actitud, responsabilidad, asistencia y puntualidad.

18 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 4

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
3. División de tareas para proceso en hilos
Aprendizaje:

Nombre de la práctica o
Problema de los Filósofos Comensales
proyecto:

Número: 4/6 Duración (horas) : 2


Al término de la unidad, el alumno será capaz de:
*Proponer soluciones a problemas de recursos compartidos utilizando
Resultado de
secciones críticas para evitar los problemas de acceso a recursos
aprendizaje:
compartidos.

Pizarrón, diapositivas, manuales de programación, computadora,


Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) El profesor expone el problema de los filósofos comensales, el cual es un problema clásico del
diseño de sistemas operativos para el control de concurrencia entre procesos.
2) El profesor expone el concepto de sección crítica.
3) El alumno desarrolla el programa para la simulación de la solución al problema de los filósofos
comensales, utilizando secciones críticas con OpenMp.

Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código de los programas. Software.


ED: Exposición de la solución.
EA: Actitud, responsabilidad, asistencia y puntualidad.

19 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 5

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
3. División de tareas para proceso en hilos
Aprendizaje:

Nombre de la práctica o
Control de acceso de Hilos a recursos compartidos.
proyecto:

Número: 5/6 Duración (horas) : 2

Al término de la unidad, el alumno será capaz de:


Resultado de
*Desarrollar aplicaciones utilizando semáforos para problemas de uso de
aprendizaje:
recursos compartidos.

Pizarrón, diapositivas, manuales de programación, computadora,


Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) El profesor explica el problema clásico de concurrencia denominado “El barbero dormilón”.
2) El alumno elabora el programa utilizando semáforos para simular el control de concurrencia
del problema mencionado.

Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código del programa.


ED: Exposición de la solución.
EA: Actitud, responsabilidad, asistencia y puntualidad.

20 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 6

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
3. División de tareas para proceso en hilos
Aprendizaje:

Nombre de la práctica o
Semáforos.
proyecto:

Número: 6/6 Duración (horas) : 2

Al término de la unidad, el alumno será capaz de:


Resultado de
*Desarrollar aplicaciones utilizando semáforos para problemas de uso de
aprendizaje:
recursos compartidos.

Pizarrón, diapositivas, manuales de programación, computadora,


Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) El profesor explica el concepto de semáforo binario.
2) El alumno desarrolla el programa para solucionar el problema de los filósofos comensales
utilizando semáforos.

Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código del programa.


ED: Exposición del programa.
EA: Actitud, responsabilidad, asistencia y puntualidad.
EC: Cuestionario de la unidad.

21 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 1

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
4. Cómputo paralelo
Aprendizaje:

Nombre de la práctica o
Características del cómputo paralelo
proyecto:

Número: 1/5 Duración (horas) : 1


Al término de la unidad, el alumno será capaz de:
Resultado de *Explicar las características del paralelismo en los procesadores multi-
aprendizaje: núcleo por medio de casos prácticos para conocer las ventajas que esta
tecnología nos ofrece.
Pizarrón, diapositivas, manuales de programación, computadora,
Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
Desarrollar una investigación en bases de datos de revistas indexadas en Internet, sobre:
1) Las características del cómputo paralelo como técnica para mejorar la tasa de trabajos.
2) Las características del cómputo paralelo como un mecanismo para repartir la carga de trabajo.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Ensayo
EA: Actitud, responsabilidad, asistencia y puntualidad.

22 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 2

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
4. Cómputo paralelo
Aprendizaje:

Nombre de la práctica o Análisis de problemas que pueden ser solucionados por medio de cómputo
proyecto: paralelo.

Número: 2/5 Duración (horas) : 1


Al término de la unidad, el alumno será capaz de:
Resultado de *Explicar las características del paralelismo en los procesadores multi-
aprendizaje: núcleo por medio de casos prácticos para conocer las ventajas que esta
tecnología nos ofrece.
Pizarrón, diapositivas, manuales de programación, computadora,
Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) Elaborar la solución a problemas de paralelismo que impliquen concurrencia, que el profesor
designe por equipos de trabajo.
2) Elabore reporte por escrito de la solución empleada incluyendo el código de los programas.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Reporte por escrito


ED: Trabajo en equipo
EA: Participación, trabajo en equipo
EA: Actitud, responsabilidad, asistencia y puntualidad.

23 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 3

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
4. Cómputo paralelo
Aprendizaje:

Nombre de la práctica o
Descomposición funcional y de datos.
proyecto:

Número: 3/5 Duración (horas) : 2

Al término de la unidad, el alumno será capaz de:


Resultado de
*Programar aplicaciones con descomposición funcional y descomposición
aprendizaje:
de datos para resolver problemas con paralelismo.

Pizarrón, diapositivas, manuales de programación, computadora,


Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) El profesor presenta a los estudiantes una serie de problemas que requieren de cómputo
paralelo y concurrente para su solución óptima.
2) Los alumnos desarrollan los programas utilizando hilos múltiples.

Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código de programas.


EA: Participación, trabajo en equipo.
EA: Actitud, responsabilidad, asistencia y puntualidad.

24 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 4

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
4. Cómputo paralelo
Aprendizaje:

Nombre de la práctica o
Análisis de rendimiento
proyecto:

Número: 4/5 Duración (horas) : 2

Al término de la unidad, el alumno será capaz de:


Resultado de
*Programar aplicaciones con descomposición funcional y descomposición
aprendizaje:
de datos para resolver problemas con paralelismo.

Pizarrón, diapositivas, manuales de programación, computadora,


Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) Calcule el rendimiento de las aplicaciones desarrolladas en las prácticas anteriores.
2) Los alumnos elaboran un reporte de los resultados obtenidos.
3) Incluir en el reporte una sección donde expliquen cómo se hace el análisis del rendimiento de
las aplicaciones paralelas.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Reporte.
EA: Participación, trabajo en equipo.
EA: Actitud, responsabilidad, asistencia y puntualidad.

25 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 5

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
4. Cómputo paralelo
Aprendizaje:

Nombre de la práctica o
Tipos de paralelismo
proyecto:

Número: 5/5 Duración (horas) : 2


Al término de la unidad, el alumno será capaz de:
Resultado de *Fundamentar los diferentes tipos de cómputo paralelo a través de
aprendizaje: ejemplos para conocer cuál es el más adecuado para cada tipo de
problema.
Pizarrón, diapositivas, manuales de programación, computadora,
Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) El alumno desarrolla una investigación sobre los tipos de paralelismo que existen, en
procesadores multi núcleo, máquinas paralelas y clusters.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Reporte escrito


EA: Participación, trabajo en equipo
EA: Actitud, responsabilidad, asistencia y puntualidad.
EC: Cuestionario de la unidad.

26 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 1

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
5. Cómputo paralelo en procesadores multi-núcleo
Aprendizaje:

Nombre de la práctica o
Optimización de la tasa de trabajos en procesadores multi-núcleo
proyecto:

Número: 1/5 Duración (horas) : 2

Al término de la unidad el alumno será capaz de:


Resultado de
*Determinar el número de hilos adecuado en programas concurrentes a
aprendizaje:
través del análisis de rendimiento, para lograr la eficacia en su ejecución.

Pizarrón, diapositivas, manuales de programación, computadora,


Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) Seleccionar un problema de cómputo que implique concurrencia y paralelismo
2) Desarrollar el programa optimizando el número de tareas por unidad de tiempo
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código de programa.


ED: Exposición de la solución.
EA: Actitud, responsabilidad, asistencia y puntualidad.

27 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 2

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
5. Cómputo paralelo en procesadores multi-núcleo
Aprendizaje:

Nombre de la práctica o
Análisis de rendimiento
proyecto:

Número: 2/5 Duración (horas) : 2

Al término de la unidad, el alumno será capaz de:


Resultado de
*Determinar el número de hilos adecuado en programas concurrentes a
aprendizaje:
través del análisis de rendimiento, para lograr la eficacia en su ejecución.

Pizarrón, diapositivas, manuales de programación, computadora,


Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) Determinar el número de hilos adecuado para algún problema de programación que pueda
resolverse en paralelo.
2) Analizar el tiempo de ejecución del programa variando la cantidad de hilos
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Códigos del programa.


ED: Reporte de resultados.
EA: Actitud, responsabilidad, asistencia y puntualidad.

28 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 3

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
5. Cómputo paralelo en procesadores multi-núcleo
Aprendizaje:

Nombre de la práctica o
Trabajo colaborativo entre hilos
proyecto:

Número: 3/5 Duración (horas) : 4

Al término de la unidad, el alumno será capaz de:


Resultado de
*Programar hilos con comunicación entre ellos, para desarrollar trabajo
aprendizaje:
colaborativo y obtener un resultado único.

Pizarrón, diapositivas, manuales de programación, computadora,


Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) El profesor asignará un problema de programación a cada equipo de alumnos.
2) El quipo deberá analizar el problema. Deberá descomponer el problema en las partes que
puedan ser atendidas o ejecutadas por un hilo.
3) Desarrollar el programa.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código del programa.


ED: Exposición de la solución.
EA: Actitud, responsabilidad, asistencia y puntualidad.

29 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 4

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
5. Cómputo paralelo en procesadores multi-núcleo
Aprendizaje:

Nombre de la práctica o
Resolución de problema mediante técnicas de paralelismo
proyecto:

Número: 4/5 Duración (horas) : 4


Al término de la unidad, el alumno será capaz de:
Resultado de *Desarrollar programas que resuelvan problemas mediante cómputo
aprendizaje: paralelo en procesadores multi-núcleo para obtener un mejor rendimiento
en problemas que requieren grandes cantidades de cómputo.
Pizarrón, diapositivas, manuales de programación, computadora,
Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) El profesor asigna un problema de programación a cada quipo de alumnos.
2) Los equipos tienen que estar conformados por cuatro integrantes.
3) Desarrollar el programa.
4) El equipo analizará el problema y deberá proponer la solución presentando ante el grupo
programa desarrollado
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código de programa.


ED: Exposición de resultado.
EA: Actitud, responsabilidad, asistencia y puntualidad.

30 de 42
DESARROLLO DE LA ACTIVIDAD DE APRENDIZAJE

PRÁCTICA 5

Nombre de la asignatura: Programación Concurrente

Nombre de la Unidad de
5. Cómputo paralelo en procesadores multi-núcleo
Aprendizaje:

Nombre de la práctica o Análisis comparativo de rendimiento entre programas paralelos y sus


proyecto: equivalentes en versión secuencial.

Número: 5/5 Duración (horas) : 4


Al término de la unidad, el alumno será capaz de:
Resultado de *Desarrollar programas que resuelvan problemas mediante cómputo
aprendizaje: paralelo en procesadores multinúcleo para obtener un mejor rendimiento
en problemas que requieren grandes cantidades de cómputo.
Pizarrón, diapositivas, manuales de programación, computadora,
Requerimientos (Material
lenguajes de programación, Interface Programable de Aplicaciones,
o equipo):
entorno de desarrollo.
Actividades a desarrollar:
1) El profesor asigna problemas de programación que pueden ser resueltos con técnica de
programación paralela.
2) Los alumnos desarrollar dos soluciones para el problema; una secuencial y la otra en
paralelo.
3) Determinar el tiempo que tarda cada una de las soluciones en emitir el resultado. (Tiempo
de ejecución de los programas).
4) Escribir las conclusiones de lo observado en el comparativo de las dos versiones
desarrolladas.
Evidencias a las que contribuye el desarrollo de la actividad:

EP: Código de los programas.


ED: Exposición del análisis comparativo de las versiones secuencial y paralela.
EA: Actitud, responsabilidad, asistencia y puntualidad.
EC: Cuestionario de la unidad.

31 de 42
32 de 42
CUESTIONARIOGUIA
CUESTIONARIOGUIA Logotipo de
la
(Cuestionario) Universidad

UNIVERSIDAD POLITÉCNICA DE ________________________

NOMBRE DE LA ASIGNATURA __PROGRAMACIÓN


__PROGRAMACIÓN CONCURRENTE_
CONCURRENTE_

Conteste las siguientes preguntas:

1. ¿Qué es la concurrencia?

2. ¿Cuál es la diferencia entre concurrencia y paralelismo?

3. ¿Qué es hilo?

4. ¿Cuál es la diferencia entre proceso e hilo?

5. ¿Cómo se puede controlar el número de hilos que ejecutan una tarea?

6. ¿Cuál es la función del planificador de procesos del sistema operativo en la


ejecución de un programa en procesadores multi-núcleo?

7. ¿Qué son las condiciones de competencia?

8. ¿En qué consiste la exclusión mutua?

9. ¿Qué es una sección crítica?

10. ¿Cómo se usan los semáforos binarios?

11. ¿Cómo se programa la comunicación entre hilos?

33 de 42
Logotipo de
LISTA DE COTEJO PARA CUESTIONARIO la
Universidad

UNIVERSIDAD POLITÉCNICA DE ________________________

NOMBRE DE LA ASIGNATURA:
ASIGNATURA: PROGRAMACIÓN CONCURRENTE

DATOS GENERALES
Nombre(s) del alumno(s) y/o Equipo: Firma del alumno(s):

Producto: Nombre o tema de la Tarea: Fecha:

LISTA DE COTEJO PARA CUESTIONARIOS


UNIDAD 1:

Asignatura: Grupo: Periodo cuatrimestral:


PROGRAMACIÓN CONCURRENTE

Nombre del Docente: Firma del Docente:

Valor del Valor


reactivo Característica a cumplir (Reactivo) Obtenido
OBSERVACIONES

Presentación. El reporte cumple con los requisitos de: Buena


presentación portada (nombre de la escuela, logotipo, carrera,
5%
asignatura, nombre del docente, nombre(s) de alumno(s), grupo, lugar y
fecha de entrega).

5% Ortografía (cero errores ortográficos).

10%
10% Responsabilidad. Entrego el reporte en tiempo y forma.
Desarrollo
80%
80% a. Solución correcta de los reactivos (cada reactivo vale 8%)

100.% CALIFICACIÓN:

34 de 42
Logotipo de
LISTA DE COTEJO PARA ELABORACION DE REPORTE / INFORME / ACTA la
Universidad

UNIVERSIDAD POLITÉCNICA DE ________________________

NOMBRE DE LA ASIGNATURAPROGRAMACIÓN
ASIGNATURAPROGRAMACIÓN CONCURRENTE

DATOS GENERALES
Asignatura:PROGRAMACION
Asignatura:PROGRAMACION CONCURRENTE Periodo cuatrimestral:

Nombre de la empresa visitada:


Producto: Fecha:

INSTRUCCIONES
Revisar los documentos o actividades que se solicitan y marque en los apartados “SI” cuando la evidencia a evaluar se cumple; en caso contrario marque “NO”.
En la columna “OBSERVACIONES” ocúpela cuando tenga que hacer comentarios referentes a lo observado.
El Reporte incluye los archivos electrónicos de diseño de vistas para web.

Valor del CUMPLE


reactivo Característica a cumplir (Reactivo) OBSERVACIONES
SI NO
Presentación. El reporte cumple con los requisitos de: Buena presentación
5% portada (nombre de la escuela, logotipo, carrera, asignatura, nombre del
docente, nombre(s) de alumno(s), grupo, lugar y fecha de entrega).

5% Ortografía (cero errores ortográficos).

5% Maneja expresión escrita apropiada.

30%
30% Evaluación conceptual. Descripción correcta de conceptos.
Contenidos
10%
10% b. Ideas claras y comprensibles.
10%
10% c. Capacidad organizativa.
10%
10% c. Coherencia, precisión y sencillez en la redacción.
Formato.
Formato.
5%
a. Se apega a los requisitos solicitados.
5% b. Diseño (Visualización).

2 Responsabilidad. Entregó el reporte en tiempo y forma.

100.% CALIFICACIÓN:

35 de 42
Logotipo de
LISTA DE COTEJO PARA REVISIÓN DE PROGRAMAS la
Universidad

UNIVERSIDAD POLITÉCNICA DE ________________________

NOMBRE DE LA ASIGNATURA:
ASIGNATURA: PROGRAMACIÓN CONCURRENTE

INSTRUCCIONES
Revisar los documentos o actividades que se solicitan y marque en los apartados “SI” cuando la evidencia a evaluar se cumple; en caso contrario marque “NO”.
En la columna “OBSERVACIONES” ocúpela cuando tenga que hacer comentarios referentes a lo observado.

Valor del CUMPLE


reactivo Característica a cumplir (Reactivo) OBSERVACIONES
SI NO
5% Puntualidad para iniciar y concluir la explicación del programa.

10%
10% Limpieza de código.
código Código alineado correctamente.

Estándares. Respetar los estándares que se definan para el código de


10%
10% programas y bases de datos.

40%
40% Funcionamiento. Programas funcionando correctamente, sin errores.

Portada: Nombre de la escuela (logotipo), Carrera, Asignatura, Profesor,


5% Alumnos, Matrícula, Grupo, Lugar y fecha de entrega.

5% Ortografía en documentación (cero errores ortográficos).

Exposición.
Exposición
5% a. Utiliza las diapositivas como apoyo, no lectura total.
b. Desarrollo del tema fundamentado y con una secuencia
5% estructurada.
c. Organización de los integrantes del equipo.
5% d. Expresión no verbal (gestos, miradas y lenguaje corporal).
5% Preparación de la exposición. Dominio del tema. Habla con seguridad.

5% Responsabilidad. Entrego el reporte en tiempo y forma.

CALIFICACIÓN:

36 de 42
Logotipo de
GUIA DE OBSERVACIÓN PARA EXPOSICIONES INDIVIDUALES/EQUIPO la
Universidad

UNIVERSIDAD POLITÉCNICA DE ________________________

NOMBRE DE LA ASIGNATURA:
ASIGNATURA: PROGRAMACIÓN CONCURRENTE

INSTRUCCIONES
Revisar los documentos o actividades que se solicitan y marque en los apartados “SI” cuando la evidencia a evaluar se cumple; en caso contrario marque “NO”.
En la columna “OBSERVACIONES” ocúpela cuando tenga que hacer comentarios referentes a lo observado.

Valor del CUMPLE


reactivo Característica a cumplir (Reactivo) OBSERVACIONES
SI NO
10% Puntualidad para iniciar y concluir la exposición.

Esquema de diapositiva.
diapositiva Colores y tamaño de letra apropiada. Sin saturar
10% las diapositivas de texto.

Portada: Nombre de la escuela (logotipo), Carrera, Asignatura, Profesor,


5% Alumnos, Matrícula, Grupo, Lugar y fecha de entrega.

10% Ortografía (cero errores ortográficos).

Exposición.
Exposición
10%
10% a. Utiliza las diapositivas como apoyo, no lectura total.
b. Desarrollo del tema fundamentado y con una secuencia
15%
15% estructurada.
5% c. Organización de los integrantes del equipo.
5% d. Expresión no verbal (gestos, miradas y lenguaje corporal).

20% Preparación de la exposición. Dominio del tema. Habla con seguridad.

5% Respuestas adecuadas a los cuestionamientos del grupo.

5% Responsabilidad. Entrego el reporte en tiempo y forma.

37 de 42
100.% CALIFICACIÓN:

GLOSARIO

A
Amdahl,
Amdahl, Ley.
Ley.Modelo matemático que describe la relación entre la aceleración de un
algoritmo paralelo y su equivalente en serie.

API. Iniciales, en inglés, de Interfaz Programable de Aplicaciones.

Asincrónico,
Asincrónico, proceso.
proceso Proceso que se ejecuta en segundo plano.

ASP.
ASP (Active Server Pages) Páginas activas de servidor, son programas desarrollados en
lenguajes .NET, es decir, C#, Visual Basic, J# o C++ y que agregan funcionalidad a un sitio
web del lado del servidor.

C
Clase.
Clase Es un contenedor de uno o más datos y las operaciones sobre ellos
(funciones/métodos).

Cómputo paralelo. Ejecución de dos o más procesos en un mismo lapso tiempo.

Concurrencia. Ejecución de dos o más procesos o hilos en un mismo sistema..

Condiciones de competencia. Procesos o hilos que hacen uso de recursos compartidos.

Dijkstra,
Dijkstra, Edsger Wybe.
Wybe.Investigador holandés y profesor en Ciencias Computacionales.
Estudió Física en la universidad de Linden. Propuso, entre muchas cosas, el uso de
semáforos binarios para la sincronización de procesos.

38 de 42
Espera ocupada.Espera
ocupada. de un proceso o hilo para poder entrar en una región crítica. Esta
espera se hace comprobando continuamente el estado de la variable que controla la
entrada a la región crítica, de ahí su nombre de “espera ocupada”.

Estado de proceso.Estado
proceso. en que puede estar un proceso en un determinado instante: en
ejecución, listo o bloqueado.

Exclusión mutua.Técnica
mutua. de programación utilizada para que un proceso impida que otro
entre la sección crítica, cuando el primero está ahí.

Herencia.
Herencia. Propiedad,
P en los lenguajes orientados a objetos, que permite que los objetos
sean creados a partir de otros ya existentes.

Hilo. Programa en ejecución que comparte el segmento de código, en memoria, con más
hilos o con el proceso que lo generó.

J
Java. Lenguaje de programación orientado a objetos creado por la empresa Sun
MicroSystems en los inicios de los años 90s. Tiene una sintaxis parecida a C y C++ y cuenta
con un modelo de objetos simplificado con respecto a otros lenguajes con el mismo
paradigma de programación.

Lenguaje C.

M
Memoria compartida. Arquitectura que se utiliza en el diseño actual de procesadores multi-
núcleo. Los chips contienen dos o más procesadores que se comunican y comparten datos
entre sí a través de un esquema de memoria compartida, lo cual es transparente al usuario.

Método. Porción de código asociado a una clase y que representa las acciones que puede
realizar un objeto definido de esa clase.

N
.NET. Proyecto de tecnología computacional que incluye un framework robusto, lo cual
permite el desarrollo de software de manera transparente a las redes. Contiene los
lenguajes de programación C#, Visual Basic, C++ y J#.

39 de 42
Objeto.
Objeto Instancia de clase. Es una unidad de código que contiene tres características
fundamentales: identidad, comportamiento y estado.

ODBC. Es un estándar para el acceso de bases de datos desde aplicaciones. Las siglas
quieren decir “Conectividad abierta de bases de datos”.

MPI.
MPI Interface de paso de mensajes, por sus iniciales en inglés, Message Passing
Interface.

OpenMP. Interfaz Programable de Aplicaciones para cómputo paralelo, desarrollada por Sun
Microsystems par los lenguajes C y Fortran.

P
Paso de mensajes. Técnica utilizada en programación para realizar la sincronización de
procesos concurrentes.

Polimorfismo.Capacidad
Polimorfismo. que tienen los objetos de una clase de responder al mismo
mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto
polimórfico puede contener valores de diferentes tipos durante la ejecución del programa.

Proceso. Programa en ejecución.

Procesador multi-
multi-núcleo.

Programación orientada a objetos. Paradigma de programación que usa objetos y sus


interacciones para diseñar software. Está basado en conceptos como clase, objeto,
herencia, modularidad, polimorfismo y encapsulamiento.

Región crítica.

Reutilización de código. Es la capacidad que tienen los lenguajes de programación


orientados a objetos para tomar código ya terminado y con el definir nuevas clases. Este
concepto está estrechamente ligado con la herencia.

Semáforo binario.

40 de 42
Sobrecarga. Es una característica de la programación orientada a objetos, que permite tener
dos o más métodos con el mismo nombre pero con funcionalidad distinta.

Sobre posición. Característica de la programación orientada a objetos que consiste en tener


dos o más métodos con el mismo nombre en clases distintas y con una relación de herencia
entre las clases.

Socket.
Socket Es una conexión entre un cliente y un servidor para entablar comunicación. Utiliza
una serie de protocolos de comunicación entre los más importantes, TCP o UDP. Se
conforman por una dirección IP y un número de puerto.

U
URI. Identificador Uniforme de Recursos.

W
Web. Sistema de documentos interconectados por medio de enlaces de hipertexto que se
encuentran en Internet.

www. (Wolrd Wide Web). Sistema propuesto por Tim Barnes Lee para el acceso a
documentos en Internet. Está compuesto por el URI (identificador uniforme de recursos), el
hipertexto y el lenguaje HTML.

Web 2.0.
2.0 Este término fue utilizado por primera vez por Tim O’Reilly en el 2004 para
referirse a una segunda generación de web basada en comunidades de usuarios y una
gama especial deservicios, como las redes sociales, blogs, etc. que fomentan la
colaboración y el intercambio ágil de información entre los usuarios.

Web semántica. Es una nueva concepción de la web actual en la que se añade el trabajo
con metadatos. Éstos describen el contenido, el significado y la relación entre los datos.

X
XML. Son las siglas de Extensible Markup Language y es un lenguaje extensible de
etiquetas desarrollado por World Wide Web Consortium. Permite definir la gramática de
lenguajes específicos.

XMLHTTPRequest..
XMLHTTPRequest (Extensible Markup Language / Hypertext Transfer Protocol), es una
interfaz que se utiliza en peticiones HTTP y HTTPS a servidores WEB, de manera asincrónica,
y permite cargar, a solicitud del usuario, de manera inmediata, los resultados de las
peticiones al servidor.

41 de 42
BIBLIOGRAFÍA
Básica
TÍTULO: Programaciónconcurrente
AUTOR: José Tomás Palma Méndez
EDITORIAL O REFERENCIA: Thomson Paraninfo

Using OpenMP: Portable Shared Memory Parallel


TÍTULO: Programming
AUTOR: Barbara Chapman, Gabriele Jost, Ruud Van Der Pas
EDITORIAL O REFERENCIA: MIT Press. Ltd.

TÍTULO: Introducción a la programación paralela


Almeida, Francisco. Giménez, Domingo. Mantas, José
AUTOR: Miguel. Vidal, Antonio M.
EDITORIAL O REFERENCIA: Paraninfo

Complementaria
TÍTULO: Sistemas operativos modernos
AUTOR: Andrew Tanenbaum
EDITORIAL O REFERENCIA: Prentice Hall
TÍTULO: Java a fondo
AUTOR: Sznajdleder, Pablo
EDITORIAL O REFERENCIA: Alfaomega

TÍTULO: Enciclopedia De Microsoft Visual C#


AUTOR: CEBALLOS, Fco. Javier
EDITORIAL O REFERENCIA: Alfaomega, Ra-Ma

42 de 42

Вам также может понравиться