You are on page 1of 5

3.

3 Conceptos de rendimiento
Concepto de hilos
En sistemas operativos, un hilo de ejecucin, hebra o subproceso es la unidad de
procesamiento ms pequea que puede ser planificada por un sistema operativo.
La creacin de un nuevo hilo es una caracterstica que permite a una aplicacin realizar
varias tareas a la vez (concurrentemente). Los distintos hilos de ejecucin comparten una
serie de recursos tales como el espacio de memoria, los archivos abiertos, situacin de
autenticacin, etc. Esta tcnica permite simplificar el diseo de una aplicacin que debe
llevar a cabo distintas funciones simultneamente.
Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo con otra
tarea.
Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos,
son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecucin de un
mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda
modificar stos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a
ese dato modificado inmediatamente.
Lo que es propio de cada hilo es el contador de programa, la pila de ejecucin y el estado
de la CPU (incluyendo el valor de los registros).
El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga
activo. Cuando el proceso finaliza, todos sus hilos de ejecucin tambin han terminado.
Asimismo en el momento en el que todos los hilos de ejecucin finalizan, el proceso no
existe ms y todos sus recursos son liberados.
Algunos lenguajes de programacin tienen caractersticas de diseo expresamente
creadas para permitir a los programadores lidiar con hilos de ejecucin (como Java o
Delphi). Otros (la mayora) desconocen la existencia de hilos de ejecucin y stos deben
ser creados mediante llamadas de biblioteca especiales que dependen del sistema
operativo en el que estos lenguajes estn siendo utilizados (como es el caso del C y del
C++).
Un ejemplo de la utilizacin de hilos es tener un hilo atento a la interfaz grfica (iconos,
botones, ventanas), mientras otro hilo hace una larga operacin internamente. De esta
manera el programa responde de manera ms gil a la interaccin con el usuario.
Tambin pueden ser utilizados por una aplicacin servidora para dar servicio a mltiples
clientes.
Funcionalidad de los hilos
Al igual que los procesos, los hilos poseen un estado de ejecucin y pueden sincronizarse
entre ellos para evitar problemas de compartimiento de recursos. Generalmente, cada hilo
tiene una tarea especifica y determinada, como forma de aumentar la eficiencia del uso
del procesador.
Estados de un hilo
Los principales estados de los hilos son: Ejecucin, Listo y Bloqueado. No tiene sentido
asociar estados de suspensin de hilos ya que es un concepto de proceso. En todo caso,
si un proceso est expulsado de la memoria principal (RAM), todos sus hilos debern
estarlo ya que todos comparten el espacio de direcciones del proceso.
Cambio de estados
Creacin: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo
puede crear otros hilos dentro del mismo proceso, proporcionando un puntero de
instruccin y los argumentos del nuevo hilo. El hilo tendr su propio contexto y su propio
espacio de la columna, y pasar al final de los Listos.
Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando
sus registros de usuario, contador de programa y punteros de pila). Ahora el
procesador podr pasar a ejecutar otro hilo que est en la final de los Listos
mientras el anterior permanece bloqueado.
Desbloqueo: Cuando el suceso por el que el hilo se bloque se produce, el mismo
pasa a la final de los Listos.
Terminacin: Cuando un hilo finaliza se liberan tanto su contexto como sus
columnas.
Ventajas de los hilos contra procesos
Si bien los hilos son generados a partir de la creacin de un proceso, podemos decir que
un proceso es un hilo de ejecucin, conocido como Monohilo. Pero las ventajas de los
hilos se dan cuando hablamos de Multihilos, que es cuando un proceso tiene mltiples
hilos de ejecucin los cuales realizan actividades distintas, que pueden o no ser
cooperativas entre s. Los beneficios de los hilos se derivan de las implicaciones de
rendimiento.
1. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que
en crear un proceso. Algunas investigaciones llevan al resultado que esto es as
en un factor de 10.
2. Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se
elimina un proceso se debe eliminar el BCP
1
del mismo, mientras que un hilo se
elimina su contexto y pila.
3. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso
4. Los hilos aumentan la eficiencia de la comunicacin entre programas en ejecucin.
En la mayora de los sistemas en la comunicacin entre procesos debe intervenir
el ncleo para ofrecer proteccin de los recursos y realizar la comunicacin
misma. En cambio, entre hilos pueden comunicarse entre s sin la invocacin al
ncleo. Por lo tanto, si hay una aplicacin que debe implementarse como un
conjunto de unidades de ejecucin relacionadas, es ms eficiente hacerlo con una
coleccin de hilos que con una coleccin de procesos separados.
Sincronizacin de hilos
Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden
ser archivos abiertos. Cualquier modificacin de un recurso desde un hilo afecta al
entorno del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la
actividad de los distintos hilos para que no interfieran unos con otros o corrompan
estructuras de datos.
Una ventaja de la programacin multihilo es que los programas operan con mayor
velocidad en sistemas de computadores con mltiples CPUs (sistemas multiprocesador o
a travs de grupo de mquinas) ya que los hilos del programa se prestan verdaderamente
para la ejecucin concurrente. En tal caso el programador necesita ser cuidadoso para
evitar condiciones de carrera (problema que sucede cuando diferentes hilos o procesos
alteran datos que otros tambin estn usando), y otros comportamientos no intuitivos. Los
hilos generalmente requieren reunirse para procesar los datos en el orden correcto. Es
posible que los hilos requieran de operaciones atmicas para impedir que los datos
comunes sean cambiados o ledos mientras estn siendo modificados, para lo que
usualmente se utilizan los semforos. El descuido de esto puede generar interbloqueo.
Formas de multihilos
Los sistemas operativos generalmente implementan hilos de dos maneras:
Multihilo apropiativo: permite al sistema operativo determinar cundo debe haber
un cambio de contexto. La desventaja de esto es que el sistema puede hacer un
cambio de contexto en un momento inadecuado, causando un fenmeno conocido
como inversin de prioridades y otros problemas.
Multihilo cooperativo: depende del mismo hilo abandonar el control cuando llega a
un punto de detencin, lo cual puede traer problemas cuando el hilo espera la
disponibilidad de un recurso.
http://es.wikipedia.org/wiki/Hilo_de_ejecuci%C3%B3n#Funcionalidad_de_los_hilos






