Существует два способа перехода процесса из рабочего состояния в состояние готовности в зависимости от того, в какой ОС реализована многозадачность:
- При вытесняющей многозадачности ОС использует прерывания по таймеру (для каждого ядра или процессора в системе существует один таймер), чтобы регулярно прерывать любой процесс, который выполняется в данный момент. Затем обработчик прерываний вызывает планировщик ОС, чтобы определить, планировать ли другой процесс или продолжить выполнение того же процесса. Если планировщик решил запустить другой процесс, то текущий процесс переходит из состояния выполнения в состояние готовности.
- При кооперативной многозадачности ОС не использует прерывания для процессов планировщика. Вместо этого запущенный процесс должен добровольно передать управление планировщику, чтобы позволить ему планировать другой процесс. Таким образом, процессы не переходят между рабочим и готовым состояниями, используя прерывания, а только добровольно.
Мне кажется, что рисунок из книги «Современные операционные системы» относится к обоим методам многозадачности, в то время как рисунок из Концепции операционной системы специально относится к вытесняющей многозадачности. Хотя, изменив слово «прерывание» на что-то более инклюзивное, например «yield», другая цифра также применима к совместной многозадачности.