Przełączanie zadań

Przełączanie zadań jest istotnym elementem systemu wielozadaniowego.

Zadanie

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