Was passiert wirklich bei Apfel+H?

son yu

Meraner
Registriert
16.05.04
Beiträge
229
hallo,

wie im threadtitel zu lesen beschäftigt mich die frage schon seit längeren.
Was macht OS X mit dem Programm bei Apfel+H (Programm ausblenden)?
Wieso wird es nur ausgeblendet und nicht etwaige prozessorlastige threads gestoppt?
das stoppen eines programms im hintergrund wäre ja gerade für die mobilanwender ein wirklicher segen.

schöne grüße
 

andi*h

Gast
hello,

weil es wahrscheinlich schwierig wird zu realisieren, ein "gestoptes" programm anschließend wieder auf den neusten stand zu bringen. ich denke, du wirst wohl damit leben müssen oder einfach speichern, schließen und wieder öffnen wenn´s weitergehen kann/soll.

lg,
andi
 

son yu

Meraner
Registriert
16.05.04
Beiträge
229
leuchtet mir irgendwie ein, nur schon mal mitbekommen das programme die längere zeit im hintergrund waren eine kurze zeitverzögerung benötigen um wieder voll einsatzbereit zu sein?

schöne grüße
 

andi*h

Gast
hello,

naja, nicht wirklich ...
aber dann wird wahrscheinlich doch nicht soviel leistung verbraucht als wenn es 100%ig laufen würde, oder!? dann siehst man ja, der mac versucht also von allein, nicht unnötige reserven auszuschöpfen und apfel+h ist nur für´s auge da ...

lg,
andi
 

son yu

Meraner
Registriert
16.05.04
Beiträge
229
ja aber was macht os x nun wirklich mit dem programm wenn ich es ausblende?
wird der Arbeitsspeicher ausgelagert?

schöne grüße
 

andi*h

Gast
hello,

was der name schon sagt....h wie hide,
einfach nur verstecken (freie menüleiste, freies dock und auch nichts auf dem desktop).

lg,
andi
 

groove-i.d

Rote Sternrenette
Registriert
10.01.05
Beiträge
6.077
andi*h schrieb:
hello,

weil es wahrscheinlich schwierig wird zu realisieren, ein "gestoptes" programm anschließend wieder auf den neusten stand zu bringen.

meinst Du?
ich spekuliere einfach mal drauf los:
beim aktivieren des ruhezustandes wird ja auch alles "gekappt" und beim beenden wieder so aktiviert, als wenn nix gewesen wäre.
ist ein spontaner einfall. also nicht gleich mit dem fallbeil anklopfen. :-D
 

son yu

Meraner
Registriert
16.05.04
Beiträge
229
groove-i.d schrieb:
meinst Du?
ich spekuliere einfach mal drauf los:
beim aktivieren des ruhezustandes wird ja auch alles "gekappt" und beim beenden wieder so aktiviert, als wenn nix gewesen wäre.
ist ein spontaner einfall. also nicht gleich mit dem fallbeil anklopfen. :-D
genau das will ich ja mal wissen, warum?
wer möchte nicht sein system verstehen?

schöne grüße
 

andi*h

Gast
hello,

hmm, das mit dem ruhezustand stimmt natürlich ....
ich habe ja aber auch "wahrscheinlich" geschrieben, genau wie son yu "irgendwie" schrieb.

waren also alles nichts als spekulationen ;)

lg,
andi
 

groove-i.d

Rote Sternrenette
Registriert
10.01.05
Beiträge
6.077
uns bleibt wohl nix anderes übrig, als weiter zu spekulieren.
nur gehen mir im augenblick die spekulatius aus.
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
Wegen dem "Stoppen" von Programmen: Das passiert im Betrieb laufend. Da die Anzahl der CPUs im System meist viel kleiner ist als die Anzahl laufender Prozesse wird sog. Timesharing betrieben. Jeder Prozess bekommt die CPU eine Zeitscheibe lang zugeteilt. Entweder gibt der Prozess in diesem Zeitraum freiwillig die CPU wieder ab, weil er z.B. gerade einen IO-Auftrag abgesetzt hat, oder ihm wird die CPU "gewaltsam" entzogen. Der Prozesszustand wird dabei im Prozesskontrollblock (PCB)gesichert (also die Belegung der CPU-Register usw).
Kommt der Prozess später wieder an die Reihe, wird mit Hilfe des PCB sein Zustand wiederhergestellt. Der Prozess selbst bekommt von diesem Prozedere nichts mit.

