Как может работать упреждающая многозадачность, когда ОС является лишь одним из процессов? - PullRequest
3 голосов
/ 07 сентября 2011

Я сейчас читаю материалы о вытесняющей многозадачности - и одна вещь ускользает от меня.

Все материалы подразумевают, что операционная система каким-то образом прерывает запущенные процессы в ЦП "извне", что вызывает контекстпереключение и тому подобное.

Однако я не представляю, как это будет работать, когда ядро ​​операционной системы - это просто еще один процесс на процессоре.Когда другой процесс уже занимает центральный процессор, как ОС может вызвать переключение «извне»?

Ответы [ 2 ]

6 голосов
/ 07 сентября 2011

ОС - это не просто еще один процесс. ОС контролирует поведение системы при возникновении прерывания.

Прежде чем планировщик запустит процесс, он организует отправку прерывания по таймеру, когда заканчивается временной интервал. Если предположить, что до этого ничего не произойдет, таймер сработает, и ядро ​​получит контроль. Если он решит запланировать другой процесс, он отключит его, чтобы другой процесс мог запустить, а затем вернулся из прерывания.

5 голосов
/ 07 сентября 2011

Аппаратное обеспечение может сигнализировать процессору - это называется «прерыванием» - и когда это происходит, управление передается ядру (независимо от того, какой процесс выполнялся в данный момент).Эта функция встроена в процессор.В частности, управление передается «обработчику прерываний», который является функцией / методом в ядре. Ядро может запланировать прерывание по таймеру, например, так, чтобы это происходило периодически.Как только происходит прерывание и управление передается ядру, ядро ​​может передать управление обратно первоначально выполняющемуся процессу или другому запланированному процессу.

...