gemeinsam zwiften | youtube | forum heute
4 Radtage Südbaden
4 Radtage
Südbaden
4 Radtage Südbaden
Keine Flugreise
Deutschlands wärmste Gegend
Kilometer sammeln vor den Wettkämpfen
Traumhafte Trainingsstrecken
Training auf dem eigenen Rad
30.04..-03.05.2026
EUR 199,-
triathlon-szene.de | Europas aktivstes Triathlon Forum - Einzelnen Beitrag anzeigen - Apple-User bitte meldet euch
Einzelnen Beitrag anzeigen
Alt 09.04.2010, 14:12   #46
Helmut S
Szenekenner
 
Registriert seit: 30.10.2006
Beiträge: 9.788
Das hier

Zitat:
/* List of modules, protected by module_mutex or preempt_disable
* (delete uses stop_machine/add uses RCU list operations). */
ist ein Kommentar aus dem aktuellen Linux Kernel 2.6.34 rc4 (module.c). Dieses Beispiel sagt schlicht alles: preempt_disable - das ist das Kernproblem. Das ganze Modul Handling wimmelt von preempt_disable(). Und die Treiber selber wimmeln von spin_lock() Primitiven.

Versteh mich nicht falsch: Das ist saubere Arbeit und absolut UNIX Standard. Nur ist es halt nach wie vor monolithisch.

Monolithisch bedeutet im Kern des Konzeptes auch auch nicht, dass man den Kern neu linken muss wenn man nen neuen Treiber einbinden will. Bei vielen Unixen hat man das früher so gemacht bevor es BTLD (boottime loadable drivers) gab aber das ist nicht der Grund für monolithisch oder nicht. BTLD ist ein anderes Konzept.

Wobei ich bzgl. spin_lock() nicht mal sicher bin wie gut oder schlecht spin_lock() implementiert ist. Ich erinnere mich noch gut als ich mir das Threading im Linux Kernel mal vor zich Jahren angesehen habe, da war dann pthread_create() mit nem fork() implementiert .... jetzt ist das wohl (hoffentlich) anders.

Helmut

Geändert von Helmut S (09.04.2010 um 14:20 Uhr).
Helmut S ist offline   Mit Zitat antworten