The previous Minix scheduling routines in the kernel determine which process should run next.
But the restart() function in the Minix kernel is responsible for causing the next process to actually run.
Here is about a third of the code for restart:
_restart: ! Restart the current process or the next process if it is set. cmp (_next_ptr), 0 ! see if another process is scheduled jz 0f mov eax, (_next_ptr) mov (_proc_ptr), eax ! schedule new process mov (_next_ptr), 0 0: mov esp, (_proc_ptr) ! .... .... iretd ! continue process