Threads y su NO determinismo
Hace unos días el Ing. Luis Álvarez Oval catedrático de la materia de Sistemas Operativos me envió una información muy interesante en la que se hace un analisis minucioso a los hilos (threads). Cuántos de nosotros hemos preferido dentro de la programación concurrente el uso de threads?, sólo porque son de memoria compartida, su especificación parece ser más optima o simplemente porque es la “moda”, pero la verdad es que la universidad de Berkeley en California se encargó de analizar este método y como resultado fork sigue siendo la opción más viable, aunque es un poco mas lento pero tiene un punto a favor, fork es un finito determinista.
Muchos de los que leen este post no lo imaginaban y deben estar sorprendidos aunque muchos otros ya lo sepan pero si, los hilos (threads) son finitos NO deterministas… ¿Qué significa esto? Bien, las embarazosamente llamadas aplicaciones paralelas que esencialmente engendran múltiples procesos independientes tales como herramientas de construcción (PVM gmake) o Servidores Web. Dada esta independencia de las aplicaciones, la programación es relativamente fácil y la abstracción usada es mucho más parecida a los procesos que a los hilos. ¿Cómo es esto? Desde una perspectiva fundamental los hilos están seriamente debilitados como modelo computacional ya que son salvajemente no deterministas. El trabajo del programador es eliminar ese no determinismo. Se han desarrollado herramientas que nos ayudan a la eliminación: Semáforos, monitores y los modernos hilos ofrecen al programador una eliminación mucho más efectiva. Pero eliminar una masa salvaje de zarzas raramente produce una cerca satisfactoria.
Una oportunidad más desafiante y de largo plazo podría adaptar la teoría de la computación para que ésta provea mejores fundamentos al cálculo concurrente. Aunque los investigadores han hecho un considerable progreso en ésta dirección, mucho más debe de ser hecho. Además de la computación secuencial modelada como funciones proyectando secuencias de bits, un correspondiente modelo concurrente que, en lugar de una función:
f: B** AE B**
De un cálculo concurrente como una función
f: (T AE B**) AE (T AE B**)
Con conjunto de etiquetas T total o parcialmente ordenado, donde el orden puede representar el tiempo, causando mas relaciones de dependencia. Un calculo visto de éste modo proyecta un patrón de bits en evolución. Ésta fórmula básica ha demostrado ser adaptable a muchos modelos de cálculo concurrentes. Lograr la concurrencia en software es difícil.
Si esperamos que la programación concurrente se convierta en el modelo principal, y si demandamos confiabilidad y previsibilidad de los programas, debemos de descartar los hilos como modelo de programación. Podemos construir modelos de programación concurrente que sean mucho más previsibles y comprensibles que los hilos basados en un simple principio: las metas deterministas deben ser logradas con medios deterministas. El indeterminismo debe ser juiciosa y cuidadosamente introducido solo donde sea necesario, y debe de ser explicito en los programas. Este principio parece obvio, pero los hilos no lo cumplen. Deben de ser relegados a un laboratorio de computación, pare ser experimentados solo por expertos proveedores de tecnología. ¿Seguimos usando hilos?, ¿qué opinas?



Amigo, no se de cual fumaste, pero en verdad, cuando la fumes, revisa primero si es de la buena,
tu estabas cagando en los pañales cuando la programacion concurrente ya existia,
los hilos….ya existian….no es una “moda” !! ……no se quien sea ese tal oval, pero por favor
dile que ya se actualize…e igual tu, ademas, veo q eres fanatico de linux, si bien se
que bajo linux puedes manipular las hebras, tambien puedes usar tus “fork” entonces..
por q tu dilema de que usar? tu mismo te das una respuesta…
Hijo…
Linux.-…como sistema operativo es fregon, no lo niego….
pero personas ignorantes hacen decaer a linux”
Comment by cyberiano — October 8, 2007 @ 4:04 pm
Disculpa la tardanza de mi respuesta Sergio.
Empecemos, en primer lugar no lo digo yo y ni lo dice el Ing. Oval (a quien conoces perfectamente pues te dio clases), lo dice la Universidad de Berkeley (Hay que poner atención Sergio). En segundo lugar lamento decirte que no analizaste correctamente el mensaje y por lo tanto tu comentario esta casi fuera de contexto, eres el primero que me dice esto.
Saludos y que no te de miedo decir las verdades sin ocultar tu identidad Sergio, no me molesta.
Comment by Adlair Cerecedo — November 10, 2007 @ 12:54 am