Eu preciso suspender e resumir um processo do Windows que eu criei usando o Runtime.exec, no entanto até agora eu não consegui fazer isso, apenas matar o processo. Como eu faço para conseguir suspender e resumir o processo?
Suspender, resumir processo
7 Respostas
Não existe a opção de “suspender e resumir” um processo.
Se seu sistema operacional dá suporte a isso, você pode chamar um comando específico também através do Runtime.exec. Nunca vi um que faça, pois isso também ia deixar aberto locks de regiões críticas e file handlers.
Então, meu professor falou que eu teria que instanciar o programa dentro da JVM, para poder fazer esse tipo de controle, no entanto eu não sei fazer isso, apenas instanciar fora da JVM, o que deixa o controle total pro Windows.
Você pode suspender e resumir Threads. Isso é, se elas forem parte do seu programa.
Aí sim, daria pra usar o wait e notify.
Seria isso?
Não, não é com threads, é com processo mesmo.
O que eu tenho que fazer é
Implementa o conceito de processo
Criar processos CPU-bound e IO-bound;
Suspender/resumir e eliminar processos;
Visualizar as mudanças de estado dos processos;
Além de gerenciar memória e escalonar os processos com prioridade.
Eu cheguei a criar um processo, no entanto eu não descobri como implementar o destroy(), como ele deu a opção de fazer usando processos do windows, eu optei por eles, no entanto não consegui avançar muito mais, o destroy funciona, mas suspender e resumir não, da erro.
Melhor confirmar com ele, mas acho que ele quer que você simule isso, como se sua aplicação fosse o sistema operacional.
Por que ele deve estar falando em você implementar um escalonador falso e provavelmente os algoritmos de time-sharing, como o round robin.
Melhor confirmar com ele, mas acho que ele quer que você simule isso, como se sua aplicação fosse o sistema operacional.Por que ele deve estar falando em você implementar um escalonador falso e provavelmente os algoritmos de time-sharing, como o round robin.
Sim, ele falou que dava pra simular, acho que foi justamente nessa parte. Simulando então, o JVM vai ter conhecimento do processo do Windows, no entanto mesmo eu mexendo nele (suspendendo e resumindo) não acontecerá nada com o processo do windows?
Na verdade, acho que você vai criar uma classe que representa um processo falso. E colocar métodos nela para dizer que seu escalonador está dando a ela o direito de processar.