Está en la página 1de 4

Repblica Bolivariana de Venezuela

Ministerio del Poder Popular para la Educacin


Instituto Universitario de Tecnologa Juan Pablo Prez Alfonzo
I.U.T.E.P.A.L















Seccin: Bachilleres:
1351 Michael Salazar 21.201.687
Christian pinto 21.200.038
Junior Vargas 25.780.430


Puerto Cabello, Marzo del 2014

INFORME SOBRE CONCURRENCIA
Y PARALELISMO DE Sistemas
Operativos
En la vida de todo programador siempre llega el momento en que es
necesario hacer uso de la programacin concurrente y/o paralela, en donde es
necesario, dada una cierta clase de problemas, ejecutar dos o mas tareas o
procesos de forma casi, o en algunos casos, totalmente independiente.
Supongamos que, no s si la mayora sabe de qu se trata un Whois,
pero bueno, en pocas palabras un Whois es una simple aplicacin que verifica
la disponibilidad de un nombre de dominio cualquiera. La mayora de las
empresas de Hosting ofrecen este servicio, de manera tal que cuando un
cliente decide comprar un determinado plan de hosting, puede a su vez
verificar si su nombre de dominio preferido est disponible o no, y hacer todo
esto en el mismo paso de compra.
En los sistemas UNIX, por ejemplo en Linux, cualquiera sea la
distribucin, supongamos Ubuntu, existe un comando precisamente
llamado whois, que permite hacer este tipo de consulta de nombre de dominio y
alguna que otra cosa ms, en fin, el tema es que si necesitamos hacer un
Whois y contamos con un servidor, o una cuenta en un servidor con sistema
operativo Linux, en principio podemos hacer uso de este comando (para ver
ms, pueden buscar en las pginas del manual de Linux, el man, escribiendo
en la lnea de comandos del Shell que estn utilizando, el comando man
whois).
Entonces, a qu va todo esto? Pensemos en una simple aplicacin
Web, con un formulario HTML que tenga un campo de texto y un botn de tipo
submit, y detrs un script (ya sea en PHP, Python, Perl, etc.) del lado del
servidor, que mediante la validacin correspondiente sobre los datos enviados
realice esta consulta, y que luego muestre los resultados. Hasta aqu la tarea
es simple, pero resulta que quiero darle ms opciones al cliente, quiero que
cuando busque un determinado dominio, se le den ciertas alternativas, para
que en caso de no haber disponibilidad, este tenga diferentes opciones de
disponibilidad de ese mismo dominio en otra extensin o TLD.
Ya en este caso, nuestro supuesto script va a necesitar ser modificado
para que pueda realizar N consultas, una para el TLD que ingres el cliente, y
otras N-1 ms para las restantes que se le mostrarn como opcin. Entonces,
suponiendo que la consulta para un nico dominio, se demora unos 3 o 4
segundos, dependiendo del estado de la red, y teniendo en cuenta que se pudo
establecer conexin con el servidor de Whois, y que adems no hubo ningn
error en el medio, esto mismo, en un esquema de ejecucin secuencial,
andara por los 3 o 4 segundos para cada consulta, que multiplicado por la
cantidad de TLD que deseo buscar, suponiendo 10 TLD, ya andaramos por los
30 o 40 segundos.

Y entonces?, que pas?, esto es mucho o poco? Y hoy en da hacer
esperar a un cliente ms de 10 segundos por la respuesta de un formulario, es
sinnimo de que cerr la ventana o se fue a otra pgina por que se aburri
esperando
Pero entonces, que pasara si pudiese ejecutar de forma concurrente
esas consultas? Y automticamente aprovechara ms los recursos, y en el
tiempo en que el script espera a la respuesta de la consulta, puede ir haciendo
las dems, y as solapar consultas y ahorrar mucho tiempo, esto no quiere
decir que vaya a tardar lo que una nica consulta, pero lo que s significa es
que se va a ahorrar muchsimo tiempo, de seguro mucho ms que en el caso
secuencial. De esta forma no aburrira a los usuarios mientras esperan la
respuesta del Whois.
Casos como este, hay muchsimos, la mayora de las tareas que exigen
una espera ya sea sincrnica (por un tiempo definido) o asincrnica (por un
tiempo indefinido), son posibles de separar de forma de ahorrar tiempo y
aprovechar mejor los recursos de los que disponemos, y este es un poco el
principio de la programacin concurrente, arma poderossima que hoy en da
utilizan los programadores para hacer sus aplicaciones ms robustas, y con un
mejor aprovechamiento de los recursos de los que disponen, ms an con el
Boom de los procesadores de varios ncleos, en donde en cierto modo es
posible paralelizar literalmente tareas/procesos.


Como vern, se hizo diferencia acerca de tareas/procesos
concurrentes y tareas/procesos paralelos. Cul es la diferencia entre
ambos?, es muy simple, hacer algo de forma concurrente, implica realizar
un poco de cada tarea de forma tal que parezca que se realizan a la vez,
este principio bsicamente es el que usan los sistemas operativos que
slo cuentan con un nico procesador, tratan de administrar las tareas de
forma tal que parezca que se ejecutan a la vez. En cambio, cuando hay
ms de un procesador presente, los sistemas operativos modernos, se
dan cuenta de esto, y en algunos casos, en donde es posible, ejecutan
tareas en paralelo, es decir, realmente de forma simultnea. Esta en
principio es la diferencia fundamental entre concurrencia y paralelismo.
Loviu profesora SILVANA Paz ^^

También podría gustarte