Ich habe das heute bemerkt - mein gesamtes System ist eingefroren, die Uhr ist eingefroren, nichts reagiert auf Klicks und Tastendrücke, und meine Zeitmaschinenanimation läuft nicht mehr. Während der Neupartitionierung meines Startlaufwerks. Ich hatte auch iTunes geöffnet, das gerne weiter Musik abspielte. Wie schafft es iTunes, Medien weiter abzuspielen, wenn das gesamte Betriebssystem nicht mehr reagiert? Kein anderer OS X-Mediaplayer, den ich gesehen habe, kann dies, und ich würde gerne wissen, wie dies möglich ist.
Vielen Dank.
Antworten:
Ich glaube, iTunes verwendet
real-time threads
, was eine bestimmte Art von Threads ist, die einen konstanten Bruchteil der Zeit erhalten, was auch immer auf der Maschine passiert. In diesem Apple-Dokument finden Sie eine kurze Diskussion. Weitere Informationen finden Sie im Buch OS X Internal . Das Buch ist ein bisschen veraltet (es geht hauptsächlich um 10.4 Tiger), aber die Kernel-Interna haben sich nicht drastisch geändert.Ich denke, andere Media Player fungieren nicht als Echtzeit-Threads. Heutzutage sind die Computer ziemlich leistungsfähig und die Musik hört auch unter den Standard-Planungsrichtlinien nicht auf, es sei denn, Sie erledigen eine äußerst kernelintensive Aufgabe.
quelle
Ich vermute, wenn Sie einen Titel für iTunes auswählen, überträgt iTunes fast alle Rohdaten des Titels in einen DMA. Aufgrund der Art und Weise, wie E / A-Geräte mit der CPU kommunizieren, verfügt jedes Gerät über eine eigene Speicheradresse. Nachdem die CPU die Daten an diese Adresse gesendet hat, kann das E / A-Gerät die Daten dort verwenden, ohne dass die CPU sie überwachen muss. ITunes verschiebt also die Daten für den Titel an die Speicheradresse des Audiogeräts und das Audiogerät beginnt mit der Wiedergabe. Wenn die CPU während der Wiedergabe eines Songs abstürzt, hat das Audiogerät nicht bemerkt, dass die CPU gestoppt ist, und verwendet während der Wiedergabe des Songs weiterhin die Daten aus der Speicheradresse.
quelle