Conceptos bsicos de programacin Multiforme
El concepto de polimorfismo es crucial para la programacin orientada a objetos. En su
concepcin relativa a C++, el trmino polimorfismo se utiliza para describir el proceso
mediante el cual se puede acceder a diferentes implementaciones de una funcin
utilizando
el mismo nombre. Por esta razn el polimorfismo se define a veces mediante la frase una
interface mtodos mltiples. Esto significa que en general se puede acceder a toda una
asociadas a cada una de las operaciones pueda ser diferente.
En C++, el polimorfismo se admite tanto en el momento de la ejecucin como en el
momento de la compilacin. La sobrecarga de operadores y de funciones es un ejemplo
de
polimorfismo en el momento de la compilacin. Sin embargo, aunque la sobrecarga de
operadores y de funciones son muy potentes, no pueden llevar a cabo todas las tareas
que
requiere un verdadero lenguaje orientado a objetos. Por tanto, C++ permite tambin el
polimorfismo en el momento de la ejecucin mediante el uso de clases derivadas y de
funciones virtuales.
http://dis.um.es/~jfernand/0506/dai/poo.pdf

Conceptos de diseo
El proyecto tiene como objetivo el diseo de soluciones de bajo consumo centrado en las
comunicaciones heterogneas que se presentan en arquitecturas multi-ncleo, con
especial hincapi en tecnologa CMOS con reglas de diseo de 45nm y 32nm. Como
ejemplos significativos se pueden citar la prxima generacin de telfonos mviles
inteligentes multi-procesador o cualquier otro dispositivo mvil enmarcado dentro del estilo
de vida digital. Las investigaciones de COMCAS abarcan toda la jerarqua de diseo de
bajo consumo, haciendo especial nfasis en las diferentes opciones a nivel de sistema,
modelado de aplicaciones (algoritmos, protocolos) y arquitecturas, maximizar la
reutilizacin de diseos existentes (IP) usando las herramientas ms apropiadas: de
particionado y mapeado, prototipado virtual de ciclo exacto (cycle-accurate), requisitos de
consumo mnimo uniendo metodologas de diseo semi y full-custom a nivel de transistor
en tecnologas de 45nm y ms all.

La solucin de diseo multi-procesador heterognea desarrollada dentro del proyecto
COMCAS, tendr un potencial para aumentar la eficiencia energtica reduciendo el
consumo de energa en un factor de 5. Las nuevas tecnologas usadas en las plataformas
COMCAS, junto con el diseo orientado a bajo consumo, permitirn el diseo de
dispositivos ms pequeos capaces de manejar vdeo en alta definicin (HD), imgenes
de alta resolucin, grficos con capacidad 3D. Uno de los telfonos mviles de gama alta
ms populares hoy en da consume alrededor de 2W cuando ejecuta vdeo en alta
definicin. Esto significa que una recarga de batera puede durar un mximo de 2 horas.
Con las innovaciones propuestas en el proyecto COMCAS, se pondr extender este
tiempo hasta 10 horas en el mismo escenario de uso
http://www.i3a.uclm.es/joomla2/index.php?option=com_content&view=article&id=112%3A
comcas-communication-centric-heterogeneous-multi-core-
architectures&catid=42%3Araap&Itemid=97&lang=es
Conceptos de correctitud
la correccin de un algoritmo, tambin llamada correctitud (como adaptacin de la palabra
inglesa correctness), corresponde a una propiedad que distingue a un algoritmo de un
procedimiento efectivo.
Un algoritmo es correcto, si:
1. Resuelve el problema computacional para el cual fue diseado.
2. Para cada entrada, produce la salida deseada.
3. Termina en un tiempo de ejecucin finito.
Si cualquiera de estos tres puntos no se cumple, entonces estamos hablando de un
algoritmo incorrecto, que para efectos prcticos, carece de utilidad, al no ser ms que un
procedimiento efectivo, es decir, una secuencia ordenada y determinista de pasos.
http://es.wikipedia.org/wiki/Correctitud
Conceptos de rendimiento
Replicar todo el ncleo del procesador en un solo chip mejora el
rendimiento de una aplicacin paralelizada
Evolucin natural de HT
El rendimiento mejora para aplicaciones paralelizadas
Avances en la tecnologa del compilador continan impulsando el rendimiento
OpenMP, Auto-parallelizacin, los compiladores incorporan las
ltimas innovaciones del procesador
El Cache y la frecuencia de reloj no influyen en el rendimiento de la aplicacin
El cache y la frecuencia del reloj siguen contribuyendo

http://webcache.googleusercontent.com/search?q=cache:f-
Fzi3rqRyQJ:academiamulticore.org/materialsv2/01%2520-
%2520El%2520reto%2520de%2520paralelismo%2520y%2520Multicore.ppt+&cd=1&hl=e
s-419&ct=clnk&gl=mx