• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

OSX begrenzt Multitasking fähig?!?

… und dann rechnet genau dieser rechenhungrige Thread wieder die ganze Zeit weiter. Die anderen Threads haben keine Chance, bis der Thread endlich mal aufhört so egoistisch zu sein.…

Dieses Szenario ist vermeidbar auf OS X. OS X hat präemptives und nicht kooperatives Multitasking und bietet eine passende Threadverwaltung. Es ist sogar echtzeitfähig. Ein Blick in "Mac OS X Internals" von Amit Singh oder vergleichbare Literatur erklärt das.
 
Zuletzt bearbeitet:
präemptives Multitasking hab ich doch auch beschrieben. Der Scheduler gibt den Timeslice vor. Der Timeslice variiert je nach Algorithmus, aber die heutigen Algorithmen nutzen alle nur noch präemptive Multitasking.
Jedoch wird das Thread-Management losgelöst vom Scheduling-Algorithmus des Kernels behandelt. Hier weiß ich nicht welches Thread-Management genutzt wird, jedoch ist es in der Natur des User-Level-Threads, dass dieser bei Blockade, den kompletten Prozess bzw. die restlichen Threads blockiert.
Das Scheduling über das System findet hier nicht statt. Das Scheduling findet Anwendung am Prozess, den eigentlichen Container sozusagen. Innerhalb des Prozess laufen aber mehrere Threads, die, falls sie User-Level-Threads sind, was ich beim Finder als Benutzerprozess stark annehme, jedoch vom Prozess selbst verwaltet werden. Der Kernel hat in der Hinsicht keinen Einfluß auf die Abarbeitung der Threads innerhalb des Prozesses. Es ist ein anwendungsspezifisches Scheduling, welches hier seinen Ansatz findet.
Wie das Apple nun beim Finder realisiert hat, weiß ich nicht. Dazu beschäftige ich mich zu doch irgendwie fiel zu wenig mit.
Aber hier würde ich wirklich Thread und Prozess getrennt halten wollen.
 
Der Kernel verwaltet jeden Thread, auch jeden einzelnen Thread jeder Anwendung. Letztendlich wird in OS X nämlich jeder Thread, egal in welcher Sprache er umgesetzt ist, durch einen Mach-Thread realisiert, der vom Kernel kontrolliert wird. Wenn Dich das Thema interessiert, weise ich nochmals auf das Buch von Amit Singh hin. Dort steht das detailliert beschrieben.
 
Danke auf jeden Fall für den Buchtipp! Der ist bereits längts notiert. Wollte mich sowieso näher mit dem konkreten Aufbau von OS X beschäftigen.

Aber das würde mich echt überraschen, wenn die ULT tatsächlich wie die Kernel-Threads gehandhabt werden. Aber möglich ist es natürlich.