6.7. OTROS PAQUETES DE HILOS.

  1. LinuxThreads.
  2. Sun LWP de SunOS 4.0.
  3. El paquete de hilos de Chorus.

Existen otros paquetes de hilos que actualmente se están utilizando o se han utilizado de forma importante para el desarrollo de aplicaciones, aunque normalmente no son tan importantes como los anteriormente explicados.

Una lista de paquetes de hilos disponibles para sistemas UNIX es la siguiente :

1) FSU Pthreads : Frank Müller <mueller@informatik.hu-berlin.de>, del POSIX/Ada-Runtime Project (PART) ha realizado una implementación del estándar POSIX 1003.1c Draft 6 y Draft 10 para sistemas SunOS 4.1.x, Solaris 2.x, SCO Unix, FreeBSD y Linux, llamada Pthreads en Florida State University. Este paquete de nivel usuario es, junto con el paquete MIT Pthreads de Provenzano, uno de los más utilizados en la actualidad. Más información :

- Documentación :
http://www.cs.fsu.edu/~mueller/projects.html
http://www.informatik.hu-berlin.de/~mueller/projects.html
- Documentación del API :
ftp://ftp.cs.fsu.edu/pub/PART/publications/pthreads_interface.ps.gz
http://www.informatik.hu-berlin.de/~mueller/ftp/pub/PART/pthreads_interface.ps.Z
- Fuentes :
ftp://ftp.cs.fsu.edu/pub/PART/PTHREADS/pthreads.tar.gz
http://www.informatik.hu-berlin.de/~mueller/ftp/pub/PART/pthreads.tar.gz

2) PCThreads y DCE Threads: Michael T. Peterson <mtp@big.aa.net> ha escrito un paquete de nivel usuario compatible con POSIX.1c y DCE Threads para sistemas Linux bajo plataformas Intel, llamado PCThreads. Más información en :

- Documentación : 
http://www.aa.net/~mtp/PCthreads.html
- Fuentes : 
ftp://sunsite.unc.edu/pub/Linux/devel/lang/c/dcethreads-1.0.tar.gz
ftp://sunsite.unc.edu/pub/Linux/devel/lang/c/pthreads-1.0.tar.gz

3) C Threads : Georgia Tech's OS Group ha desarrollado una implementación de nivel usuario portable del paquete C-Threads de Mach, llamada Cthreads, y se puede encontrar en la siguiente dirección :

ftp://ftp.cc.gatech.edu/pub/groups/systems/Falcon/cthreads_distribution.tar.gz

4) Ethreads : Elan Feingold ha escrito un paquete de hilos llamador ethreads. Más información :

ftp://frmap711.mathp7.jussieu.fr/pub/scratch/rideau/misc/threads/ethreads/ethreads.tgz

5) CL Threads : Pavel Krauz <kra@fsid.cvut.cz> ha desarrollado un paquete de hilos para Linux 2.0 basado en la llamada clone(), llamado CLthreads, que sigue el estándar POSIX.1c. Más información :

- Fuentes :

ftp://lin.fsid.cvut.cz/pub/linux/clthreads/clthreads-0.1.1.tgz

- Binario:
ftp://lin.fsid.cvut.cz/pub/linux/clthreads/clthreads-0.1.1.bin.tgz

6) Bare-Bones Threads : Christopher Neufeld <neufeld@physics.utoronto.ca> ha desarrollado un paquete de hilos particular para sistemas Linux SMP y uniprocesador, basado en la llamada clone(). Tiene un API particualr y no sigue ningún estándar. Más información :

- Fuente :
ftp://caliban.physics.utoronto.ca/pub/linux/bb_threads.tar.gz

7) JKthread : Jeff Koftinoff <jeffk@awinc.com> ha desarrollado un paquete de hilos no estándar para Linux 2.0, basado en la llamada clone(). Incluye clases para C++. Más información :

Documentación :
http://turnercom.com/jdk/linux3.html
Fuentes :
http://turnercom.com/jdk/jkthread-1.1.tar.gz

8) LWP : Stephen Crane <jsc@doc.ic.ac.uk> ha desarrollado una biblioteca de procesos ligeros (LWPs) que no sigue ningún estándar para Sun3/4, MIPS-Ultrix, 386BSD, HP-UX y Linux. Más información :

- Documentación :
ftp://gummo.doc.ic.ac.uk/rex/lwp.ps.gz
- Fuentes :
ftp://gummo.doc.ic.ac.uk/rex/lwp.tar.gz

