Ubuntu y múltiples núcleos
Josue Torres Martinez
josuetorresmtz en gmail.com
Dom Ago 24 18:01:43 BST 2008
>
> > el "doble nucleo no se aprovecha, unicamente se
> > utiliza muy mediocremente (si una aplicacion esta escrita para un
> > nucleo, el procesador unicamente utiliza uno de ellos) Una aplicación
> > para que aproveche el "doble nucleo" o cuatro tendria que estar escrita
> > de manera diferente,(en algunos casos tendrían que volverse a escribir)
> > asi que de nada sirve utilizar hardware 64 bits, o doble nucleo si
> > nuestro software aún no está listo.
>
Pro por ejemplo con el doble nucleo si el sistema operativo esta
preparado para usar varios nucleos, ¿no se encargaria este de resolver
que programa ocupa cada nucleo?, por ejemplo aunque firefox y ekiga no
soporten trabajar con dos nucleos, ¿no utilizaria cada uno un nucleo?
Esa era la idea que yo tenia, agradeceria me ayudaran a corregirla si estoy mal
Tambien me surge otra duda: ¿ es lo mismo 2 nucleos que 2 procesadores?
Saludos
Pedro Arana
Que tal Pedro, mira te copio un fragmento de una revista especializada
aquí en México que habla de esto, espero te sirva:
"...La comercialización masiva de los primeros chips con múltiples
núcleos (multi-core) en el año 2005 dio lugar a lo que se conoce como el
fin del almuerzo gratis. En el pasado no muy legano, un desarrollador
podía escribir un programa sin preocuparse mucho sobre su desempeño,
pues sabía que en relativamente poco tiempo el nuevo hardware correría
su programa, sin modificación alguna de manera más rápida (por eso el
término de almuerzo gratis...). Sin embargo, las velocidades de los
microprocesadores ya no se han estado incrementando como estabamos
acostumbrados. La ley de Moore establece que el número de transistores
que se pueden retacar en un solo chip se duplica aproximadamente cada 18
meses. Esto típicamente se traducia en CPU's corriendo a más megahertz
cada año. Sin embargo este aumento en velocidad de relog ya no es
sotenible por cuestiones de calentamiento y consumo de energía. Esto no
quiere decir que la Ley de Moore ya no se cumpla, pero ahora lo que
estan haciendo los fabricantes de microprocesadores es usar esos
transistores adicionales para añadir mas núcleos a los CPU's. Un núcleo
es basicamente una unidad de ejecución y memoria caché. Hoy en día
muchos servidores, equipos de escritorio y de cómputo portátil cuentan
con CPU's de 2, 4 o más núcleos,. Incluso empresas como Intel, IBM y Sun
ya estan hablando de procesadores many core, con decenas o centenas de
nucleo para los años venideros.
Ahora bien, hay un problema muy grande, un programa no se beneficia del
nuevo paralelismo inherente de los sistemas multicore, a no ser que haya
sido diseñado especificamente para ello. Lamentablemente la mayoria de
los programadores no saben como escribir programas paralelos. Esto se
debe probablemente a dos causas: 1) esta es una habilidad que solo
habian requerido la gente de nichos muy especificos que utilizan
supercomputadoras, grids y clusters; 2) escribir programas paralelos
correctos es considerablemente mas dificil que escribir programas
secuenciales, al menos usando la mayoria de las herramientas disponibles
en la actualidad.
Desde hace un par de decadas han existido dos modelos de programacion
concurrente:
* Hilos con estado compartido: se tiene una region de memoria compartida
por dos o mas hilos de ejecucion. Para evitar que dos hilos entren en
una condicion de carrera (hilos que intentan modificar el mismo
contenido de memoria al mismo tiempo) se debe usar algun mecanismo de
candados para garantizar una exclusion mutua. Los candados pueden ser
semáforos, monitores, etc, sin embargo el uso de candados conlleva a
otro tipo de problemas potenciales como son los candados mortales
(deadlocks) y la inanición.
* Paso de mensajes: los procesos se comunican entre si atraves del envio
y recepcion de mensajes asincronos. No hay memoria compartida entre los
procesos, por lo tanto no se requieren candados.
Casi todos los lenguajes usados en la industria usan hilos con estado
compartido. Debido a la complejidad inherente de este modelo, diversos
lenguajes han sido extendidos con bibliotecas y/o directivas especiales
que simplifican la escritura de programas paralelos. Open MP; por
ejemplo, es un API para C++ y Fortran que permiten de manera
relativamente sencilla paralelizar ciclos. El Task Parallel Library
disponible para C# 3.5, ofrece facilidades similares.
El paso de los mensajes por otro lado ofrece un mayor nivel de
abstraccion ya que el programador no tiene que interactuar con las
primitivas de bajo nivel asociadas normalmente con los hilos. El
lenguaje Erlan soporta ese modelo de programacion y ha sido usado de
manera extendica en el dominio de las telecomunicaciones para alcanzar
un alto grado de paralelistmo. Un programa en Erlang que haga uso de
cientros o hasta miles de procesos puede en principio tener una
excelente escalabilidad en cuanto se ejecute en un sistema con un número
mayor de núcleos..."
La revista es Software Guru [Mayo-Julio 2008], espero que esto te amplie
el panorama y las dudas ;)
--
Más información sobre la lista de distribución ubuntu-es