Как сохраняется текущее состояние задачи, когда она разбита на несколько временных квантов в алгоритме циклического планирования? - PullRequest
0 голосов
/ 05 апреля 2020

Принимая во внимание один поток, что удерживает задачу от запуска до завершения в алгоритме циклического перебора?

Существует ли какой-то механизм контроля, чтобы этого не происходило?

1 Ответ

0 голосов
/ 05 апреля 2020

В кооперативной системе планирования - ничего. Задача обычно должна вызывать некоторую функцию ОС (либо явную yield, либо что-то еще, что может неявно дать результат, например, функцию получения сообщения).

В упреждающей системе планирования они предваряются (очевидно) ОС, состояние сохраняется, а следующая задача восстанавливается и запускается.

Например, Linux имеет кванты 100 мс (из памяти), которые он дает к каждой теме. Поток может освободить sh свои кванты на ранней стадии (и если он делает это, он часто хорошо обрабатывается), но, если он использует все свои кванты, он принудительно приостанавливается ОС.

...