Anda di halaman 1dari 4

Programacin Concurrente

La concurrencia representa un concepto relativamente nuevo en los


lenguajes de programacin. Antes de la aparicin de este concepto,
se usaban las interrupciones del sistema operativo, a bajo nivel, para
lograr comportamiento concurrente. Esto significa que lograr un
programa concurrente era difcil de desarrollar, y adems, al ser
dependiente del SO, no era portable. Actualmente, lenguajes como
Java, C#, Object Pascal y otros la implementan, logrando que el
programador se desentienda de la cantidad de procesadores que
tiene la mquina o de la administracin de los procesos.
La concurrencia, antes reservada para ciertos problemas muy
especficos y alejados de las aplicaciones corrientes, est teniendo un
uso cada vez mayor por la proliferacin de ambientes multitarea, las
arquitecturas cliente-servidor y las aplicaciones distribuidas.
Un ejemplo clsico de concurrencia es la descarga de archivos
extensos, como clips de audio o video, desde la web.
Otro caso: en muchas pginas Web se puede desplazar la pgina e ir
leyendo el texto antes de que todas las imgenes estn presentes en
la pantalla. En este caso, el navegador est trayndose en una tarea
las imgenes, y soportando el desplazamiento de la pgina en otra
tarea diferente.

Conceptos generales
Haciendo varias cosas a la vez
El concepto de concurrencia tiene que ver con hacer ms de una cosa
al mismo tiempo.
En

algunas

ocasiones,

un

programa

aparentemente

tiene

el

monopolio del procesador, pero hay un sistema operativo que corre

tras l. Hay casos en que varios programas corren alternndose en el


uso del nico procesador. A veces pueden correr varios programas
realmente en paralelo sobre una mquina de mltiples procesadores.
Y en el caso ms amplio, varias computadoras pueden trabajar en
conjunto para resolver un determinado problema.
Un caso simple de concurrencia se da en las interfaces de usuario. Por
ejemplo, mientras el sistema est haciendo una tarea se puede
presionar un botn de cancelacin, y ese evento va a ser atendido
simultneamente.
En esencia, la multitarea nos permite ejecutar varios procesos a la
vez; es decir, de forma concurrente y por tanto eso nos permite hacer
programas que se ejecuten en menor tiempo y sean ms eficientes.
Evidentemente no podemos ejecutar infinitos procesos de forma
concurrente ya que el hardware tiene sus limitaciones, pero al da de
hoy el mismo se ha actualizado.

Tipos de Concurrencia
Concurrencia es la tcnica de programacin que permite que un
programa haga ms de una cosa a la vez, en una misma o en varias
computadoras. Por ejemplo, si en una aplicacin de facturacin se
necesita acceder a un archivo para obtener la descripcin de un
producto y a otro para obtener el precio, no necesariamente se debe
hacer una cosa despus de la otra. Si se realiza de esta manera
puede ser porque el lenguaje o la plataforma no permiten resolverlo
de otro modo, pero ms all de esas limitaciones, conceptualmente
se debera poder hacer en paralelo.
Se pueden distinguir tres tipos de concurrencia:
a) Multiprocesamiento
b) Multiprogramacin
c) Computacin distribuida
Podemos desglosar sus respectivos conceptos de la siguiente manera:
a) Multiprocesamiento es la tcnica mediante la cual varios procesos
usan varios procesadores, a razn de por lo menos un procesador

por proceso. Cada proceso ocupa un espacio de memoria


independiente y slo es utilizable en mquinas de mltiples
procesadores y en ciertos sistemas operativos.
b) Multiprogramacin es la tcnica que se da cuando el nmero de
procesadores es menor que el nmero de procesos. Habitualmente
se dan varios procesos corriendo sobre un nico procesador,
coordinados por un algoritmo que asigna recursos a los distintos
procesos.
c) Computacin distribuida hace referencia al hecho de correr
programas diferentes en varias computadoras que se envan
mensajes y comparten objetos. Este tipo de sistemas se compone,
bsicamente, de distintas mquinas situadas de forma dispersa,
que interaccionan entre s, es decir, se comunican y cooperan con
el objetivo de realizar, de un modo eficiente y fiable, la tarea
encomendada a todo el conjunto.
A medida que se va hacia esquemas ms distribuidos se logra una
mayor distribucin del trabajo. Es decir, el multiprocesamiento
permite distribuir mejor que la multiprogramacin y la computacin
distribuida

mejor

que

aqul.

No

obstante,

esto

no

implica

necesariamente una mayor eficiencia. El rendimiento puede medirse


en funcin del tiempo de respuesta del sistema o de la cantidad de
trabajo que realiza por una unidad de tiempo (throughput).

Programacin

Multiprograma

(desglosando el proceso)
Se denomina multiprogramacin a una tcnica por la que dos o ms
procesos pueden alojarse en la memoria principal y ser ejecutados
concurrentemente por el procesador o CPU.
Se trata de un paralelismo simulado, dado que la CPU slo puede
trabajar con un proceso cada vez. De ah que se diga que la CPU
ejecuta concurrentemente (no simultneamente) varios procesos.
Podemos ver as las siguientes ventajas del proceso:
Varios procesos en ejecucin

Permite el servicio interactivo simultneo a varios usuarios de


manera eficiente
Aprovecha los tiempos que los procesos pasan esperando a que se
completen sus operaciones de E/S y por ende aumenta la
eficiencia en el uso del CPU
Las direcciones de los procesos son relativas, el programador no se
preocupa por saber en dnde estar el proceso dado que el
sistema operativo es el que se encarga de convertir la direccin
lgica en fsica.

Anda mungkin juga menyukai