Was passiert wirklich bei Apfel+H?

ki_heitkamp

Gast
Trapper schrieb:
Falls ein "Überangebot" an CPUs existiert, muss theoretisch kein Time-Sharing-Betrieb gefahren werden. Jeder Prozess hat "seine" CPU und kann diese beanspruchen solange er läuft. Die CPU muss einem Prozess nicht entzogen werden, da durch das "Überangebot" keine Konkurrenzsituation zwischen den Prozessen entsteht.

Hört sich erst mal gut an. Aber eigentlich blöd, das dann z.B. Mail, das alle zehn Minuten nach neuen Mails guckt genau so viel Rechenpower belegt wie Cinema4D, das gerade eine 5 Minuten Sequenz in Kinoauflösung, mit 16facher Bewegungsunschärfe etc. berechnet, anstatt die ungenutze CPU an C4D abzugeben …
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Genau deswegen verteilt das Betriebsystem auch, falls das jeweilige Programm das möglich macht, alle Prozesse al Gusto auf alle verfügbaren Prozessoren ;)
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
ki_heitkamp schrieb:
Aber eigentlich blöd, das dann z.B. Mail, das alle zehn Minuten nach neuen Mails guckt genau so viel Rechenpower belegt wie Cinema4D, das gerade eine 5 Minuten Sequenz in Kinoauflösung, mit 16facher Bewegungsunschärfe etc. berechnet, anstatt die ungenutze CPU an C4D abzugeben ...

In diesem Fall existiert aber kein Überangebot an CPUs. Denn "eine CPU abgeben" funktioniert ja nur, wenn das entsprechende Programm aus mehreren Threads besteht.
Bei Mehrprozessorsystemen ist das Prozess-Scheduling noch etwas komplexer. So kann man z.B. einen CPU-affinen Scheduler einsetzen, damit die CPU-Caches besser genutzt werden. Wechselt nämlich ein Prozess von einer CPU auf eine andere, so befinden sich in dem Cache der neuen CPU noch keine Daten des Prozesses.
 

atl

Niederhelfenschwiler Beeriapfel
Registriert
04.11.04
Beiträge
842
ki_heitkamp schrieb:
Hört sich erst mal gut an. Aber eigentlich blöd, das dann z.B. Mail, das alle zehn Minuten nach neuen Mails guckt genau so viel Rechenpower belegt wie Cinema4D, das gerade eine 5 Minuten Sequenz in Kinoauflösung, mit 16facher Bewegungsunschärfe etc. berechnet, anstatt die ungenutze CPU an C4D abzugeben ...

Tut es ja nicht. Wenn Mail keine Rechenzeit benötigt, weil es nix tut, dann gibt der Scheduler die Rechenzeit der CPU frei. Sollte kein weiteres Programm Rechenzeit benötigen (weil z.B. jedes Programm seine "eigene" CPU hat), so wird die CPU (heutzutage) angehalten bzw. wird in stromsparende Modi geschalten (z.B. heruntertakten oder gar "schlafen" geschickt).

ByE...
 

BillyBlue

Adams Apfel
Registriert
22.08.05
Beiträge
517
Macht OSX denn eine Unterschied zwischen APFEL + H zum Minimieren? Also wird beim Minimieren mehr Speicher & CPU freigegeben als beim Hide?
 

atl

Niederhelfenschwiler Beeriapfel
Registriert
04.11.04
Beiträge
842
Nein, da macht das Betriebssystem bzw. der Kernel keinen Unterschied. Es wird auch kein Speicher freigegeben, wenn ein Programm ausgeblendet oder minimiert wird.
Speicher wird freigegeben bzw. auf den Swapspace ausgelagert, wenn das System für andere Prozesse Speicherplatz benötigt. Welches Programm dann ausgelagert wird, entscheidet sich nach der Priorität der laufenden Programme. Diese wiederum wird dynamisch angepasst, jenach dem ob es Resourcen anfordert oder z.B. gerade Rechenzeit hatte. Ausgelagert werden Programme mit der niedrigstem Priorität.

Kleines (einfaches) Beispiel: Es laufen 3 Prozesse auf einem System. Da der Prozessor nur einen Prozess zu einer bestimmten Zeit ausführen kann, müssen zwei immer warten. Der "Scheduler" (als Teil des Kernels) teilt die Rechenzeit der CPU den Prozessen zu. Hat ein Prozess seine zugeilte Rechenzeit "aufgebraucht", so bekommt er die niedrigste Priorität. Jetzt bekommt aus den 3 Prozessen derjenige die nächste Einheit CPU-Zeit, welcher die höchste Priorität hat. Die Prioritäten der wartenden Prozesse wird gleichzeitig erhöht. Im einfachsten Fall würde jeder Prozess immer den gleichen Anteil CPU-Zeit bekommen wie die anderen. Und sie würden immer in der selben Reihenfolge Rechenzeit zugeteilt bekommen. Wenn jetzt der Speicher für diese 3 Prozesse nicht ausreicht, sondern nur für 2 z.B., dann wird der Prozess mit der geringsten Priorität ausgelagert. Das wäre dann immer der, der gerade seine CPU-Zeit entzogen bekommen hat.

Ich hoffe, das ist halbwegs verständlich. Bei den modernen Betriebssystemen gibt es natürlich noch mehr Faktoren, die die Prioritäten der Prozesse beeinflussen, z.B. Interrupts, etc. Mehr findet man hier in der zur Verfügung stehenden Leseprobe. :)

Das alles spielt sich sehr tief unten im System ab, nämlich im Bereich des Kernels. Und da unten weiß keiner was davon, ob evtl. eine Applikation ausgeblendet oder minimiert ist. Dort interessiert nur, die Prorität von Prozessen sowie deren Speicherbedarf. :)

ByE...
 

BillyBlue

Adams Apfel
Registriert
22.08.05
Beiträge
517
Vielen Dank ;) Das kenne ich zum größten Teil schon aus der PC Welt ;) Dachte nur, dass es bei OSX vielleicht etwas anders aufgebaut ist :)