Alterar PRIORIDADE processo depois estiver rodando (Windows)  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Bruno_Leonardo
JavaEvangelist

Membro desde: 25/01/2008 17:13:57
Mensagens: 406
Offline

Galera,

Alguém sabe se é possível no Windows, via programação eu alterar a PRIORIDADE de um processo depois que ele estiver rodando? Seria algo do tipo do comando abaixo, porém necessito para um processo em execução:


Valeu


fiaux
GUJ Master
[Avatar]

Membro desde: 16/06/2006 11:58:29
Mensagens: 1184
Localização: Rio de Janeiro - RJ
Offline

Bom, você teria que ter a instância de process na mão para poder alterar (se é que é possível). Isso eu não sei como fazer (pegar a instância de outras aplicaçôes). Talvez seja possível e fácil de fazer (se o SO permitir) com processos filhos.

Bom, eu não sei ao certo, achei algumas coisas, veja se te ajuda:
http://forum.java.sun.com/thread.jspa?threadID=5289091&messageID=10219558
http://www.velocityreviews.com/forums/t151135-setting-java-runtime-process-priority.html
http://forum.java.sun.com/thread.jspa?threadID=705093&messageID=4087136

This message was edited 2 times. Last update was at 08/05/2008 16:59:03


Necessita-se:
1) Inglês técnico para pesquisas no Google.
2) Português técnico para perguntas e respostas no fórum.

http://www.ffiaux.com

"Após 7,5 milhões de anos processando, o Pensador Profundo responde a Questão Fundamental da Vida, o Universo e Tudo o Mais. E a resposta é: 42"

"Java é uma ilha, Ruby é uma pedra, Phyton é um réptil, C é uma letra e AJAX é um detergente"

Não sou fanático por programação, só trabalho aqui...
[WWW]
otaviofcs
Virtual Machine Man
[Avatar]

Membro desde: 21/12/2006 18:01:54
Mensagens: 511
Localização: Rio de Janeiro
Offline

Você diz, prioridade de verdade? Tipo Linux? Numa boa, sem despertar flames: isso não existe de verdade no windows. Aliás, nem sei se existe de mentira (pelo seu post, parece que sim).

Um processo no windows define o momento em que ele vai parar de usar o processador. Se ele travar o processador para ele, babau!

Já no Linux (e em vários outros SO's), o kernel e as prioridades definem o tempo de acesso ao processador. Ou seja, se ele demorar demais e outros processos estiverem na fila, o kernel dá uma paradinha no processo demorado e dá um tempo pro próximo processo priorizado da fila.

This message was edited 1 time. Last update was at 08/05/2008 17:12:15


visite o blog da Riopro em:
http://blog.riopro.com.br

Aumente a capacidade de inovação na sua empresa usando o Zest:
http://zest.com.br

Conheça também:
http://votebolsa.com.br
[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

otaviofcs wrote:
Um processo no windows define o momento em que ele vai parar de usar o processador. Se ele travar o processador para ele, babau!


Aham, a sua afirmação valia no tempo do Windows 3.1 (16 bits), ou do MacOS antes da versão 10 (Mac OSX).

O Windows NT e seus sucessores (2000, XP, Vista etc.) usam um scheduler como os outros sistemas operacionais tradicionais (Unix/Linux, etc.)

Só o Windows 3.1 ou anteriores requeriam que um processo explicitamente passasse o controle para outro processo, usando a API Yield (nesse tempo não havia nem a API Sleep, para ter uma idéia).


[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Para você alterar a prioridade de um processo já rodando, o seu usuário (ou processo C/C++) tem de ter as permissões corretas, saber seu PID, obter um "process handle" a partir do PID (API do Windows OpenProcess) , e então você precisa usar a API do Windows SetPriorityClass.


[WWW]
Bruno_Leonardo
JavaEvangelist

Membro desde: 25/01/2008 17:13:57
Mensagens: 406
Offline

Blz, valeu galera pelas respostas.


otaviofcs
Virtual Machine Man
[Avatar]

Membro desde: 21/12/2006 18:01:54
Mensagens: 511
Localização: Rio de Janeiro
Offline

realmente thingol, você tem razão e eu fui enfático demais. Houve uma mudança nos padrões do windows mesmo. Mas foi após NT (no nt implementaram mas não funcionava direito). E mesmo no 2000 dava um certo pau (e você não tinha possibilidade de redefinição de prioridade dos serviços já rodando). O XP (na verdade o 2003 e 2005, porque falamos de servidores, eu creio) dá algum grau de prioridade (mas o gerenciamento não é simples).

O Vista não tem mais esse problema, porque afinal você mal consegue usar ele sozinho (isso é triste mais é sério, porque um dos meus notebooks tem essa porcaria, e atualizado com sp1).

abraços,

otávio

visite o blog da Riopro em:
http://blog.riopro.com.br

Aumente a capacidade de inovação na sua empresa usando o Zest:
http://zest.com.br

Conheça também:
http://votebolsa.com.br
[WWW]
aleck
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 08:08:33
Mensagens: 843
Localização: Rio de Janeiro
Offline

otaviofcs wrote:realmente thingol, você tem razão e eu fui enfático demais. Houve uma mudança nos padrões do windows mesmo. Mas foi após NT (no nt implementaram mas não funcionava direito). E mesmo no 2000 dava um certo pau (e você não tinha possibilidade de redefinição de prioridade dos serviços já rodando). O XP (na verdade o 2003 e 2005, porque falamos de servidores, eu creio) dá algum grau de prioridade (mas o gerenciamento não é simples).

O Vista não tem mais esse problema, porque afinal você mal consegue usar ele sozinho (isso é triste mais é sério, porque um dos meus notebooks tem essa porcaria, e atualizado com sp1).

abraços,

otávio


How Can I Lower the Priority of a Process Using a Script?
http://www.microsoft.com/technet/scriptcenter/resources/qanda/may05/hey0516.mspx

SetPriority for Windows (Programa externo)
http://gilchrist.ca/jeff/SetPriority/index.html

Desenvolvedor iOS/Android
http://blog.alexandresoli.com.br
@alexandresoli
[WWW] [MSN]
otaviofcs
Virtual Machine Man
[Avatar]

Membro desde: 21/12/2006 18:01:54
Mensagens: 511
Localização: Rio de Janeiro
Offline

E mesmo no 2000 dava um certo pau (e você não tinha possibilidade de redefinição de prioridade dos serviços já rodando).


Interessante o script. E ele condiz com a minha explicação:


"Nice. But can you do this same thing using a script?

Well, as long as you?re running Windows XP or Windows Server 2003 the answer is yes.(Sorry, Windows 2000 users, but this won?t work for you.) "

visite o blog da Riopro em:
http://blog.riopro.com.br

Aumente a capacidade de inovação na sua empresa usando o Zest:
http://zest.com.br

Conheça também:
http://votebolsa.com.br
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team