Просто, чтобы отвлечься от комментариев о том, почему «зачем вам это нужно знать?»: Это всего лишь загадка, которую мне было любопытно, а не что-то, что мне нужно сделать по любой практической причине.Как экспериментально определить квант планирования процесса/потока?
Учитывая типичную систему POSIX [1], как бы вы создали эксперимент для определения кванта планирования [2] процесса, связанного с процессором?
[1]: а не тот, который позволяет запрашивать эту информацию через системные вызовы или/Proc интерфейс
[2]: «Планирование квант» определяются как количество времени, процесс будет работать на Процессор, не блокирующий или уступающий до запланированного времени, заканчивается, и ОС позволяет выполнять другой процесс.
Обратите внимание, что процесс с более высоким приоритетом, как правило, запускается, как только он захочет (в противном случае не было бы смысла иметь более высокий приоритет). Возможно, в вашем последнем абзаце вы хотели сказать: «... до истечения запланированного времени, и ОС позволяет запустить другой процесс с одним приоритетом». –
@JeremyFriesner Я думал, что в типичных системных процессах не будет упреждаться до тех пор, пока их временной срез не истёк. Я ошибаюсь? Как это работает, скажем, в Linux или FreeBSD? Несмотря на это, я отредактировал этот вопрос. –
Обычно процесс будет продолжать работать до тех пор, пока не истечет его квант (и другой процесс с тем же приоритетом готов к запуску), или (б) другой процесс с более высоким приоритетом будет готов к запуску. (Альтернатива, в которой готовый к запуску процесс с более высоким приоритетом не выполняется, потому что вместо этого выполняется более низкий процесс, он известен как инверсия приоритета, и разработчики планировщиков чего-то избегают) –