En día de hoy y para finalizar este curso se pidió un programa en MPI que realizara la suma de vectores en el cluster el cual consiste en simular que se crean 4 procesos y en la que cada proceso tiene un vector de 100 elementos y en la cual cada procesos hará la suma de sus elementos y lo mandara al proceso “Master” el cual hará la suma del resultado de los procesos y sus vectores mandara a imprimir e resultado final y un pequeño cuestionario sobre la forma que trabajamos en general en equipo y respecto al curso que es lo que aprendí y como es que estuve trabajando en el transcurso del cuatrimestre.
Wednesday, November 25, 2009
Friday, November 20, 2009
El día de hoy en clase se hablo un poco de lo que es la diferencia de programación paralela y programación concurrente y que diferencia hay entre ellas en las cuales se realizo un cuadro comparativo en la cual se describían lo que es las ventajas y desventajas de cada una de ellas y las cuales se discutieron un poco en clase.
Wednesday, November 18, 2009
Wednesday, November 11, 2009
laboratorio MPI
Este día no hubo cluster las cuentas del cluster no sean podido activar para poder hacer practicas con MPI pero en la plataforma se hicieron unas de paso de mensajes que teníamos que realizar para seguir con lo que es el paso de mensajes con lo que es MPI en el cual fueron 7 programas que nos dan paso de mensajes.
Wednesday, November 4, 2009
El dia de hoy tuvimos q entregar los 24 programas que son los problemas de :
*programa de la engrapadora
*programa de el baño
*programa de camiones
*programa del estacionamiento
*problema de la tribu
*problema de lectores y escritores
*problema de filósofos pensantes
*problema del productor y consumidor
Y estos programas hechos en cada una de las versiones:
-Sincronizados
-Semáforos
-monitores
Los cuales se le fueron entregados y revisados por la maestra en laboratorio.
Donde también empezó a darnos referencia delo que s el paso de mensajes de MPI para empesar a trabajar con lo que es el cluster de la facultad.
Monday, October 26, 2009
Este día la maestra dio la lista de quienes estaba exentos y quienes tenían que hacer examen pues durante las practicas pidió lo que era practicas puntuales para poder exentar examen y también reviso lo que seria la conexión ala base de datos con el programa que nos había dado de ejemplo de la agenda en la cual teníamos que hacer la conexión en nuestras lap´s para poder también exentar si es que juntábamos todos los requisitos.
Wednesday, October 21, 2009
Hoy en laboratorio la maestra pidió realizar como cada laboratorio hacer la practica que cada miércoles pone el la plataforma de Moodle y en este caso vimos lo que es monitores el cual explico brevemente y pidió que corriéramos lo programas para poder ver en que consistía lo que es los monitores y hacer en equipo un programa en el cual seguir explicando y ver como trabaja lo que es monitores.
Friday, October 16, 2009
En este día hemos visto lo que será necesario para hacer una conexión también usando junto con lo que serán sockets es la conexión a una base de datos mediante un programa el modificar una base o mejor dio irle agregando una lista lo que seria una agenda es agregarle unos cuantos contactos y se van actualizando la lista, pero solo el día de hoy nos enseño a hacer la conexión de lavase de datos para usarla con lo que será un programa en java, la verdad me gusto que la maestra utilizará esa forma de trabajar por que no es algo que necesitemos mas adelante no solo en la carrera sino también en el trabajo.
Monday, October 12, 2009
precentacion en clase de programa
El día de hoy se hizo una exposición de cómo resolvimos cada equipo el problema de la un punto de venta con sincronización utilizando “synchronized” en el cual con los equipos formados en clase pasada en la cual me toco ser el “abogado del diablo” donde mi rol era más a decidir o abogar por una solución se le podría dar, en la exposición también hubo otros roles que tuvieron que ser tomados en cuenta así como el describir el manejo de tiempo en que tiempo se realizo y como se fue organizando el equipo para poder realizar el programa. En general como se fue organizando el equipo para la realización de l programa y como fue q llegamos a la solución del problema en cual estuvo tranquila la presentación, no hubo muchos nervios y simplemente explicar a grandes rasgos la actividad de cada quien y como realizamos la solución de problema.
El día de hoy se hizo una exposición de cómo resolvimos cada equipo el problema de la un punto de venta con sincronización utilizando “synchronized” en el cual con los equipos formados en clase pasada en la cual me toco ser el “abogado del diablo” donde mi rol era más a decidir o abogar por una solución se le podría dar, en la exposición también hubo otros roles que tuvieron que ser tomados en cuenta así como el describir el manejo de tiempo en que tiempo se realizo y como se fue organizando el equipo para poder realizar el programa. En general como se fue organizando el equipo para la realización de l programa y como fue q llegamos a la solución del problema en cual estuvo tranquila la presentación, no hubo muchos nervios y simplemente explicar a grandes rasgos la actividad de cada quien y como realizamos la solución de problema.
Wednesday, October 7, 2009
laboratorio
El día de hoy en laboratorio nos reviso lo que fue el programa de la tienda y como se estaba llevando acabo la exclusión mutua en cual nos reviso y tuvimos que hacer unas pequeñas modificaciones , también hicimos de practica como crear hilos en lenguaje “C” en le cual se hizo en laboratorio unas practicas de programas en “c” el cuan consistía en compilarlos y ejecutarlos para poder ver la creación de hilos y de que manera se implementan.
Monday, October 5, 2009
semáforos
En este día vimos lo que es el tema de semáforos en la cual en sus diapositivas vimos como funcionan los semáforos sus primitivas y para que nos sirve, el semáforo nos sirve en el caso de exclusión mutua ya que realiza el mismo trabajo pero con distinta forma de trabajar como por ejemplo viendo la funcionalidad de un semáforo común en lo que es en una vialidad le da el paso a cierto sentido de la vía y el otro sentido se detiene hasta que le toque su turno, lo mismo realiza con lo que es la sección critica hace esa exclusión en cierto programa y no exista lo que es el llamado “inter bloqueo” la hora de tomar ele recurso compartido el semáforo nos ayuda para resolver este problema que existe en l o que es la programación concurrente. También se vio lo que fue una implementación de semáforo binario y el semáforo normal con un sencillo ejemplo visto en diapositivas.
Wednesday, September 30, 2009
En este día se entregaron programas dejados de tarea como son creación de hilos pero ahora en lenguaje C para ver como se crean y como se trabaja con hilos en este lenguaje .
También se entrego lo que seria ya corriendo el programa de la tienda en la cual contaría como trabajo para poder exentar el segundo examen y si seguimos así siendo puntuales en la entrega de trabajos ya no tendríamos que realizar examen del 2 parcial :) el cual la maestra nos reviso el programa corriendo y nos dio un pequeños comentarios para modificarle al programa que ya estaba corriendo y funcionando.
También nos dejo realizar en clase una práctica sobre exclusión mutua y ver diferencias de lo que es sincronización de procesos.
Monday, September 28, 2009
En este día continuamos con lo que es Sincronización de procedimientos con un problema propuesto la clase anterior en la cual se formaron equipos para poderlo realizar en ese momento en la cual se repartieron varios roles entre los integrantes del equipo para poder gestionar la resolución del problema ya que mediante la sincronización con la primitiva “Synchronized” y “wait()” y” notify()” teníamos que resolver un problema de una tienda en la cual se tenia que crear un vendedor el comprador en la cual sincronizaríamos lo que serian los mensajes que seria al efectuar una compra ventea de algún producto en la cual el vendedor tenia que:
-esperar el pedido de mercancía
-elaborar el pedido
-realizar la factura de la compra
-entregar factura e entregar mercancía
Y por parte del comprador:
-hacer pedido de mercancía
-esperar pedido de mercancía
-pedir factura
-esperar factura y mercancía
-notificar que ha recibido su factura junto con su mercancía
La cual no se pudo terminar el ejercicio en clase por lo cual se tuvo que hacer una segunda reunión entre el equipo para poderlo terminar ya que era un ejercicio para poder entregar en la próxima clase con una presentación para el grupo de la gestión del como se planteo su resolución como equipo y como se había llegado a su solución.
Friday, September 25, 2009
Este día seguimos viendo unas diapositivas en la cual empezamos, mejor dicho, seguimos con lo que es la exclusión mutua mediante las primitivas de java como son:
*Sleep()
*wait()
*notify()
*isAlive()
*getThreadGroup()
En la cual vemos que seguimos usando hilos para poder crear procesos y que podemos pausarlo con “sleep”, pasándole un numero q indica cuanto tiempo dormirá el proceso o con un “wait” que este necesita forzosamente un “notify” para poderlo activarlo de nuevo para que termine con su tarea, conocer el estado del hilo con “isAlive” donde este regresa un booleano que indica el estado del proceso, crear un grupo de hilos y obtener a que grupo pertenece con “getThreadGroup”.
Aunque también empezamos a ver un poco de lo que es sincronización de hilos que este se efectúa con “Synchronized” y vimos un pequeño ejemplo de lo que es el uso de estas primitivas.
Wednesday, September 23, 2009
laboratorio con lagortimos Dekker y Peterson
En este día en laboratorio se creo el programa de los esquimales y del jardín que son problemas de exclusión mutua que se implementaron con del algoritmo de Dekker.
También se realizo la practica de hacer la diferencia del algoritmo de Dekker y el de Peterson
Monday, September 21, 2009
Exclusion Mutua algoritmo Dekker
A este algoritmo se llega mediante varios intentos de resolver la exclusión mutua, que este algoritmo funciona al intento de que cada proceso tiene su propia variable para evitar los problemas en ausencia de contención, pero en presencia de ella ningún proceso tenia derecho a insistir p ara entrar en su sección critica, experto que incorpora a este método el derecho explicito de insistir para entrar en su sección critica. Donde las variables individuales de los procesos permitirán conseguir la exclusión mutua, pero se usará una variable de turno común a ambos procesos, de manera que en presencia de contención entre en su sección critica el proceso que tenga el turno.
El algoritmo es correcto y satisface los requerimientos de exclusión mutua y ausencia de bloqueos, en l cual ningún proceso se vuelve ansioso, y en ausencia de contención de un proceso entra en sus sección inmediatamente si lo desea.
Aquí se muestra el algoritmo para su mejor comprensión:
Ahora veremos el algoritmo generalizado ya no para 2 proceso si no para n procesos. En este algoritmo cada proceso que desea ejecutar su sección crítica toma un número. El proceso que tiene el número menor es el que accede a su sección crítica. De ahí el nombre del algoritmo.
Monday, September 14, 2009
uuffff!! dial de examen!!! :P
Este día se nos aplico un examen en el cual lo realizamos aparte para observar nuestros errores, el cual no estaba tan difícil ya que hubo preguntas de todo un poco así como un programa por realizar ya que seria obviamente de hilos en java ejecutando un mensaje si en una lista de calificaciones el numero corresponda a aprobado excelente bueno regular o reprobado.
Wednesday, September 9, 2009
miercoles de laboratioro
El día de hoy en laboratorio reviso un programa que dejo de unas copias en la cual se trata del tema como repaso de “Quick sort, ordenamiento por burbuja, Mergesort” así como el decir en que tiempo se tardo el programa al ejecutarlo en nano segundos, también de un applet el cual dibuja unas pelotas rebotando en la cual se crean las pelotas que uno desee mediante la creación de hilos en la cual lo hicimos en equipo ya que es una ventaja el trabajar en equipo un poco difícil el coordinar el equipo pero es mejor.
Friday, September 4, 2009
El día de hoy vimos un poco mas de la historia de lo que es la programación concurrente de unas copias que se titulan “Introducción a la Computación Distribuida” que ella nos dio para que complementáramos la clase en el cual se tocaron los subtemas de:
*historia de la computación distribuida
-Tendencia Histórica
*Diferentes Formas de Computación
-Computación monolítica
-Computación distribuida
-Computación paralela (solo fue una mención de lo que es)
-Computación Cooperativa
- un articulo llamado “Por donde viaja el Internet”
*Virtudes y Limitaciones de la Computación Distribuida
En el cual un tema q me llamo la atención fue el de de “Como viaja el internet” ya que la verdad nunca me pregunte ni tuve esa inquietud del saber o preguntarme como es que viaja el internet, en el cual nos dio las copias como ejemplo el uso del sistema de “Ebay” de l como interactúa el paso de datos a donde los manda y como los recibe, que por desgracia solo lo mencionare por este medio ya que no lo detallare esa información pero mas adelante buscare un reportaje para ligarlo a este blog.
Como investigación dejo investigar la súper computadora que la UNAM tiene llamada “kam-Balam” del por que no esta al 100% de su uso total el cual esta conformado por 1368 procesadores AMD ( WOOW!!!), con 3000 GB de RAM y 160 TB de almacenamiento, claro la verdad nunca pensé que estuviera tan súper esa computadora que aunque está la verdad muy padre no esta a todo su máximo potencial , es mas por ahí le leí que ni siquiera la dejan usar al todos los alumnos que la necesitan, pero en fin esperemos que eso solo sea un rumor ya que si tiene tan tremenda computadora se le debería sacar todo el aprovechamiento mas que la UNAM es una de las universidades reconocidas por sus investigaciones.
O tu que piensas ¿?
Wednesday, September 2, 2009
laboratorio de clase de prog Concurrente
El dia de hoy como todos los miércoles de laboratorio vimos el tema de los hilos en java y su precedencia, esto como un repaso del lenguaje de java en el cual hicimos unas preguntas que la maestra nos dejo en la plataforma moodle las cuales no hacen preguntas de un programa que el cual se cran hilos en java utilizando la interfaz runnable y creándolo por medio de la clase thread.
Creando en laboratorio el reporte que todos los miércoles quiere con el objetivo de la practica el código del programa así como también sus corridas del programa.
En el cual aprendí como se crean los hilos n en java con runnable y herendando de la clase thread.
Monday, August 31, 2009
2da. clase
Hola que tal aquí les dejo unos breves datos de lo que hicimos que en general los puntos que vimos son:
*Breve introducción de concurrencia
*concepto de Programación Concurrente
*Programa y Proceso
*Beneficios
*concurrencia y arquitecturas Hardware
*Sistemas monoprocesador
*Sistemas multiprocesador
*Condiciones de Bernstein
*Grafos de Precedencia
Breve introducción de concurrencia
La idea de programación concurrente siempre estuvo asociada al mundo de los
Sistemas Operativos (SSOO). No en vano, los primeros programas concurrentes
fueron los propios Sistemas Operativos de multiprogramación en los que un solo
procesador de gran capacidad debía repartir su tiempo entre muchos usuarios.
Para cada usuario, la sensación era que el procesador estaba dedicado para él.
Durante la década de los sesenta y setenta esto fue así.
La aparición en 1972 del lenguaje de alto nivel Concurrent Pascal
[Brinch-Hansen, 1975], desarrollado por Brinch Hansen, se encargó de romper
este mito y abrir la puerta a otros lenguajes de alto nivel que incorporaban
concurrencia.
Tres grandes hitos se nos antojan importantes para que la programación
concurrente actualmente sea tan importante:
*La aparición del concepto de thread o hilo que hace que los programas
puedan ejecutarse con mayor velocidad comparados con aquellos que
utilizan el concepto de proceso.
*La aparición más reciente de lenguajes como Java, lenguaje orientado a
objetos de propósito general que da soporte directamente a la programación
concurrente mediante la inclusión de primitivas específicas.
*La aparición de Internet que es un campo abonado para el desarrollo y la
utilización de programas concurrentes. Cualquier programa de Internet en el
que podamos pensar tales como un navegador, un chat, etc., están
programados usando técnicas de programación concurrente.
Concepto de Programación Concurrente
Pero que es Programación Concurrente?
Vemos que dice nuestra definición “Acaecimiento o concurso de varios sucesos en un mismo tiempo”.
Pero ahora si cambiamos la palabra “suceso” por “proceso’”, pero ahora para poder dar una definición adecuada necesitaremos dar antes unos conceptos que nos ayudaran a enteder mejor esta definición.
Programa y Proceso
Un programa es un conjunto de instrucciones. Es, simplemente, una secuencia de líneas de código que dicen qué hacer con un conjunto de datos de entrada para producir algún tipo de salida, donde es considerablemente “estático”.
Un proceso sería un programa en ejecución. es algo más que las líneas de código de un
programa. Un proceso es algo dinámico.
Concurrencia
Dos procesos serán concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera instrucción del otro y antes de la última, no tienen q ejecutarse exactamente al mismo tiempo , simplemente es suficiente con el hecho de que exista un intercalado entre la ejecución de sus instrucciones. Si se ejecutan al mismo tiempo los dos procesos entonces es “Programacion Paralela”
Beneficios
Exixten bastantes motivos por los que la programación concurrente es útil la cual uno de sus beneficios en los cuales mencionaremos 2 de ellos que son: VELOCIDAD DE EJECUCION y SOLUCION DE PROBLEMAS DE NATURALEZA CONRURRENTE.
Concurrencia y arquitecturas hardware
En cuestión de hardware en los cuales se ejecutaran nuestros procesos concurrentes, que seria obvio pensar que si dos procesos van a ejecutarse de forma concurrente vamos a necesitar dos procesadores, uno para cada proceso. Pero no es así dependerá aunque no exclusivamente del hardware, disponible y su topología.
Entonces nos referimos a lo que es el numero de procesadores en el sistema, asi hacemos una distinción entre los sistemas donde solo hay UN SOLO PROCESADOR que son los “sistemas monoprocesador”, y aquellos que hay MAS DE UN PROCESADOR que es un “ Sistema Multiprocesador” en los cuales en AMBOS es posible tener concurrencia.
Sistemas monoprocesador
Aquí todos los procesos pueden estar ejecutándose al mismo tiempo sobre el procesador, solo uno de ello podrá estar haciéndolo, aunque la sensación que le da al usurario es estar ejecutándose al mismo tiempo, esto es debido a que el Sistema Operativo va alternando el tiempo de procesador entre los distintos procesos. Ala forma de gestionar los procesos en un sistema monoprocesador recibe el nombre de “multiprogramación” q es otro de los beneficios de la programación concurrente un mejor aprovechamiento del procesador.
Sistemas multiprocesador
Es aquel en el que existen mas de un procesador, esto permite que exista paralelismo real entre los procesadores. Dentro de este sistema hay una clasificación como lo son:
*Sistemas Fuertemente acoplados; Donde los procesadores como otros dispositivos están conectados a un bus que permite que todos los procesadores puedan COMPARTIR la misma MEMORIA, donde puede ocurrir que cada procesador tenga su misma memoria local, pero la sincronización y comunicación entre procesos se hará mediante variables situadas en la memoria compartida.
*Sistemas Débilmente acoplados; Aquí no existe una memoria compartida por los procesadores, cada procesador contiene su propia memoria local y esta conectado con otros procesadores mediante algún tipo de enlace de comunicación. Un tipo de especial de estos sistemas lo constituyen los sistemas distribuidos, que están formados por un conjunto de nodos distribuidos geográficamente y conectados de alguna forma. Donde estos nodos pueden ser a su vez mono o multiprocesador.
Se le denomina “Multiproceso” a la gestión de varios procesos dentro de un sistema multiprocesador ne la que cada procesador puede acceder a una memoria común y “Procesamiento Distribuido” a la gestión de varios procesos en procesadores, cada uno con su memoria local.
Condiciones de Bernstein
A. J. Bernstein definió unas condiciones para determinar si dos conjuntos de instrucciones pueden ejecutar concurrentemente, esto surge ya que no todas las partes de un programa pueden ejecutarse de forma concurrente. En la cual se define:
*conjunto de lectura (Sn)={a1,a2,…,an} en el cual son valores referenciados.
*conjunto de escritura (Sn)={b1,b2,…,bn} en el cual los valores son actualizados durante la ejecución de las instrucciones en Sn.
Para que dos conjuntos de instrucciones se puedan ejecutar concurrentemente, se tiene que cumplir que:
1. L( Si ) ⋂ E( Sj ) = ∅
2. E( Si ) ⋂ L( Sj ) = ∅
3. E (Si ) ⋂ E( Sj ) = ∅
Donde L(S) pretencece al conjunto de lectura y E (S ) pertenece al conjunto de lectura
Grafos de presencia
Es una manera de especificar la ejecución concurrente instrucciones que son:
*una notación grafica
*basada en lo que suelen utilizar diversos lenguajes de programación el par cobegin/ coend.
Se les muestra un ejercicio donde se les muestra como se utilizar este método.
Problema 1:
Usando las condiciones de Bernstein, construir el grafo de precedencia del siguiente trozo de código.
S1: cuad= x*x;
S2; m1= a* cuad;
S3 m2= b * x;
S4: z= m1 + m2;
S5: y= z + c;
SOLUCION:
1. L( Si ) ⋂ E( Sj ) = ∅
2. E( Si ) ⋂ L( Sj ) = ∅
3. E (Si ) ⋂ E( Sj ) = ∅
L(S1) = { x } E(S1) = {cuad}
L(S2) = {a, cuad} E(S2) = {m1}
L(S3) = {b, x} E(S3) = { m2 }
L(S4) = { m1,m2} E(S4) = { z }
L(S5) = {z, c} E(S5) = { y }
Aplicando las condiciones:
Entre s1 y s2; Entre s1 y s3;
1. L(S1 ) ⋂ E(S2 ) = ∅ 1. L(S1) ⋂ E(S3 ) = ∅
2. E(S1 ) ⋂ L(S2 ) = cuad ≠ ∅ 2. E(S1) ⋂ L(S3) = ∅
3. E (S1 ) ⋂ E(S2) = ∅ 3. E(S1) ⋂ E(S3) = ∅
Entre s1 y s4; Entre s1 y s5;
1. L(S1) ⋂ E(S4) = ∅ 1. L(S1) ⋂ E(S5) = ∅
2. E(S1) ⋂ L(S4) = ∅ 2. E(S1) ⋂ L(S5) = ∅
3. E (S1) ⋂ E(S4) = ∅ 3. E(S1) ⋂ E(S5) = ∅
Entre s2 y s3; Entre s2 y s4;
1. L(S2) ⋂ E(S3) = ∅ 1. L(S2) ⋂ E(S4) = ∅
2. E(S2) ⋂ L(S3) = ∅ 2. E(S2) ⋂ L(S4) = {m1} ≠ ∅
3. E(S2) ⋂ E(S3) = ∅ 3. E(S2) ⋂ E(S4) = ∅
Entre s2 y s5; Entre s3 y s4;
1. L(S2) ⋂ E(S5) = ∅ 1. L(S3) ⋂ E(S4) = ∅
2. E(S2) ⋂ L(S5) = ∅ 2. E(S3) ⋂ L(S4) = {m2} ≠ ∅
3. E (S2) ⋂ E(S5) = ∅ 3. E(S3) ⋂ E(S4) = ∅
Entre s3 y s5; Entre s4 y s5;
1. L(S3) ⋂ E(S5) = ∅ 1. L(S4) ⋂ E(S5) = ∅
2. E(S3) ⋂ L(S5) = ∅ 2. E(S4) ⋂ L(S5) = { z }≠ ∅
3. E (S3) ⋂ E(S5) = ∅ 3. E(S4) ⋂ E(S5) = ∅