Zitat:
Original geschrieben von OFreiburg
Bedeuten die 100 % nun, das 100% der CPU am arbeiten sind? Anders ausgedrückt, wenn ich im Flusi die Pausetaste drücke, sich nichts mehr bewegt und gehe dann 1 Stunde Kaffee trinken, läuft die CPU dann 1 Stunde unter Volllast (wird das nun mit 2 oder 3 l geschrieben )?
|
Die einfache Antwort zuerst: Volllast wird mit drei "l" geschrieben. Das ist ja ein zusammengesetztes Hauptwort bestehend aus "Voll" und "Last".
Man kann sehr einfach ein Programm schreiben, dass 100% CPU-Last verbraucht. Am einfachsten geht das mit einer Endlosschleife:
do {
/* däumchen dreh */
while(true);
Schönere Programme tun allerdings nicht dauernd etwas sondern sie müssen sehr häufig auf etwas warten: Festplatte, Netzwerk, Tastatur, Maus
Hier kommt das Betriebssystem ins Spiel. Das Programm benutzt ja dessen Funktionen, um z.B. von einer Datei zu lesen. Der Lesevorgang wird dann vom System durchgeführt das den Festplatten-Controller damit beauftragt bestimmte Sektoren auf der Festplatte anzusteuern.
Da das Programm in der Zwischenzeit nichts zu tun hat, kann sich die CPU mit anderen Dingen beschäftigen und z.B. andere Programme laufen lassen.
Wenn ALLE Programme auf Ressourcen warten müssen, dann darf sogar der sogenannte Idle-Prozess mal laufen. Der Prozess sammelt die restliche CPU-Zeit auf. Aus der Zeit, die der Idle-Prozess laufen konnte errechnet sich dann die CPU-Last. Kann er zu 100% laufen, dann ist die CPU-Last 0%. Kann er zu 70% laufen, dann ist die CPU-Last 30% usw.
Sehr viele Spiele sind nach einem einfachen Strickmuster gemacht. Es gibt im Wesentlichen eine große Schleife:
do {
berechne position des spielers
hole daten von tastatur, maus, joystick
berechne positionsänderung
berechne aktionen der gegner (AI-Traffic)
berechne die Auswirkungen der Aktionen
berechne die Graphik
gib alles der Graphikkarte zur Darstellung
} while(spiel läuft)
Sehr viele dieser Aktionen laufen tw. parallel ab. Beim Flusi werden ziemlich sicher die Texturen in einem eigenen Thread parallel zur Positionsbestimmung nachgeladen. Dadurch muss der Flusi nicht wirklich auf die Texturen warten sondern er nimmt für die Darstellung einfach die, die er schon im Speicher hat. Dadurch hat er aber immer etwas zu tun und dadurch ist die CPU-Last auf 100%
Und, ja, wenn Du im Flusi die Pause-Taste drückst, dann läuft die ganze Graphikberechnung weiter. Nur wenn Du den Flusi minimierst, dann sinkt auch die CPU-Last.