Если приоритеты 2 заданий будут тем же, то вторая работа будет ожидать, пока первый не заканчивается?

Позвольте мне предположить, что система имеет один CPU.

Если 2 задания, запущенные в разное время, но приоритеты, будут тем же (20, 20), то задание, которое запустилось позже, чем другой, будет ожидать, пока более ранний не заканчивается?

Вы могли помочь мне знать это?

Заранее спасибо.

P.s. Извините за мой плохой английский язык.

0
задан 4 April 2019 в 07:03

1 ответ

Это - очень простое объяснение того, как разделение по времени работает:

Существуют (очень короткие) интервалы времени, после которых рабочее задание должно бросить ЦП для уступки другим заданиям ожидания, которые готовы работать. Это должно гарантировать, что, даже если задание является просто вычислением того, оно не может заблокировать ЦП навсегда. Когда задание вынуждено оставить ЦП и было бы все еще должно проделать работу, это отложено в очереди 'готовый выполнить' задания в положении, соответствующем его приоритету.

Если задание должно ожидать (например, читать из памяти или сделать ввод-вывод - который является чрезвычайно медленным по сравнению со скоростью ЦП), это также бросает ЦП, пока это не разбужено прерыванием, когда ввод-вывод сделан. Затем это будет помещено снова в очередь 'готовый выполнить' задания.

Это работает даже над одноядерным / единственная система потока.

Так замеченный снаружи обоих заданий будет сменяться в ЦП и, будет казаться, будет работать одновременно.

Это поведение очень важно для справедливости: Вообразите одно задание, делающее бесконечные вычисления (вычисление всех простых чисел до 10^10) и второе, которое только хочет echo hello который должен был бы ожидать, пока первое задание не закончилось.

3
ответ дан 25 October 2019 в 06:59

Другие вопросы по тегам:

Похожие вопросы: