3.2.3 Kontextwechsel

[unmarkierte Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
=Kontextwechsel=
=Kontextwechsel=
<p>
Zunächst die Definition:
</p>
<br />
== Definition: Kontextwechsel ==
<p>
<loop_index>Kontextwechsel|CPU, Kontextwechsel|Prozess-Kontextwechsel|Kontextwechsel, Prozess|Context switch</loop_index>
<loop_area type="definition">
<p>
Unter einem '''Kontextwechsel''' (engl. context switch) oder genauer einem '''Prozess-Kontextwechsel''' auf der CPU versteht man alle erforderlichen Tätigkeiten, um einen gerade auf der CPU aktiven Prozess A, durch einen anderen Prozess B zu ersetzen.
</p>
</loop_area>
</p>
<p>
Diese Tätigkeiten werden vom Steuerwerk der CPU in Zusammenarbeit mit dem Betriebssystem durchgeführt.
</p>
<br />
== Erforderliche Tätigkeiten ==
<p>
Zu den erforderlichen Tätigkeiten gehören unter anderem:
* Sichere alle notwendigen Registerinformationen des scheidenden Prozesses A an einer bekannten Stelle (damit sie von dort später wiederhergestellt werden können).
* Lade alle notwendigen Registerinformationen des neuen Prozesses B in die entsprechenden Register auf der CPU.
* Lade alle notwendigen Befehle und Daten des neuen Prozesses B in den Cache.
</p>
<p>
Es ist leicht verständlich, dass jeder Kontextwechsel eine gewisse Zeit für seine Durchführung beansprucht.
</p>
<br />
== Aufgabe 1 ==
<p>
<loop_area type="task">
<loop_task title="Sind Kontextwechsel positiv oder negativ?">
<p>
Diskutiere in deiner Lerngruppe:
</p>
<p>
* Ist die in einen (bzw. mehrere) Kontextwechsel investierte Zeit positiv oder negativ im Hinblick auf die Bedürfnisse eines Anwenders an das Gesamtsystem?
</p>
<p>
* Gibt es verschiedene "Arten von Anwendern", die hier berücksichtigt werden sollten?
** Welche Arten fallen dir ein?
** Welche positiven bzw. negativen Aspekte sind für die einzelnen Anwenderarten zu unterscheiden?
</p>
</loop_task>
</loop_area>
</p>
<br />
== Die Statistik der Kontextwechsel unter Windows ==
<p>
Um einmal ein Gefühl für Kontextwechsel zu bekommen, insbesondere im Hinblick auf deren Häufigkeit, zeigt das folgende Video einige Hintergründe unter einem handelsüblichen Microsoft Windows 7.
</p>
<p>
<loop_area icon="Video.png" icontext="Video">
<loop_media type="video" title="Kontextwechsel unter Windows 7" description="http://youtu.be/43yVqPTmsLo" copyright="CC-BY" index=true show_copyright=true>
{{#ev:youtube|43yVqPTmsLo|700}}
</loop_media>
</loop_area>
</p>
<br />
=== Aufgabe 2 ===
<p>
<loop_area type="task">
<loop_task title="Perfmon unter Windows">
<p>
Arbeitest du auch gerade mit einem Windows-Betriebssystem?<br />
Dann dürfte auch bei dir das Systemprogramm perfmon.exe verfügbar sein.<br />
<small>(''Perfmon'' ist übrigens die Abkürzung für ''Performance Monitor''.)</small>
</p>
<p>
* Starte perfmon.exe (wie im [http://youtu.be/43yVqPTmsLo Video] gezeigt) und finde heraus, wieviele Kontextwechsel pro Sekunde gerade auf deinem System stattfinden!
</p>
<p>
* Wie verändert sich die Anzahl der Kontextwechsel pro Sekunde, wenn du mehrere Programme startest und gleichzeitig ein YouTube-Video abspielst oder beispielsweise einen Radio-Stream über den Browser abrufst?
</p>
<p>
<small>Falls du gerade kein Windows-System zur Hand hast, brauchst du diese Aufgabe natürlich nicht zu bearbeiten ;-)</small>
</p>
</loop_task>
</loop_area>
</p>
<br />
== Die Statistik der Kontextwechsel unter Linux ==
<p>
Auch Linux bietet (mindestens) eine Möglichkeit, um die Anzahl der Kontextwechsel pro Sekunde statistisch zu erfassen. Dies geschieht mit Hilfe des ''vmstat''-Kommandos. Ein Aufruf von
</p>
<p>
:''vmstat 1 10''
</p>
<p>
sorgt beispielsweise dafür, dass alle ''1'' Sekunden eine aktuelle Statistik ausgegeben wird, die Ausgabe wird ''10'' mal wiederholt.
</p>
<p>
[[File:cs-linux.jpg|cs-linux.jpg]]
</p>
<p>
In der Spalte ''cs'' unter ''system'' ist die aktuelle Zahl an Kontextwechseln pro Sekunde protokolliert (cs = context switch).
</p>
<p>
<small>Weiterführende Informationen zum ''vmstat''-Kommando liefert die zugehörige Manpage:<br />
http://unixhelp.ed.ac.uk/CGI/man-cgi?vmstat</small>
</p>
<br />
<hr />
<sub>Diese Seite steht unter der [http://creativecommons.org/licenses/by/3.0/deed.de Creative Commons Namensnennung 3.0 Unported Lizenz] [http://creativecommons.org/licenses/by/3.0/deed.de http://i.creativecommons.org/l/by/3.0/80x15.png]
</sub>

Version vom 22. Oktober 2014, 18:00 Uhr

Kontextwechsel

Zunächst die Definition:


Definition: Kontextwechsel

Definition

Unter einem Kontextwechsel (engl. context switch) oder genauer einem Prozess-Kontextwechsel auf der CPU versteht man alle erforderlichen Tätigkeiten, um einen gerade auf der CPU aktiven Prozess A, durch einen anderen Prozess B zu ersetzen.

Diese Tätigkeiten werden vom Steuerwerk der CPU in Zusammenarbeit mit dem Betriebssystem durchgeführt.


Erforderliche Tätigkeiten

Zu den erforderlichen Tätigkeiten gehören unter anderem:

  • Sichere alle notwendigen Registerinformationen des scheidenden Prozesses A an einer bekannten Stelle (damit sie von dort später wiederhergestellt werden können).
  • Lade alle notwendigen Registerinformationen des neuen Prozesses B in die entsprechenden Register auf der CPU.
  • Lade alle notwendigen Befehle und Daten des neuen Prozesses B in den Cache.

Es ist leicht verständlich, dass jeder Kontextwechsel eine gewisse Zeit für seine Durchführung beansprucht.


Aufgabe 1

Aufgabe

Diskutiere in deiner Lerngruppe:

  • Ist die in einen (bzw. mehrere) Kontextwechsel investierte Zeit positiv oder negativ im Hinblick auf die Bedürfnisse eines Anwenders an das Gesamtsystem?

  • Gibt es verschiedene "Arten von Anwendern", die hier berücksichtigt werden sollten?
    • Welche Arten fallen dir ein?
    • Welche positiven bzw. negativen Aspekte sind für die einzelnen Anwenderarten zu unterscheiden?


Die Statistik der Kontextwechsel unter Windows

Um einmal ein Gefühl für Kontextwechsel zu bekommen, insbesondere im Hinblick auf deren Häufigkeit, zeigt das folgende Video einige Hintergründe unter einem handelsüblichen Microsoft Windows 7.

video


Aufgabe 2

Aufgabe

Arbeitest du auch gerade mit einem Windows-Betriebssystem?
Dann dürfte auch bei dir das Systemprogramm perfmon.exe verfügbar sein.
(Perfmon ist übrigens die Abkürzung für Performance Monitor.)

  • Starte perfmon.exe (wie im Video gezeigt) und finde heraus, wieviele Kontextwechsel pro Sekunde gerade auf deinem System stattfinden!

  • Wie verändert sich die Anzahl der Kontextwechsel pro Sekunde, wenn du mehrere Programme startest und gleichzeitig ein YouTube-Video abspielst oder beispielsweise einen Radio-Stream über den Browser abrufst?

Falls du gerade kein Windows-System zur Hand hast, brauchst du diese Aufgabe natürlich nicht zu bearbeiten ;-)


Die Statistik der Kontextwechsel unter Linux

Auch Linux bietet (mindestens) eine Möglichkeit, um die Anzahl der Kontextwechsel pro Sekunde statistisch zu erfassen. Dies geschieht mit Hilfe des vmstat-Kommandos. Ein Aufruf von

vmstat 1 10

sorgt beispielsweise dafür, dass alle 1 Sekunden eine aktuelle Statistik ausgegeben wird, die Ausgabe wird 10 mal wiederholt.

cs-linux.jpg

In der Spalte cs unter system ist die aktuelle Zahl an Kontextwechseln pro Sekunde protokolliert (cs = context switch).

Weiterführende Informationen zum vmstat-Kommando liefert die zugehörige Manpage:
http://unixhelp.ed.ac.uk/CGI/man-cgi?vmstat



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png