Pular para o conteúdo principal

Questão de Sistemas Operacionais — Conceitos de Gerência de Processos (SO) — CESPE / CEBRASPE 2025

Sistemas OperacionaisConceitos de Gerência de Processos (SO)
Código
ce418256
Banca
CESPE / CEBRASPE
Órgão
TRF 6
Ano
2025
Cargo
AJ TRF6

Para o controle de umidade e de temperatura das unidades de cura de uma indústria que produz alimentos embutidos, está prevista a instalação, em cada unidade, de um microcontrolador conectado a 4 sensores de temperatura e 4 sensores de umidade. O microcontrolador de cada unidade envia a média de umidade e de temperatura para uma Raspberry Pi com Linux, alojada em um totem (dispositivo ou painel vertical, destinado à interação com usuário) de controle que deve apresentar essas informações na sua tela. As coletas dos dados de cada unidade e a apresentação das informações em tela devem ser realizadas por processos diferentes do sistema operacional, ou seja, se houver três unidades na empresa, haverá três processos de leitura e um de escrita dessas informações em tela. Todos os programas necessários devem ser desenvolvidos em C/C++.

 

A partir da situação hipotética precedente, julgue o item a seguir.

 

Para cumprir o requisito de leitura das informações por processos distintos, basta criar um único programa para leitura dos dados e, nesse programa, criar threads para a leitura das informações de cada unidade.

  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”.

Processos e threads no Linux

Gabarito: letra E (ERRADO). O requisito do enunciado é que as coletas de cada unidade sejam realizadas por processos diferentes do sistema operacional — e não por threads. Criar um único programa com threads para a leitura de cada unidade não atende a esse requisito, pois threads pertencem ao mesmo processo e compartilham o mesmo espaço de endereçamento, enquanto processos são entidades independentes com espaços de endereçamento próprios. A distinção entre processo e thread é o cerne da questão.

Para entender por que a afirmativa está errada, é preciso dominar a diferença fundamental entre processo e thread (também chamada de linha de execução). Um processo é uma instância de um programa em execução, com seu próprio espaço de endereçamento de memória, seus próprios descritores de arquivos e seu próprio contexto de hardware (registradores, contador de programa). Cada processo é uma entidade isolada das demais — um processo não acessa diretamente a memória de outro. Já uma thread é uma unidade básica de utilização da CPU dentro de um processo: várias threads de um mesmo processo compartilham o mesmo espaço de endereçamento, os mesmos arquivos abertos e os mesmos recursos do processo-pai. Em outras palavras, threads são "subprocessos" leves que executam concorrentemente dentro de um mesmo processo.

O enunciado é explícito: "As coletas dos dados de cada unidade e a apresentação das informações em tela devem ser realizadas por processos diferentes do sistema operacional, ou seja, se houver três unidades na empresa, haverá três processos de leitura e um de escrita dessas informações em tela." A banca deixa claro que o requisito é de processos distintos, não de threads. A afirmativa propõe "criar um único programa para leitura dos dados e, nesse programa, criar threads para a leitura das informações de cada unidade" — ou seja, um único processo com múltiplas threads. Isso viola frontalmente o requisito de processos diferentes.

Na prática, se o programador seguisse a sugestão da afirmativa, teria um único processo (um único PID) com três threads internas, cada uma lendo os sensores de uma unidade. Do ponto de vista do sistema operacional, seria um processo, não três. Para atender ao requisito, seria necessário criar três processos — por exemplo, usando a chamada de sistema fork() no Linux, que duplica o processo atual, ou exec() para substituir a imagem do processo. Cada processo teria seu próprio espaço de endereçamento e seria escalonado independentemente pelo kernel.

A pegadinha da banca está exatamente na confusão entre processo e thread. O candidato que não domina essa distinção pode achar que "criar threads" é uma forma válida de criar "processos de leitura", mas não é: threads são unidades de execução dentro de um mesmo processo, e não processos independentes. O requisito de "processos diferentes" exige a criação de processos, não de threads.

NÃO CAIA NESSA!

A banca troca o conceito de processo por thread. O enunciado exige "processos diferentes" (três processos de leitura), mas a afirmativa propõe "threads" dentro de um único programa — o que resulta em um único processo com múltiplas linhas de execução. Essa é uma armadilha clássica: o candidato que confunde os dois conceitos marca "Certo" sem perceber que threads compartilham o mesmo espaço de endereçamento e não são processos independentes.

Critério

Processo

Thread

Definição

Instância de um programa em execução, entidade independente

Unidade básica de execução dentro de um processo

Espaço de endereçamento

Próprio e isolado

Compartilhado com outras threads do mesmo processo

Recursos (arquivos, etc.)

Descritores próprios

Compartilhados com o processo-pai

Criação no Linux

fork() / exec()

Chamada de criação de thread (ex.: pthread_create)

Resultado no SO

Entidade independente (PID próprio)

Pertence ao mesmo processo (mesmo PID)

Processo
  • 1Entidade independente
    • Espaço de endereçamento próprio
    • Descritores de arquivos próprios
    • Contexto de hardware próprio
  • 2Criação
    • fork() duplica o processo
    • exec() substitui a imagem
  • 3Thread
    • Unidade de execução dentro do processo
      • Compartilha memória
      • Compartilha arquivos abertos
      • Compartilha recursos do pai
    • Resultado: um único processo
LEVEL · soulevel.com.br

Item — ❌ ERRADO

A afirmativa está errada porque propõe a criação de threads dentro de um único programa para atender ao requisito de "processos diferentes". Threads são linhas de execução que pertencem ao mesmo processo e compartilham o mesmo espaço de endereçamento, os mesmos arquivos abertos e os mesmos recursos. Criar três threads em um único programa resulta em um único processo com três linhas de execução — não em três processos independentes. Para atender ao requisito do enunciado, seria necessário criar três processos distintos, por exemplo, usando a chamada de sistema fork() no Linux, que cria um novo processo duplicando o processo atual. Cada processo teria seu próprio espaço de endereçamento e seria uma entidade independente perante o sistema operacional.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/ce418256