Concurrencia
Enviado por Ritzud • 27 de Octubre de 2013 • 615 Palabras (3 Páginas) • 335 Visitas
INTRODUCCION A LA CONCURRENCIA.
La idea de programación concurrente siempre ha estado asociada a los sistemas operativos: Un solo procesador de gran capacidad debía repartir su tiempo entre muchos usuarios.
La programación de estos sistemas se hacía a bajo nivel (ensamblador. Posteriormente aparecerían lenguajes de alto nivel con soporte para este tipo de programación.
Su utilización y potencial utilidad se apoya en: threads o hijos, java e internet.
Definición Real Academia Española:
<<Acaecimiento o concurso de varios sucesos en un
mismo tiempo>>
DEFINICION: Se habla de concurrencia cuando ocurren varios sucesos de manera contemporánea. En base a esto, la concurrencia en computación está asociada a la “ejecución” de varios procesos que coexisten temporalmente.
- Una forma de ver la concurrencia es como un conjunto de actividades que se desarrollan de forma simultánea. En informática, cada una de esas actividades se suele llamar proceso.
- En Informática, se habla de concurrencia cuando hay una existencia simultánea de varios procesos en ejecución.
- 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.
PROGRAMACIÓN CONCURRENTE:
Para definirla correctamente, debemos diferencias entre programa y proceso.
Programa: Conjunto de sentencias/instrucciones que se ejecutan secuencialmente. Es por tanto un concepto estático.
Proceso: Básicamente, se puede definir como un programa en ejecución. Líneas de código en ejecución de manera dinámica.
CONCURRENCIA.
La concurrencia aparece cuando dos o más procesos son contemporáneos. Un caso particular es el paralelismo (programación paralela).
Los procesos pueden “competir” o colaborar entre sí por los recursos del sistema. Por tanto, existen tareas de colaboración y sincronización.
Los programación concurrente se encarga del estudio de las nociones de ejecución concurrente, así como sus problemas de comunicación y sincronización.
Beneficios.
*Velocidad de ejecución. Al subdividir un programa en procesos, éstos se pueden “repartir” entre procesadores o gestionar en un único procesador según importancia.
*Solución a problemas de esta naturaleza. Existen algunos problemas cuya solución es más fácil utilizando esta metodología.
- Sistemas de control: Captura de datos, análisis y actuación (p.ej. sistemas de tiempo real).
- Tecnologías web: Servidores web que son capaces de atender varias peticiones concurrentemente, servidores de chat, email, etc.
- Aplicaciones basabas en GUI: El usuario hace varias peticiones a
...