Ir al contenido principal

Entradas

Mostrando entradas de abril, 2019

¿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.

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

Lenguajes

Elixir  Elixir es lenguaje de programación de propósito general, concurrente; este lenguaje es funcional. Además está construido sobre la MV de Erlang y aprovecha esto para construir sistemas distribuidos y tolerantes a fallos con baja latencia. Ada Uno de los pocos lenguajes que provee estructuras embebidas para programación concurrente y provee herramientas para diseño de software de seguridad crítica y proyectos grandes que requieran portabilidad y mantenimiento. Por esta razón la mayoría de software para aviación está programado en Ada que también fue el primer lenguaje orientado a objetos aceptado mundialmente. El lenguaje lleva este nombre en honor a Ada Byron que fue el primer programador del que se tiene registros, siendo este una mujer e hija del poeta Lord Byron [ARA]. Occam Es un lenguaje de procesamiento paralelo diseñado por un equipo en INMOS en conjunto con el diseño del proce