Преимущественное планирование просто означает, что все работает теперь может быть остановлен на что-то еще, чтобы бежать. Акцент на можно остановить. Он никогда не может быть остановлен, так как он никогда не может закончиться вообще. Как вы спросили, я попытаюсь описать псевдокод для упреждающего алгоритма планирования, который может вызвать голодание:
P = running processes list q = quantum while P is not empty: t_0 <- infinity for each p in P: t <- p.totalTime if t < t_0: t_0 <- t p <- process with running time t_0 run p for quantum q
Предположим теперь, что процессы могут быть добавлены в список P в любое время. Если вы продолжаете добавлять небольшие процессы, они всегда будут выполняться перед любыми другими крупными процессами, приводящими к голоду.
Этот алгоритм является преимущественной формой SJF (Shortest Job First). Вы можете экстраполировать и сделать упреждающий алгоритм, который просто никогда не запускает данный процесс; вместо этого, если это единственный процесс, алгоритм просто ждет в цикле, пока не появится что-то новое. Это не хороший алгоритм, но он упреждающий и вызывает голод.
На самом деле, если вы перестаете думать, единственный способ получить голод - это упреждающие схемы. Вы не можете получить голод в не превентивных схемах, поскольку все они будут выполняться до конца, и вы не можете добавлять какие-либо задания. Упреждающие схемы на самом деле не дают всем процессам долю процессора, а делают вашу систему более отзывчивыми.Таким образом, интеллектуальная упреждающая схема - это та, которая увеличивает отзывчивость, не уделяя слишком много внимания ограниченным процессам ввода-вывода, останавливая их, пока они ждут некоторого ввода, например.
Я бы посоветовал взглянуть на [Обеденные проблемы философов] (https://en.wikipedia.org/wiki/Dining_philosophers_problem). – InsidiarumCrassescit
, что не помогает мне. – Somjit