9) NThreads (Numerical Threads) : Thomas Radke <Thomas.Radke@informatik.tu-chemnitz.de> ha desarrollado un paquete de hilos de nivel usuario para sistemas Linux, que incluye "patches" para permitir que el kernel Linux soporte hilos. El API no es estándar. Más información :

- Documentación :
ftp://ftp.tu-chemnitz.de/pub/Local/informatik/linux
- Fuentes :
ftp://ftp.tu-chemnitz.de/pub/Local/informatik/linux/nthreads.tgz

10) RexThreads : Stephen Crane <jsc@doc.ic.ac.uk> ha desarrollado una biblioteca de hilos de nivel usuario que no sigue ningún estándar. Más información :

- Documentación :
ftp://gummo.doc.ic.ac.uk/rex/lwp.ps.gz
- Fuentes :
ftp://gummo.doc.ic.ac.uk/rex/lwp.tar.gz

11) QuickThreads : Es una herramienta que permite construir paquetes de hilos de nivel usuario de forma sencilla, desarrollada por David Keppel <pardo@cs.washington.edu>. El código está escrito para plataformas Alpha, x86, 88000, MIPS, SPARC, VAS y KSR-1. Más información :

- Documentación :
ftp://ftp.cs.washington.edu/tr/1993/05/UW-CSE-93-05-06.PS.Z
- Fuentes :
ftp://ftp.cs.washington.edu/pub/qt-001.tar.Z
ftp://ftp.cs.washington.edu/pub/qt-002.tar.Z


Algunos de los paquetes que también se pueden destacar se presentan brevemente a continuación.

LinuxThreads.

LinuxThreads 0.4 (beta) es una implementación del interfaz POSIX 1003.1c Pthreads desarrollada por Xavier Leroy (xleroy@inria.fr o Xavier.Leroy@inria.fr) para el sistema operativo Linux. Soporta plataformas Intel, Alpha y Motorola 68k bajo la versión 2.0 de Linux. Emplea hilos de nivel kernel puros, y es uno de los paquetes de hilos más utilizado en sistemas Linux.

LinuxThreads Proporciona hilos a nivel kernel, ya que cada hilo de usuario es implementado mediante un proceso Unix distinto, compartiendo su espacio de direcciones con los otros hilos mediante la nueva llamada al sistema clone(). Así pues, la planificación de los hilos es gestionada por el planificador del kernel, de la misma forma que planifica otros procesos Unix.

Las ventajas de los hilos de nivel kernel frente a los hilos de nivel usuario son :

Las desventajas de emplear está implementación de nivel kernel son :

LinuxThreads implementa todas las funciones del interfaz base POSIX.1c. Redefine también numerosas funciones de la biblioteca C para hacerlas reentrantes y seguras frente a hilos. Se puede encontrar más información en las siguientes direcciones :

- Documentación :
http://pauillac.inria.fr/~xleroy/linuxthreads/
- Fuentes :
ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy/linuxthreads.tar.gz



Sun LWP de SunOS 4.0.

La biblioteca Sun LWP proporcionada por SunOS 4.0 es un clásico paquete de hilos de nivel usuario solamente. No contiene soporte kernel explícito. Los hilos de nivel usuario, que en el paquete se llaman LWP (pero que no corresponden con la terminología de SunOS 5.0) se sincronizan sin intervención del kernel. Pero si un hilo realiza una llamada al sistema, o genera una falta de página, se suspende el proceso completo, y por lo tanto el resto de hilos del proceso. Esto puede solucionarse empleando una biblioteca de E/S sin bloqueo en vez de la biblioteca estándar UNIX de E/S. La biblioteca de E/S sin bloqueo emplea las facilidades de E/S asíncrona soportadas por el kernel para simular la E/S estándar y permitir que el paquete conmute a otro hilo cuando se produce un bloqueo o una E/S indefinida.

Sin embargo, la arquitectura multihilo de SunOS 5.0 supera a este interfaz en funcionalidad, por lo cual está obsoleto.

El paquete de hilos de Chorus.

El sistema operativo Chorus está enfocado como sistema operativo de tiempo real, y por ello evita intencionadamente los hilos de nivel usuario debido al impacto que ocasionan en los requisitos de tiempo real. Sólo implementa hilos de nivel kernel.

Cada hilo de Chorus tiene una máscara de señales y un vector de gestores de señales. Si se produce una señal asíncrona, del tipo SIG_DFL o SIG_IGN, se informa a todos los hilos que la tienen habilitada y es capturada por cada uno de ellos, lo cual produce una gran sobrecarga.