Mehr gleichzeitige Prozesse als CPUs?
bearbeitet von Der MartinHallo Rolf,
danke erstmal für deine Denkanstöße.
> In einem Multitasking-System hat ein Thread mehr Status als Run/Sleep.
Ja, richtig. In top gibt es noch die Status D (das korreliert etwa mit der GUI-Meldung "<application> is not responding") und Z für Zombie. Außerdem noch zwei Status, die auftreten können, wenn ein Debugger im Spiel ist.
> Sleep heißt: Der Thread kann nicht laufen, weil er auf ein externes Signal wartet (z.B. Festplatten-IO, oder eine Message von einem Socket, einer Named Pipe, oder ein irgendwie geartetes anderes Event).
Richtig.
> Running heißt: Er führt aktiv CPU-Instruktionen aus.
Dachte ich bis gestern auch.
> Wenn TOP den Status der laufenden Threads bestimmt, dann ist er selbst im Status Running. Bei 4 Kernen können also nur 3 andere Threads auf "Running" stehen, bei 2 Kernen nur ein einziger anderer.
Ja, und auch das ist eigenartig, weil top alle drei Sekunden (Default) eine Momentaufnahme macht und top selbst oft gar nicht unter den als "Running" markierten Prozessen ist.
> Es gibt aber auch noch "Ready". Das sind die Threads, die gerne was tun würden, aber nicht können, weil der Scheduler meint, andere Threads wären gerade wichtiger. Und "Ready" können deutlich mehr Threads sein, als es Cores gibt.
Ja. In den man-Pages zu top habe ich mittlerweile einen unauffälligen, aber wichtigen Hinweis gefunden: Der Status R bedeutet in Wirklichkeit *Ready*. Dann wäre es aber wiederum erstaunlich, dass es immer nur so wenige sind ...
Live long and ~~pros~~ healthy,
Martin
--
Für welches Tier mühen wir uns am meisten ab? - Für die Katz'.