Существуют ли какие-либо операционные системы, которые используют не вытесняющее планирование? Если да, то какие задачи они выполняют?
Можете ли вы помочь с практическими приложениями неперегрузочного планирования, поскольку, похоже, нет операционных систем, которые используют это планирование, это только для теории, или есть какие-то работающие операционные системы, которые используют это планирование? Если какой тип задач предназначен для этих операционных систем, если есть какие-либо задачи, специфичные для конкретной задачи.
2 ответа
Во-первых, важно понимать, что вытеснение - это спектр. Вы можете вообразить, что один конец спектра - это какая-то форма жесткого предварительного планирования, а другой - некая форма жесткого предварительного планирования. Между этими двумя крайностями существует целый ряд вариантов, некоторые из которых существуют в качестве исследовательских предложений, а другие пробились к производственным операционным системам.
Упреждающее планирование позволяет системе работать очень надежно при выполнении потенциально ненадежного или ошибочного кода и улучшает общую отзывчивость системы. Вот почему все современные крупные операционные системы по существу используют предварительное планирование (со многими вариациями).
Однако для платформ с ограниченным объемом памяти и / или платформ реального времени было и все еще проводится значительное количество исследований преимуществ и недостатков предварительного планирования (PMT) и не предварительного планирования (также называемого кооперативным планированием или CMT). Вытеснение обычно ухудшает предсказуемость времени выполнения задач. То есть время выполнения каждой задачи может либо ухудшаться, либо улучшаться. Это в основном связано с двумя причинами. Во-первых, разные задачи могут работать с разными данными. Поэтому, когда задача будет запланирована для запуска следующей, данные, к которым она получит доступ, будут вытеснены из кэша ЦП некоторых или всех данных, использованных ранее запланированной задачей, которые, возможно, все еще необходимо запланировать для запуска. Во-вторых, современные процессоры используют ряд методов динамического прогнозирования / спекуляции (прогнозирование ветвлений, предварительная выборка и т. Д.). Поведение различных задач может снизить или повысить эффективность этих методов в зависимости от того, насколько схожи задачи, и повлиять на производительность при каждом переключении контекста.
Непредвиденное планирование может снизить потребление памяти. Если задача состоит из нескольких этапов, она может выделить память только для завершения одной фазы, а затем освободить любую память, которая ей не понадобится на более поздних этапах, и получить контроль, позволяющий запускать другие задачи. Обычно это невозможно при предварительном планировании.
Непредвиденное планирование естественным образом поддерживает взаимное исключение без каких-либо дополнительных сложностей или снижения производительности. Это может быть достигнуто за счет наличия задач, которые не приводят к выполнению, пока они выполняются во взаимоисключающем разделе кода. Механизмы блокировки необходимы для поддержки взаимного исключения с предварительным планированием.
По этим причинам в системах с ограниченным объемом памяти и / или в режиме реального времени широко используются методы планирования без предварительного планирования. В Википедии есть список операционных систем реального времени, многие из которых поддерживают планирование без предварительной подготовки.