Существуют ли какие-либо операционные системы, использующие невытесняющее планирование? Если да, то какие задачи они выполняют?

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


person rikith reddy    schedule 08.04.2018    source источник
comment
За исключением тривиальных вещей во встроенных системах, вероятно, нет. Конечно, сегодня никому не понадобилась бы такая вещь на универсальном настольном компьютере или сервере — производительность ввода-вывода слишком низкая для многих приложений.   -  person Martin James    schedule 08.04.2018


Ответы (2)


Во-первых, важно понимать, что упреждение — это спектр. Вы можете себе представить, что на одном конце спектра находится какая-то форма хардкорного вытесняющего планирования, а на другом конце — какая-то форма хардкорного не вытесняющего планирования. Между этими двумя крайностями существует целый ряд вариантов, некоторые из которых существуют в виде исследовательских предложений, а другие пробились в операционные системы производственного уровня.

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

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

Невытесняющее планирование может снизить потребление памяти. Если задача состоит из нескольких фаз, она может выделить память только для завершения одной фазы, а затем высвободить любую память, которая не понадобится на более поздних фазах, и передать контроль, чтобы разрешить выполнение других задач. Обычно это невозможно при упреждающем планировании.

Планирование без вытеснения естественно поддерживает взаимное исключение без каких-либо дополнительных сложностей или снижения производительности. Этого можно достичь, если задачи не будут выполняться, пока они выполняются во взаимоисключающем разделе кода. Механизмы блокировки необходимы для поддержки взаимного исключения с упреждающим планированием.

По этим причинам в системах с ограниченной памятью и/или в системах реального времени широко используются методы невыгодного планирования. В Википедии есть список операционных систем реального времени, многие из которых поддерживают не приоритетное планирование. .

person Hadi Brais    schedule 09.04.2018

Например, Windoze до NT.

person user3344003    schedule 09.04.2018
comment
Windows 95 появилась раньше NT и была упреждающей (по крайней мере, для 32-битного кода). - person Martin James; 09.04.2018