Как планировщик завершает работающий процесс? - PullRequest
1 голос
/ 13 марта 2011

Я только что понял, что после того, как много узнал о различных алгоритмах планирования, о том, как происходит переключение контекста и т. Д., Мне все еще не ясно одно значение.

Взять однопроцессорную систему:

Если процесс A запущен и его временной интервал должен завершиться через 5 секунд, как планировщик или операционная система узнают, как завершить его через 5 секунд? Никакая часть операционной системы не может работать, пока работает A. Планировщик должен следить за ним, но как это сделать, если он не может работать? Пишет ли планировщик операционной системы ISR и генерирует ли прерывание каждые 5 секунд? Это возможно? Даже если это так, это не кажется хорошим способом реализовать это.

Как именно планировщик делает это?

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Пишет ли планировщик операционной системы ISR и генерирует ли прерывание каждые 5 секунд?Это возможно?Даже если это так, это не кажется хорошим способом реализовать его.

Да, именно так оно и работает в вытесняющей многозадачной системе (хотя в настольных системах интервал обычно больше10 миллисекунд).

Да, существуют и другие схемы, такие как совместная многозадачность, где каждый процесс сам решает, когда его завершить.

1 голос
/ 13 марта 2011

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

...