Будет ли процесс испытывать голод? - PullRequest
0 голосов
/ 09 октября 2019

Рассмотрим и операционную систему с не вытесняющим расписанием SJF. Если ему дают рабочую нагрузку, скажем, 10 процессов, и каждый процесс выполняет пакетный процессорный интервал, который колеблется от 10 мс до 20 мс, после которого идет пакет ввода-вывода 500 мс, испытает ли какой-либо процесс голодание? Я знаю, что самый короткий процесс запланирован первым, и какой процесс будет запущен, будет завершен, но я не понимаю, как определить, будут ли какие-либо процессы отложены из-за того, что ресурс никогда не выделяется с учетом этой информации, я хотел бы знать раньшепродолжая с этим, и мне было интересно, как я могу определить, учитывая рабочую нагрузку и тип планировщика?

1 Ответ

2 голосов
/ 09 октября 2019

Рассмотрим и операционную систему с не вытесняющим расписанием SJF. Если ему дают рабочую нагрузку, скажем, 10 процессов, и каждый процесс выполняет пакетный процессорный цикл, который колеблется от 10 мс до 20 мс, а затем пакет ввода-вывода 500 мс, будет ли какой-либо из процессов испытывать голодание? Если вы определяете «голодание» как «постоянно не получая никакого процессорного времени»;затем, с алгоритмом «сначала самое короткое задание»:

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

b1), если число задач, занимающих бесконечное количество времени, превышает количество процессоров и ни один из блоков задач (например, ожидание ввода-вывода) или больше процессовбудет не хватать процессорного времени (если вы не увеличите SJF какой-либо формой разделения времени, чтобы избежать голодания среди заданий «всегда равной длины»).

b2), если количество задач занимает бесконечное количество временипревышает количество процессоров, и некоторые задачи блокируются (например, ожидают ввода-вывода), и от того, происходит ли голодание, зависит «сумма времени, в течение которого каждый процесс не блокируется».

Если задан планировщик SJFрабочая нагрузка из 10 процессов, и ни один из них не имеет «бесконечной длины», и никакие дополнительные новые процессы никогда не создаются;тогда все 10 задач должны завершиться рано или поздно, и ни одна из задач не будет постоянно ожидать ЦП.

Конечно, это не означает, что некоторым задачам не придется ждать (временно, кратко)CPU.

Примечание: для реальных систем обычно существует множество задач бесконечной длины, которые блокируются (например, как для Windows, так и для Linux, часто более 100 процессов выполняются как службы / демоны и для GUI);никто не знает, сколько времени займет любая задача (и не только потому, что скорость каждого ЦП постоянно меняется из-за управления питанием - например, как долго будет работать веб-браузер, который вы используете?);часто никто не может знать, займет ли процесс бесконечное количество времени или нет (остановка проблемы);и иногда процесс случайно зацикливается из-за ошибки. Другими словами;«сначала самая короткая работа» почти всегда невозможно реализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...