Procedura scheduler

Procedura scheduler zajmuje się wyszukaniem nowego zadania i zmianą obecnego zadania na nowe.

void scheduler()
{
 struct task *new = select_runnable_task(run_queue);
 current->state = RUNNABLE;
 new->state = RUNNING;
 current = new;
 switch_to(new); 
}

Te operacje powinny być wykonywane bezpiecznie (niepodzielnie).