Ir al contenido principal

Entradas

¿Qué es concurrencia?

En ciencias de la computación, concurrencia se refiere a la habilidad de distintas partes de un programa, algoritmo, o problema de ser ejecutado en desorden o en orden parcial, sin afectar el resultado final. También concurrente significa algo que se repite cada cierto tiempo en un mismo lugar.
Entradas recientes

Origen

La programación concurrente tiene sus raíces en los sistemas operativos. En los años 60’s se introdujeron en las computadoras dispositivos controladores independientes de entrada-salida llamados canales. La programación de sistemas con capacidades de concurrencia se hacía a bajo nivel, en ensamblador. Los pioneros en este campo fueron:  EdsgerWybe Dijkstra fue un científico de la computación de los Países Bajos. Per Brinch Hansen fue un informático danés-estadounidense conocido por la teoría de la programación concurrente. Charles Antony Richard Hoare también conocido familiarmente como Tony Hoare, es un científico británico en computación.

Programación Concurrente

Para definirla correctamente, debemos diferencias entre programa y proceso. ·          Programa: Conjunto de sentencias/instrucciones que se ejecutan secuencialmente. Se asemeja al concepto de clase dentro de la POO. 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. Se asemeja al concepto de objeto en POO.

Importancia

En cuanto examinamos la programación concurrente, nos damos cuenta de su importancia actual, y de la prospección de futuro que tiene, ya sea desde el desarrollo de Internet y sus aplicaciones, o desde el nuevo hardware de las CPU (por ejemplo, en la forma de multicolores), que nos introducirá la programación concurrente como un elemento básico para todo desarrollador de aplicaciones.

Multitarea

Multitareas Es la capacidad de un sistema operativo para ejecutar varios procesos al mismo tiempo corriendo sobre un procesador. Con los sistemas operativos DOS esto era incapaz de realizarse. Existen varios tipos de multitareas y son :   Multitarea Nula : ES aquel  sistema  operativo que carece de multitarea. Aún así puede simularla implementándola en un espacio de usuario Justamente  la familia  DOS son ejemplos de  sistemas operativos  de multitarea nula. Multitarea Cooperativa: Tipo de multitarea en donde los procesos de usuario son quienes ceden la  CPU  al sistema operativo a intervalos regulares. Multitarea Preferente: en donde el SO se encarga de administrar uno o más procesadores, repartiendo el tiempo de uso del mismo entre los distintos procesos que esperan utilizarlo (tareas en ejecución)  Multitarea Real: en donde el SO ejecuta los procesos realmente al mismo tiempo haciendo uso de múltiples procesadores (más de dos). La ejecución realmente

Motivación

La motivación de la programación concurrente surge por la necesidad de realizar aplicaciones de tiempo real, por la aparición del paradigma de programación orientada a objetos, por la naturaleza concurrente de los problemas reales que hay que resolver (sistemas operativos, GUIs, operaciones de entrada y salida, sistemas multimedia, control de sistemas físicos etc.) y por la arquitectura hardware con muchos núcleos de computación distribuidos que deben ser aprovechados de forma eficiente. Un programa se compone de  sentencias  y la línea de flujo de control (i.e  thread ) que establece el orden en el que se ejecutan las sentencias. Según el número de líneas de flujo de control y los requerimientos temporales un programa puede ser secuencial, concurrente o de tiempo real. Los programas concurrentes tienen varias líneas de flujo de control. Las sentencias no se ejecutan con un orden estricto, la secuencia de sentencias se suceden entre puntos de sincronización (con o sin intercambio de

Beneficios

Cuenta con diferentes 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 la aplicación gráfica (p.ej. Navegador web).   - Simulación: Programas que modelan sistemas físicos con autono- -mía.   - Sistemas Gestores de Bases de Datos: Cada usuario un proceso