Wollte man also einen Prozess einfach im Betrieb stoppen, müsste man ihn lediglich von der CPU-Zuteilung ausschließen.
 

astraub

Champagner Reinette
Registriert
17.06.04
Beiträge
2.651
Hallo,

also bei mir arbeitet z.B. Mail weiter im Hintergrund. Es meldet sich dann (dank Erweiterung Mailenhancer) sobald neue Mail eingetroffen ist. Auch iTunes läuft natürlich im Hintergrund weiter ... Es sieht für mich daher ganz so aus, als ob lediglich das User-Interface weggeblendet wird.

Gruss
Andreas
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
das stoppen von applikationen ist ja das eine (und programme, mit denen man das machen kann, wurden ja bereits erwähnt). aber apfel-h ist dazu da, dass ein programm, egal was es tut, einfach nicht die sicht zudeckt. ich will, dass mail die mails abruft, auch wenn es nirgends da ist. dass eyetv sendungen aufzeichnet, auch wenn es sie gerade noch nicht anzeigen kann. oder dass xcode kompiliert und ich endlich mal wieder den desktop sehen kann, ohne dass ich 50 fenster ins dock schieben muss....

diese funktion von apfel-h ist nötig, weil os x im gegensatz zu windows ein dokumentbasiertes gui hat (auch wenn windows nun auch immer mehr in richtung dokumentbasiert geht). wenn du ein fenster ins dock legst, geht nur das eine dokument dorthin, bei windows verzieht (resp. verziehte) sich gerade das gesamte programm samt seinen offenen dokumenten dorthin. apfel-h erlaubt dir, alles aufs mal wegzuknallen, aber es ist eine prozedur zum freischaufeln des desktops, nicht der ressourcen...

apfel-h ist übrigens direkt nach expose das ding, das ich an os x am meisten schätze. bitte ja nie irgendwas daran ändern....
 
  • Like
Reaktionen: 1 Person

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
<oo> schrieb:
OT: Was für eine Welt hätten wir, wenn eines Tages die Anzahl der CPUs höher wäre als die Anzahl laufender Prozesse?
In Zeiten von Hochleistungsrechnern mit 512 und mehr CPUs ist das nicht so schwer vorzustellen. (Ich nehme die Leerlaufprozesse mal aus).
 

tr_

Fuji
Registriert
18.07.05
Beiträge
37
son yu schrieb:
hallo,

wie im threadtitel zu lesen beschäftigt mich die frage schon seit längeren.
Was macht OS X mit dem Programm bei Apfel+H (Programm ausblenden)?
Wieso wird es nur ausgeblendet und nicht etwaige prozessorlastige threads gestoppt?
das stoppen eines programms im hintergrund wäre ja gerade für die mobilanwender ein wirklicher segen.

schöne grüße

Nun, was *genau* passiert würde mich auch interessieren.

Was man aber auf jeden Fall sagen kann, ist, dass Apfel-H ein Segen ist, wenn es darum geht, "GUI-intensive" Prozesse einfach wegzuschalten. Das kann man leicht überprüfen, indem man zB. Azureus.app öffnet und in der GUI einiges passieren lässt. Blendet man Azureus aus, geht die Prozessorleistung kontinuierlich deutlich herunter ("top -au", Activity Monitor.app, watch o.ä. laufen lassen und nach dem Programmnamen filtern).

Auch der schöne Fortschrittsbalken von OS X kann eine Bremse sein, zumindest auf meinem 1,2 Ghz-iBook mit ATI-Karte. Blendet man das entsprechende Fenster bzw. Programm aus (minimieren gilt nicht, nur Apfel-H), kann der Prozessor die Arbeit, die er eigentlich erledigen soll, viel schneller zu Ende bringen, da jeglicher zusätzlicher Grafikaufwand entfällt.

