## Task-Wechsel

### Verwendung

In einem User-Kernel-Thread kann immer nur eine Task den Prozessor nutzen, also im Zustand running sein (laufen). Alle anderen Tasks sind entweder lauffähig, oder sie warten auf ein externes Ereignis wie z. B. das Ende einer I/O-Operation und eine entsprechende Meldung, um wieder lauffähig zu werden.

Wenn die laufende Task den Prozessor nicht mehr benötigt, löst sie einen Task-Wechsel aus (kooperativer Task-Wechsel), und die nächste Task im selben User-Kernel-Thread kann den Prozessor nutzen.

### Beispiel

Die folgende Abbildung zeigt auf vereinfachte Weise, wie drei Tasks in einem User-Kernel-Thread abwechselnd laufen.

Zunächst läuft Task 1. Task 2 und Task 3 sind lauffähig.

...

1. Task 1 schickt eine I/O-Anforderung und versetzt sich in einen wartenden Zustand.

Task 2 ist die nächste lauffähige Task; sie setzt ihre Ausführung fort.

2. Task 2 schickt eine I/O-Anforderung und versetzt sich in einen wartenden Zustand.

Task 3 ist die nächste lauffähige Task; sie setzt ihre Ausführung fort.

3. Die I/O-Operation von Task 1 ist beendet. Task 1 erhält eine entsprechende Meldung und ist wieder lauffähig.

4. Task 3 schickt eine I/O-Anforderung und versetzt sich in einen wartenden Zustand.

Task 1 ist die nächste lauffähige Task; sie setzt ihre Ausführung fort.

5. Die I/O-Operation von Task 2 ist beendet. Task 2 erhält eine entsprechende Meldung und ist wieder lauffähig.

6. Task 1 ist beendet.

Task 2 ist die nächste lauffähige Task; sie setzt ihre Ausführung fort.

Siehe auch:

Übersicht der Tasks

Übersicht der Task-Zustände

Prozessstruktur