Процессы, совместно использующие ЦП (планировщик)

Вопрос Планировщик пытается разделить ЦП между несколькими процессами. Два процесса, P1 и P2, запущены. P1 выполняет много операций ввода-вывода, а P2 — очень мало.

Объясните, что произойдет, если для планирования P1 и P2 используется простой циклический алгоритм упреждающего планирования.

Моя попытка Насколько я понимаю, планировщик считается упреждающим, когда он может быть вызван прерыванием и перевести процесс из рабочего состояния в другое, а затем перевести другой процесс в работающее состояние. состояние. Циклический перебор означает, что каждый процесс, P1 и P2, будет получать равное время с ЦП, но если P1 выполняет много операций ввода-вывода, а P2 выполняет меньше, не получит ли P1 больше времени с ЦП, поскольку у него много операций ввода-вывода? больше операций? Если бы каждому процессу была дана, например, 1 секунда, если бы P1 должен был выполнить 50 операций ввода-вывода (каждая для простоты занимает 1 секунду), а P2 должен был бы выполнить 3 операции ввода-вывода, был бы я прав, предполагая, что порядок будет перейти: P1,P2,P1,P2,P1,P2,P1,P1 (продолжая с P1 до завершения операций).

Это мое понимание, надеюсь, некоторые из вас, ребята, могут дать больше информации. Спасибо.


person TheRapture87    schedule 12.05.2015    source источник


Ответы (2)


Ваше понимание довольно близко к отметке.

Циклический перебор означает, что планировщик выбирает каждый процесс по очереди. Таким образом, если есть только два процесса, планировщик выберет один, а затем другой (при условии, что оба процесса готовы).

Что касается вашего первого вопроса, процесс P2 на самом деле получает больше процессорного времени. Вот пример, когда P1 запланирован первым и выполняет ввод-вывод через 0,5 секунды:

Time(seconds)     What
    0             P1 starts
   .5             P1 does I/O; P2 is scheduled
  1.5             P2's time is up; P1 is scheduled because its I/O has finished
  2.0             P1 does I/O; P2 is scheduled
  3.0             P2's time is up, P1 is scheduled because its I/O has completed

  Total P1 time: 1 second
  Total P2 time: 2 seconds

Вы можете видеть, что, поскольку P1 выполняет больше операций ввода-вывода, он получает меньше общего времени ЦП, поскольку планировщик не принимает во внимание тот факт, что P1 не использует все ресурсы. отведенного ему времени.

Если и P1, и P2 выполняют ввод-вывод, расписание все равно будет таким:

P1, P2, P1, P2, P1, P2, etc.

потому что если P1 уступает ЦП, P2 готов, и наоборот.

person Craig S. Anderson    schedule 13.05.2015
comment
Большое спасибо за такой подробный ответ, это имеет смысл. Я думаю, что забыл, что когда происходит операция ввода-вывода, процесс фактически переходит в ожидание, и поэтому другой процесс может использовать ЦП. Т - person TheRapture87; 13.05.2015

Предполагая, что вы работаете в системе Linux, просмотр /proc/sched_debug даст вам много информации (среднее время, время ожидания) о деталях планировщика, а также о процессах (количество непроизвольных переключений и т. д.). Вас также может заинтересовать Настройка планировщик заданий

person anthonyaje    schedule 31.10.2017