Grüsse,
Tomas
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
sowie ich das in meinem cocoa-lernen begriffen habe, sieht es wie folgt aus. bei apfel-h werden die entsprechenden fenster in einen ausserhalb des vom monitor darzustellenden bereich verschoben. sie sind noch da, aber eben nicht in einem bereich, der angezeigt wird.
performance-gewinne können daher wie folgt erfolgen:
- der prozess, welcher all die fenster tatsächlich auf den grafikoutput generiert wird entlastet. jedes bild welches angezeit wird führt zu jeder menge berechnungen, zB bezüglich durchsichtigkeit, ob darunter oder darüber noch andere fenster dargestellt werden sollen und wenn ja, wie sich der einzelne pixel nun zusammensetz. os x hat extrem viele transparenzen (zB unterhalb eines menüs, auch wenn man es kaum sieht). bei nicht-quartz-extreme-fähigen grafikkarten ist dies cpu-arbeit.
- bezüglich der applikationen werden (aber da bin ich nicht sicher) nicht alle delegate-methods à la windowShouldBeDrawn etc. aufgerufen. das kann entlasten...
- vielleicht (obwohl ich nicht davon ausgehe) werden bei den NSView nicht mal mehr die refresh-funktionen angezeigt...
je nachdem wie die applikation programmiert ist, könnte sich mit den letzten beiden mechanismen (so sie denn überhaupt zutreffen, insb. der letzte) massiv arbeit ersparen...
 

tr_

Fuji
Registriert
18.07.05
Beiträge
37
Vielen Dank erstmal für deine fundierte oder jedenfalls fundiert klingende ;) Erklärung!

mullzk schrieb:
sowie ich das in meinem cocoa-lernen begriffen habe, sieht es wie folgt aus. bei apfel-h werden die entsprechenden fenster in einen ausserhalb des vom monitor darzustellenden bereich verschoben. sie sind noch da, aber eben nicht in einem bereich, der angezeigt wird.
aha, klingt interessant! reichlich seltsamer lösungsansatz, scheint aber simpel und gut zu funktionieren ;)

mullzk schrieb:
performance-gewinne können daher wie folgt erfolgen:
- der prozess, welcher all die fenster tatsächlich auf den grafikoutput generiert wird entlastet. jedes bild welches angezeit wird führt zu jeder menge berechnungen, zB bezüglich durchsichtigkeit, ob darunter oder darüber noch andere fenster dargestellt werden sollen und wenn ja, wie sich der einzelne pixel nun zusammensetz. os x hat extrem viele transparenzen (zB unterhalb eines menüs, auch wenn man es kaum sieht). bei nicht-quartz-extreme-fähigen grafikkarten ist dies cpu-arbeit.
QuartzExtreme hat sich zwar seit 10.2 sehr verbessert, aber irgendwie macht die CPU immer noch viel zu viel. Die Grafikkarte meines iBooks hat 32MB Ram und ist QuartzExtreme-fähig, dennoch kann man beobachten, dass sehr vieles nicht auf die Karte ausgelagert wird. Auf CoreImage (wohl mit einer anderen Grafikkarte ;) wiederum bin ich sehr gespannt; das scheint aber noch nicht ganz fertig zu sein.

mullzk schrieb:
- bezüglich der applikationen werden (aber da bin ich nicht sicher) nicht alle delegate-methods à la windowShouldBeDrawn etc. aufgerufen. das kann entlasten...
- vielleicht (obwohl ich nicht davon ausgehe) werden bei den NSView nicht mal mehr die refresh-funktionen angezeigt...
Zumindest das Java-Programm Azureus "friert" die letzte Anzeige vor Apfel-H ein. Aktiviert man das Fenster wieder, sieht man zunächst erstmal die alten Werte, und dann wird sprunghaft die Anzeige aktualisiert, beispielsweise der Fortschrittsbalken oder sowas. Beim Cocoa - Balken allerdings habe ich so etwas noch nie bemerkt.

Grüsse,
Tomas
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
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.