Qual é a definição de prioridade do processo de 'tempo real' para?
-
12-09-2019 - |
Pergunta
Pelo que tenho lido no passado, você está encorajado a não alterar a prioridade de suas aplicações de Windows por meio de programação, e se você fizer isso, você nunca deve alterá-las para 'tempo real'.
O que a configuração de prioridade processo de 'tempo real' fazer, em comparação com 'High' e 'Acima do Normal'?
Solução
A thread de prioridade tempo real pode não ser pré-empted por interrupções do timer e é executado em uma prioridade maior do que qualquer outro segmento no sistema. Como tal um limite CPU em tempo real thread de prioridade pode arruinar totalmente uma máquina.
A criação de tópicos prioritários em tempo real requer um privilégio ( SeIncreaseBasePriorityPrivilege ), por isso só pode ser feito por usuários administrativos.
Para o Vista e além, uma opção para aplicações que requerem que sejam executados em prioridades em tempo real é usar o Multimedia Serviço Scheduler Classe (MMCSS) e deixá-lo a gerenciar sua prioridade threads. O MMCSS vai impedir que seu aplicativo usando muito tempo de CPU, assim você não precisa se preocupar com tancagem da máquina.
Outras dicas
Simplesmente, o "tempo real" classe de prioridade é mais elevada do que a classe "alta" prioridade. Eu não acho que há muito mais do que isso. Oh yeah - você tem que ter o SeIncreaseBasePriorityPrivilege
para colocar um fio para a classe Tempo real
O Windows irá, por vezes, aumentar a prioridade de um segmento, por várias razões, mas não vai aumentar a prioridade de um segmento em outra classe de prioridade. Ele também não vai aumentar a prioridade de threads na classe de prioridade em tempo real. Assim, um thread de prioridade alta não vai obter qualquer impulso temporário automática na classe de prioridade tempo real.
O capítulo de Russinovich "Inside Windows" na forma como o Windows prioridades alças é um ótimo recurso para aprender como funciona este:
Note que não há absolutamente nenhum problema com um fio tendo uma prioridade em tempo real em um sistema normal do Windows - eles não são necessariamente para processos especiais rodando em máquinas dedicatd. Imagino que os motoristas de multimídia e / ou processos pode precisar de fios com uma prioridade em tempo real. No entanto, tal linha não deve exigir muito CPU - deve estar bloqueando a maior parte do tempo, a fim para eventos normais do sistema para obter o processamento
.Seria a mais alta definição de prioridades disponíveis, e que normalmente só pode ser usado em caixa que foi dedicado a executar esse programa específico. Na verdade, é alta o suficiente para que ele poderia causar a fome dos fios de teclado e mouse na medida em que eles ficar sem resposta.
Então, basicamente, se você tem que perguntar, não usá-lo:)
Em tempo real é a maior prioridade class disponível para um processo. Portanto, é diferente de 'alta' em que é um maior passo, e 'Acima do Normal' em que é duas etapas maior.
Da mesma forma, em tempo real é também um nível de prioridade segmento.
A prioridade do processo de class aumenta ou diminui todas as prioridades de rosca eficazes no processo e, portanto, é considerada a 'prioridade base'.
Assim, um processo tem um:
- Base de dados de classe de prioridade processo .
- prioridades thread individual , as compensações de classe de prioridade base.
Uma vez que em tempo real é suposto ser reservados para aplicações que absolutamente deve antecipar-se outros processos em execução, não é um privilégio especial de segurança para proteger contra o uso casual do mesmo. Isto é definido pela política de segurança.
Em NT6 + (Vista +), o uso do Multimedia Class Scheduler Vista é a maneira correta para alcançar operações em tempo real no que é não um sistema operacional em tempo real. Ele funciona, na sua maior parte, porém não é perfeito, desde o sistema operacional não é projetado para operações em tempo real.
Microsoft considera esta prioridade muito perigoso, com razão. Nenhum aplicativo deve usá-lo, exceto em circunstâncias muito especializados, e mesmo assim tentar limitar seu uso para necessidades temporárias.
Uma vez que o Windows descobre um programa usa mais elevado do que prioridade normal parece que limita a prioridade no processo.
Como definir a prioridade de marcha lenta até em tempo real não muda o uso da CPU.
Eu encontrei no meu multi-processador AMD CPU que se eu deixar cair um dos CPUs ot como o passado, o uso da CPU vai MAX OUT ea última CPU permanece inativo. A velocidade do processador aumenta para 75% no meu Quad AMD.
Use Task Manager-> selecione Process-> Right Click na Process-> Select-> Definir afinidade Clique todos, mas o último processador. O uso da CPU vai aumentar para o MAX nos processadores restantes e conta quadro se o processamento de vídeo irá aumentar.
Ele basicamente é maior / maior em tudo o mais. Um teclado é menos prioritário do que o processo em tempo real. Isto significa que o processo será levado em conta mais rápido, então teclado e se ele não pode lidar com isso, então o seu teclado é retardado.
Como todas as outras respostas antes de tempo real dá esse programa a classe de prioridade máxima. Nada é processada até que o programa foi processado.
No meu pentium 4 máquina que eu jogo Minecraft ao tempo real muito desde que aumenta o desempenho do jogo muito, e o sistema parece completamente estável. por isso em tempo real não é tão ruim quanto parece, apenas se você tem um multi-core definir a afinidade de um programa a um núcleo ou núcleos (só não todos eles específica, apenas para deixar tudo mais ser capaz de executar no caso do tempo real estabelecer programas fica pendurado para cima) e definir a prioridade em tempo real.