Pular para o conteúdo principal

Questão de Sistemas Operacionais — Comandos — CESPE / CEBRASPE 2024

Sistemas OperacionaisComandos
Código
ce190524
Banca
CESPE / CEBRASPE
Órgão
TSE
Ano
2024
Nível
Superior
Cargo
Analista Judiciário – Área: Apoio Especializado – Especialidade: Tecnologia da Informação
Captura_de tela 2024-12-17 082923.png 457×452Com base no código precedente, cuja estrutura permite que o gerenciador de controle de serviços do Windows gerencie e controle corretamente o serviço, julgue o item a seguir.O comando new MyService() permite inicializar o ciclo de vida dos serviços, criados na matriz de serviço, que serão executados simultaneamente.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Ciclo de vida de serviços no Windows: instanciação e execução

Gabarito: letra E (ERRADO). O comando new MyService() apenas cria uma instância do objeto que representa o serviço; ele não inicializa o ciclo de vida dos serviços nem os coloca em execução. A inicialização e o controle do ciclo de vida (iniciar, parar, pausar) são feitos pelo Service Control Manager (SCM) do Windows, que invoca métodos como OnStart e OnStop da classe de serviço. A afirmação de que os serviços seriam "executados simultaneamente" também é incorreta, pois cada serviço roda em seu próprio processo e o SCM os gerencia individualmente, não como uma matriz executada em paralelo. O ciclo de vida de um serviço do Windows é um conceito central para entender esta questão. Um serviço é um programa que roda em segundo plano, sem interface com o usuário, e é gerenciado pelo SCM (Service Control Manager). O SCM é o componente do Windows responsável por iniciar, parar, pausar e controlar todos os serviços do sistema. Quando você escreve uma classe de serviço em C# (ou outra linguagem .NET), ela herda de ServiceBase e sobrescreve métodos como OnStart, OnStop, OnPause, OnContinue, entre outros. O new MyService() simplesmente instancia o objeto em memória — é a criação do objeto, não a inicialização do serviço. A inicialização real ocorre quando o SCM chama o método OnStart do serviço, que é invocado quando o serviço é iniciado (manualmente ou automaticamente).

A confusão entre "instanciar" e "iniciar" é a pegadinha central. Instanciar (new) é uma operação de programação que aloca memória e cria um objeto. Iniciar um serviço é uma operação do sistema operacional que envolve o SCM, a criação de um processo, a chamada de OnStart e a transição do serviço para o estado "Running". Além disso, a afirmação de que os serviços seriam "executados simultaneamente" é enganosa: cada serviço é um processo separado, e o SCM os gerencia de forma independente. Mesmo que vários serviços estejam rodando ao mesmo tempo, isso não é resultado de um único comando new, mas sim do gerenciamento do SCM. Para fixar: o ciclo de vida de um serviço no Windows segue uma sequência de estados — Parado (Stopped), Iniciando (StartPending), Executando (Running), Parando (StopPending), Pausando (PausePending), Pausado (Paused), etc. O SCM controla essas transições. O new MyService() não tem relação com esses estados; ele apenas cria o objeto que será usado pelo SCM quando o serviço for iniciado. A banca explora exatamente essa confusão entre o nível de código (instanciação) e o nível de sistema (gerenciamento de serviços).

NÃO CAIA NESSA!

A banca troca "instanciar" por "inicializar o ciclo de vida". O candidato que não domina a diferença entre criar um objeto em memória e registrar/iniciar um serviço no SCM cai na armadilha. Lembre-se: new é só o começo — o SCM é quem manda no ciclo de vida.

  1. 1Instanciação (new)
  2. 2Registro no SCM
  3. 3OnStart
  4. 4Running
  5. 5OnStop
LEVEL · soulevel.com.br

Item — ❌ ERRADO

A afirmação está incorreta por dois motivos principais. Primeiro, new MyService() apenas instancia o objeto; não inicializa o ciclo de vida. A inicialização é feita pelo SCM, que chama OnStart quando o serviço é iniciado. Segundo, a ideia de que os serviços seriam "executados simultaneamente" por causa de uma matriz é falsa: cada serviço é um processo independente, e o SCM os gerencia individualmente. A matriz de serviços no código serve apenas para criar as instâncias dos objetos, não para executá-los em paralelo. O correto seria dizer que o SCM gerencia o ciclo de vida de cada serviço, e a execução simultânea (se ocorrer) é consequência do gerenciamento do sistema, não do comando new. Gabarito: letra E (ERRADO).

Link permanente: /questoes/ce190524