Das ist ein etwas komplexeres Thema. Ich versuche es ganz kurz zusammen zu fassen: Ein Prozess kann entweder aktiv (TASK_RUNNING) oder schlafend sein. Wobei er, wenn er schläft zwei Zustände haben kann: TASK_INTERRUPTIBLE und TASK_UNINTERRUPTIBLE. Beim ersten kann ein Signal den Prozess wieder aufwecken, beim zweiten nicht.
Um genau zu sein: Das sind die möglichen Zustände:
(
#define TASK_RUNNING
#define TASK_INTERRUPTIBLE
#define TASK_UNINTERRUPTIBLE
#define TASK_ZOMBIE
#define TASK_STOPPED
#define TASK_EXCLUSIVE
)
Gesteuert wird das Ganze über den Scheduler, welcher jedem Prozess sogenannte Time_Slices, also Zeitschlitze in denen er seine Arbeit machen darf, zuweist.
Warum braucht man das? Multitasking! Prozesse werden einer Queue zugewiesen und dann abgearbeitet, wie und wann welcher Prozess arbeiten darf (also aufgeweckt wird) ist eine andere Sache. Ein schlafender Prozess ist also ein Prozess, der im Rahmen eines Multitaskingsystems zu einem bestimmten Zeitpunkt keine Prozessorzeit beanspruchen darf, um anderen parallel laufenden Programmen die Möglichkeit zu geben, auch zu agieren.
Warum wird dein Prozess also jetzt als schlafend angezeigt? Vermutlich aus einem einfachen Grund: auch das Anzeigeprogramm deines OS ist ein Prozess und üb erprüft daher in Intervallen den Zustand deiner Prozesse. Leicht möglich dass du ihn immer schlafend "erwischst". Dennoch wird der Prozess, so vermute ich, beanspruchte CPU Zeit anzeigen. Und damit ist der Prozess "enttarnt"
Hoffe das hat etwas geholfen. Ist wie gesagt keine leichte Materie.