Gibt es einen Unterschied in der Funktionsweise von Threads in Linux gegenüber Unix gegenüber Solaris - Linux, Unix, Solaris

Ich bin nur neugierig, ob es einen Unterschied gibt, wie Threads in den verschiedenen Varianten von Unix funktionieren.

Insbesondere Linux, Solaris und das ursprüngliche Unix

Irgendwelche Gedanken?

Antworten:

6 für die Antwort № 1

Das ursprüngliche Unix verwendet keine Threads fürMultiprogrammierung. Ein Artikel aus dem Jahr 1987, der den Kernel von Mach und Unix vergleicht, besagt, dass "weder Unix System V noch 4.3 BSD eine Möglichkeit bieten, mehr als einen Steuerungsstrang innerhalb eines Adressraums zu verwalten".

Moderne Unix-Klone halten sich an die POSIX-ThreadsSpezifikation. Der POSIX-Thread-Standard erschien erst 1995. Die zugrunde liegende Implementierung in Linux basiert auf den Systemaufrufen clone () und futex (), die vom Kernel implementiert werden. Der Systemaufruf clone () erstellt einen neuen leichtgewichtigen Prozess, der einen Speicherbereich mit seinem Kind teilen kann. So ruft beispielsweise der Aufruf der Bibliothek pthread_create () intern den Systemaufruf clone () auf. Der futex () - Systemaufruf implementiert ein Synchronisationsgrundelement, das zum Erstellen größerer Synchronisationsoperationen wie Mutexe, Semaphoren usw. verwendet werden kann. So ruft beispielsweise pthread_mutex_lock () intern futex () auf.

Unter Verwendung der POSIX-Terminologie ist das Linux-Implementierungsmodell ein "Kernel-Thread-Modell", auch bekannt als 1: 1-Modell, bei dem ein Kernel-Lightweight-Prozess für einen Benutzer sichtbaren Thread verwendet wird.

Linux hatte im Laufe der Zeit auch verschiedene Threading-Implementierungen. Weitere Informationen zur Unterstützung von Threads unter Linux finden Sie in pthreads (7), clone (2) und futex (2) Handbuchseiten.

Andere Implementierungen können völlig unterschiedlich seinund implementieren Sie weiterhin die POSIX-Threads-API. FreeBSD verwendete eine M: N-Implementierung oder ein "hybrides Modell", bei dem ein vom Benutzer sichtbarer Thread entweder vom Kernel oder von einer Benutzer-Space-Bibliothek verwaltet werden konnte. Eine vollständige Beschreibung finden Sie auf der kse (2) Handbuchseite. Ich habe einmal die aktuelle 1: 1 FreeBSD Threading-Implementierung zu einem Artikel in Kernelfalle verfolgt:

http://web.archive.org/web/20110512021159/http://kerneltrap.org/node/624

OpenSolaris scheint seine eigenen nicht zu beschreibenThreading-Implementierung auf man-Seiten. Ich könnte stattdessen ein Dokument finden, das den OpenSolaris-Kernel mit Linux 2.6 und Windows Vista vergleicht. Ein Hauptunterschied zwischen der Linux- und OpenSolaris-Implementierung besteht darin, dass in Linux jeder Prozess ein einfacher Prozess ist, der Threads und Prozesse vereint, während in OpenSolaris ein Prozess mehrere leichtgewichtige Prozesse enthält, die den Prozess im Kern vom Kernel trennen .

Verweise:

http://en.wikipedia.org/wiki/Thread_(computing)

http://en.wikipedia.org/wiki/POSIX_Threads

http://repository.cmu.edu/cgi/viewcontent.cgi?article=2728&context=compsci

http://man7.org/linux/man-pages/man7/pthreads.7.html

http://man7.org/linux/man-pages/man2/clone.2.html

http://man7.org/linux/man-pages/man2/futex.2.html

http://pubs.opengroup.org/onlinepubs/7908799/xsh/threads.html

http://www.freebsd.org/cgi/man.cgi?query=kse&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html

http://web.archive.org/web/20110512021159/http://kerneltrap.org/node/624

http://www.unix.com/man-page/opensolaris/5/threads/

http://www.infoq.com/articles/kernel-comparison-unix-zhu


Am beliebtesten