Для чего задается приоритет процесса "реального времени"?

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

Что делает настройка приоритета процесса "в реальном времени" по сравнению с "высоким" и "выше нормального"?

7 ответов


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

создание реалтайм приоритет потоков требует привилегий (SeIncreaseBasePriorityPrivilege), поэтому это может быть сделано только административными пользователями.

для Vista и за ее пределами, один вариант для приложений, которые требуют, чтобы они работали на приоритеты в реальном времени-использовать Служба Планировщика Мультимедийных Классов (MMCSS) и пусть он управляет приоритетом ваших потоков. MMCSS не позволит вашему приложению использовать слишком много времени процессора, поэтому вам не придется беспокоиться о танкере машины.


просто класс приоритета " в реальном времени "выше класса приоритета" High". Не думаю, что есть что-то большее. О да - вы должны иметь SeIncreaseBasePriorityPrivilege чтобы поместить поток в класс реального времени.

Windows иногда повышает приоритет потока по различным причинам, но это не повысит приоритет потока в другой класс приоритета. Это также не повысит приоритет потоков в классе приоритетов реального времени. Таким образом, высокоприоритетный поток не получит любой автоматический временный импульс в класс приоритетов реального времени.

глава Русиновича "внутри Windows" о том, как Windows обрабатывает приоритеты, является отличным ресурсом для изучения того, как это работает:

обратите внимание, что нет абсолютно никаких проблем с потоком, имеющим приоритет в реальном времени в обычной системе Windows - они не обязательно для специальных процессов, работающих на машинах dedicatd. Я предполагаю, что мультимедийные драйверы и / или процессы могут нуждаться в потоках с приоритетом в реальном времени. Однако такой поток не должен требовать много CPU - он должен блокировать большую часть времени, чтобы обычные системные события получали обработку.


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

Так что, если вам нужно спросить, не используйте его:)


в режиме реального времени является наивысшим приоритетом класс доступно для процесса. Поэтому он отличается от "высокого" тем, что на одну ступень больше, а "выше нормального" тем, что на две ступени больше.

аналогично, real-time также является уровнем приоритета потока.

приоритет процесса класс повышает или понижает все эффективные приоритеты потоков в процессе и поэтому считается "базовым приоритетом".

Итак, процесс a:

  1. базовый приоритет процесса класс.
  2. индивидуальные приоритеты потоков, смещения базового класса приоритета.

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

в NT6+ (Vista+), использование Vista Multimedia Class Scheduler-это правильный способ достижения операций в реальном времени в том, что не ОСРВ. Он работает, по большей части, хотя и не идеален, поскольку ОС не предназначена для операций в реальном времени.

Microsoft считает этот приоритет очень опасно, это правильно. Ни одно приложение не должно использовать его, кроме как в особых обстоятельствах, и даже тогда пытаться ограничить его использование временными потребностями.


Как только Windows узнает, что программа использует более высокий приоритет, чем обычно, кажется, что это ограничивает приоритет процесса.

установка приоритета от простоя до реального времени не изменяет использование ЦП.

Я обнаружил на своем многопроцессорном процессоре AMD, что если я отброшу один из процессоров ot, как последний, использование процессора будет максимальным, а последний процессор останется бездействующим. Скорость процессора увеличивается до 75% на моем Quad AMD.

использовать Диспетчер задач - >выбрать процесс - >справа Нажмите на процесс - >выбрать - >установить сродство Щелкните все, кроме последнего процессора. Использование ЦП увеличится до максимума на оставшихся процессорах и подсчетах кадров, если обработка видео увеличится.


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


Как и все другие ответы, прежде чем в режиме реального времени дает этой программе приоритетный класс. Ничего не обрабатывается до тех пор, пока эта программа не будет обработана.
На моей машине pentium 4 я установил minecraft в режиме реального времени, так как это значительно повышает производительность игры, и система кажется полностью стабильной. так что в реальном времени не так плохо, как кажется, просто если у вас есть многоядерный набор сродства программы к определенному ядру или ядрам (просто не все из них, просто чтобы все остальное могло работать в случае, если программы в реальном времени будут отключены) и установите приоритет в режиме реального времени.