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