ReactOS implementa suporte a Job Objects no kernel e zera falhas em testes do WINE

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Avanço no kernel do ReactOS!

O ReactOS, sistema operacional de código aberto focado em compatibilidade binária com o Windows, recebeu uma atualização substancial em sua arquitetura interna. A equipe de desenvolvimento integrou ao repositório principal o suporte básico aos “Job Objects” dentro do subsistema de processos do kernel (NTOS), uma adição que resolveu gargalos de compatibilidade e zerou dezenas de falhas em testes automatizados.

O código, integrado na ramificação principal (master) sob o Pull Request #7500, adicionou mais de 2.200 linhas de código. A implementação foi finalizada e submetida pelo desenvolvedor conhecido como wnsntgs, mas unifica trabalhos e rascunhos anteriores de outros colaboradores de longa data do projeto, como Mark Jansen, Samuel Serapión Vega e Timo Kreuzer.

Entenda o conceito sem termos técnicos

8AJoLWfe suporte job objects kernel 1
ReactOS implementa suporte a Job Objects no kernel e zera falhas em testes do WINE 3

No ecossistema de sistemas operacionais baseados no Windows NT, um “Job” (Trabalho) funciona como um contêiner para gerenciar grupos de processos.

Em vez de o sistema tratar cada programa aberto de forma isolada, os Job Objects permitem que o sistema operacional agrupe vários processos e os manipule como uma entidade única. Isso é amplamente utilizado por navegadores de internet modernos e aplicações complexas para aplicar limites de uso de memória, restringir tempo de CPU ou garantir que, se o programa principal for fechado, todos os seus sub-processos invisíveis sejam encerrados automaticamente junto com ele, sem deixar “fantasmas” rodando em segundo plano.

Sem esse suporte no nível do kernel, o ReactOS falhava ao tentar executar softwares que dependiam dessa estrutura organizacional.

O escopo da implementação técnica

A atualização recém-aprovada traz o comportamento clássico de Jobs (pré-Windows 8) para o ReactOS. Com o novo código, o kernel passa a ser capaz de lidar nativamente com o ciclo de vida completo desses objetos.

As principais funções de sistema (Syscalls) e rotinas internas (Psp) introduzidas ou aprimoradas incluem:

  • Criação e Abertura:NtCreateJobObject e NtOpenJobObject.
  • Atribuição:NtAssignProcessToJobObject (colocando um processo dentro de um contêiner).
  • Encerramento em massa:NtTerminateJobObject (matando todos os processos do grupo de uma vez).
  • Gerenciamento de informações: Capacidade de consultar e definir limites básicos (NtQueryInformationJobObject e NtSetInformationJobObject).
  • Ciclo de vida: Remoção, enumeração de processos e exclusão segura do objeto em memória.

A regra fundamental dessa arquitetura foi respeitada: se um processo está contido em um Job, qualquer novo thread ou subprocesso que ele criar também fará parte desse mesmo Job, impedindo fugas não autorizadas do contêiner.

Impacto validado pelos testes do WINE

Para medir a fidelidade da implementação em relação ao comportamento esperado do Windows original, o projeto utiliza a suíte de testes do WINE (camada de compatibilidade de Windows para sistemas Unix).

Os resultados confirmaram o impacto técnico do patch: antes da inclusão desse suporte, a execução da suíte de testes kernel32 voltada a jobs registrava 60 falhas no ReactOS. Após a integração do código, o número de falhas caiu para zero, validando a correção estrutural da nova API e o tratamento das chamadas do sistema.

Próximos passos

Embora o avanço seja significativo para a estabilidade e compatibilidade geral do ReactOS, o desenvolvedor responsável pontuou que o suporte atual cobre o “básico” e listou as pendências para as próximas etapas de desenvolvimento:

  • Suporte a limites avançados de uso de recursos.
  • Implementação de “Job Sets”.
  • Mapeamento e suporte a mais flags de status.
  • Associação com portas de conclusão (Completion Ports), fundamental para operações assíncronas de I/O em rede e disco.
  • Correção de cenários de breakaway (situações específicas em que um processo recebe permissão para nascer fora do Job de seu processo pai).

O código já está disponível nos repositórios oficiais e integrará as próximas compilações diárias (nightlies) do ReactOS.

Compartilhe este artigo
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre GNU/Linux, Software Livre e Código Aberto, dedica-se a descomplicar o universo tecnológico para entusiastas e profissionais. Seu foco é em notícias, tutoriais e análises aprofundadas, promovendo o conhecimento e a liberdade digital no Brasil.