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 | | | |-------|