Przełączanie zadań jest istotnym elementem systemu wielozadaniowego.
W systemie operacyjnym do opisu zadania wykorzystywana jest pewna struktura task:
struct processor_state{
... ip;
... sp;
... flags;
... registers;
};
enum state_t {RUNNABLE, RUNNING};
struct task{
struct processor_state;
struct task *next;
state_t state;
...
};
struct task *run_queue;
Struktury opisujące zadanie najczęściej są powiązane ze sobą w listę (kolejkę):
run_queue --|
|
|
|-------|<--| /--------->|-------|
| task0 | / | task5 |
| | / | |
| next |--------/ | next |----|
| | | | |
|-------| |-------|<--\ |-------| |
| task2 | \ |
| | \----------------
| next |
| |
|-------|