O guardião secreto do Windows: como o Service Control Manager funciona silenciosamente nos bastidores?

Quando você inicia o sistema Windows, muitos serviços são executados silenciosamente em segundo plano, o que é um pilar importante da estabilidade do sistema operacional. A inicialização e o gerenciamento desses serviços são, em grande parte, responsabilidade do Service Control Manager (SCM). SCM é um processo especial do sistema localizado no sistema operacional Windows NT, responsável por iniciar, parar e interagir com processos de serviço do Windows.

A principal funcionalidade do SCM começa com sua função principal SvcCtrlMain(), que inicia todos os serviços configurados para iniciar automaticamente.

O arquivo executável do SCM services.exe está localizado em %SystemRoot%\System32\ e é iniciado pelo processo Wininit no início da inicialização do sistema. Quando o SCM começa a funcionar, ele primeiro inicializa seu banco de dados interno de serviços instalados, o que envolve a leitura de chaves de registro específicas.

Especificamente, ele inicializa o banco de dados interno lendo as duas chaves de registro a seguir:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List, esta chave contém os nomes dos grupos de serviços e sua ordem.
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, esta chave contém os dados reais do serviço e do driver do dispositivo.

O SCM determina a ordem de carregamento dos serviços com base no valor do Grupo e nas dependências de cada serviço. Durante esse processo, se uma dependência circular for encontrada, o SCM registrará um erro e ignorará o serviço que depende do grupo carregado tardiamente.

A próxima etapa no SCM é verificar se os drivers de dispositivo que devem ser iniciados durante a inicialização do sistema foram carregados com sucesso e salvar os drivers com falha em uma lista chamada ScFailedDrivers.

O SCM então chama a função ScAutoStartServices(), que percorre todos os serviços marcados para início automático e os inicia adequadamente. Para cada serviço, o SCM chama a função ScStartService() para garantir que o processo do serviço seja executado na conta correta. Se o serviço não estiver em execução na conta do sistema, o SCM chamará a função LSASS LogonUserEx() para obter a senha "secreta" que foi armazenada com segurança quando o serviço foi configurado inicialmente.

Além disso, há também um tipo especial de serviço: o serviço de inicialização automática retardada. Este tipo de serviço foi introduzido no Windows Vista para resolver o problema de inicialização lenta do sistema. O SCM não começará a inicializar os serviços de início automático atrasado até que todos os serviços de início automático não atrasados ​​tenham sido processados.

Embora haja um atraso no início desses serviços, eles não são muito diferentes de outros serviços, exceto pela ordem em que são iniciados.

Vale a pena notar que o SCM também lida especificamente com serviços de driver de dispositivo. O valor de registro de tipo desses serviços é SERVICE_KERNEL_DRIVER ou SERVICE_FILE_SYSTEM_DRIVER. Quando o SCM chama ScStartService(), ele chama a função ScLoadDeviceDriver() para carregar o driver correspondente.

Por meio da chamada de sistema NtLoadDriver, o SCM garante que o driver seja carregado corretamente. Durante o processo de inicialização, o SCM é responsável até mesmo por notificar outros aplicativos, como o Windows Explorer, quando o status da conexão de uma unidade de rede muda, transmitindo a mensagem do Windows WM_DEVICECHANGE.

Este design permite que os usuários gerenciem melhor os recursos e serviços do sistema, garantindo o bom funcionamento do sistema operacional.

No entanto, apesar do papel crítico que o SCM desempenha na inicialização de um sistema, muitos usuários não entendem realmente como ele funciona. Por trás de cada operação do SCM, há uma tecnologia complexa e eficiente. De fato, ela permite que os usuários usem aqueles aplicativos e serviços aparentemente comuns sem quaisquer obstáculos.

Nas versões futuras do Windows, como o SCM evoluirá para atender às necessidades cada vez mais diversas dos usuários?

Trending Knowledge

O segredo de iniciar serviços automaticamente: como o sistema Windows acelera a inicialização?
Na era digital de hoje, a inicialização rápida e a operação eficiente do sistema são extremamente importantes para os usuários. O sistema Windows pode iniciar muitos serviços em um curto período de te
Mistério da tela azul: Que mudanças surpreendentes ocorrerão se o services.exe for encerrado?
Nos sistemas operacionais Windows modernos, o Service Control Manager (SCM) ou services.exe é um dos componentes principais da operação do sistema. Este processo é responsável por iniciar

Responses