You are on page 1of 38

Franklin Alexander Castro Cruz

Introduccin Concurrencia Caracteristicas Propiedades de vida Desventajas Problemas Programas concurrentes C++ Concurrente Caractersticas de C++ Concurrente Procesos en C++ Concurrente Procesos vs corrutinas Ejemplos Conclusin Bibliografia

La concurrencia o ejecucin simultnea (al mismo tiempo) de procesos aparece inicialmente como una necesidad de los sistemas de operacin. Podemos definir que dos actividades son concurrentes si, en un momento dado, cada una est en algn punto entre su punto de comienzo y su punto de finalizacin. Hoy en da suele haber confusin entre varios trminos que implican ejecucin simultnea de procesos:

Concurrencia - Paralelismo - Distribucin

Dos o ms procesos decimos que son concurrentes, paralelos, o que se ejecutan concurrentemente, cuando son procesados al mismo tiempo, es decir, que para ejecutar uno de ellos, no hace falta que se haya ejecutado otro.

La ejecucin concurrente de un proceso genera dos tipos de correccin:

La seguridad

La vida

Los procesos concurrentes tienen las siguientes caractersticas:

Indeterminismo
Interaccin entre procesos Palabras Reservada como:
Process Null Select When

Que dos o mas procesos requieran el mismo recurso .

Ocurrencia de bloqueos
Interrupcin de procesos

Bsicamente los problemas en concurrencia son Exclusin Mutua y Sincronizacin. Exclusin Mutua
Condicin de sincronizacin

En nuestro caso, supongamos que una instruccin como x:=x+1 da lugar a tres instrucciones de un lenguaje ensamblador cualquiera, que es lo que realmente va a ejecutar el procesador.

Condicin de sincronizacin

Es la simultaneidad en la ejecucin de mltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecucin creados por un nico programa.

Existen diversos motivos por los que la programacin concurrente es til. Dos de estos motivos son:

Velocidad de ejecucin Solucin de problemas inherentemente concurrentes

C++ concurrente es el resultado de un esfuerzo de mejoramiento de C. Con el fin de que pudiera ser utilizado en el desarrollo de programas concurrentes y que estos puedan correr eficientemente en una sola computadora y en redes de computadoras distribuidas o en computadoras multiprocesadores.

Uso de Hilos o Thread y su estndar (Posix Pthread).

Abstraccin de datos mediante clases (C++).


Creacin y destruccin esttica y dinmica de procesos y corrutinas (extensin).

Programacin
(extensin).

en

el

estilo

de

proceso

distribuido

Ejecucin no determinstica de programas (extensin).

Compilacin separada de mdulos y facilidades de


depuracin (Ambiente). Palabras Reservada como: Process Null Select When

Es una secuencia de instrucciones dentro de un programa que se puede ejecutar de forma independiente de otro cdigo. El propsito del trabajo con hilos es ejecutar el trabajo en menor cantidad de tiempo.

Un hilo central o maestro crea otros hilos esclavos, asignndole a cada esclavo una tarea. El hilo maestro deber esperar a que cada esclavo termine su tarea.

Todos los hilos tienen un mismo nivel de asignacin de trabajo. Tambin llamados puntuales.

Esta tcnica permita varias entradas de datos que se procesan simultneamente. La ltima etapa genera el resultado final del proceso.

El hilo producto genera datos que sern utilizados por el hilo consumidor.

La librera de PTHREADS provee el API para crear y administrar los hilos de una aplicacin.

Est basada en una interface estndar de programacin.


La interface de PTHREADS ha sido especificada por el comit de estndares de IEEE llamado Estndar POSIX 1003.1c

Los procesos son los bloques de desarrollo de la programacin concurrente. Cada proceso es un componente secuencial del programa que tiene su propio control de flujo, y su propio stack y registros.

En el C++ Concurrente, es posible que un proceso no requiera de su pila.


Esto ocurre cuando el proceso es un objeto en el sentido usual que se maneja en el lenguaje C++, es decir, su comportamiento se reduce a iniciar las variables de estado del proceso y no realiza ninguna actividad posterior.

Es un proceso predefinido cuyo propsito es el de simplificar el mecanismo de inicio y fin de la actividad concurrente, as como el algoritmo de asignacin del procesador. El proceso nulo posee la menor prioridad de todos los procesos.

En el lenguaje C++ Concurrente, la nica diferencia entre procesos y corrutinas radica en el modo de cmo se transfiere el control ya que comparten la misma representacin.
Una corrutina es una serie de rdenes para realizar cierta actividad.

C++ Concurrente es el resultado de un esfuerzo de mejoramiento de C, para que pueda ser utilizado para el desarrollo de programas concurrentes que puedan correr eficientemente en una sola computadora, en redes de computadoras distribuidas o en computadoras multiprocesadores.

Es una extensin de C que incluyen mecanismos para la declaracin y creacin de procesos, para la sincronizacin e iteracin y terminacin de procesos.

http://www.webprogramacion.com/43/sistemasoperativos/concurrencia-de-procesos.aspx http://www.depi.itch.edu.mx/apacheco/lengs/paralelo/index.ht ml http://www.geocities.ws/immonroy7/ccpp.pdf http://www.isa.uniovi.es/docencia/TiempoReal/Recursos/RTSPL/Concurrencia.pdf http://www.halconia.org/escolar/sistemas_operativos/b4/c_con cu.html http://arco.esi.uclm.es/~david.villa/pensar_en_C++/vol2/ch10s 02.html http://arco.esi.uclm.es/~david.villa/pensar_en_C++/vol2/C11.h tml file:///H:/Materias%20UPV/new/Desc.%20Simulacion%20y%20Ver ificacion%20de%20Sist.%20concurrentes/DSC/10.2.%20Concurre ncia%20en%20C++.htm http://randu.org/tutorials/threads/ http://www.engcomputacaopucgo.com/arquivos/Materiais/Siste mas%20Operacionais/progconcCPP.pdf