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 ^^