Pular para o conteúdo principal

Questão de Sistemas Operacionais — Linux — CESPE / CEBRASPE 2025

Sistemas OperacionaisLinux
Código
ce418257
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.

 

A utilização de pipes permite a comunicação entre os processos de leitura das informações de umidade e de temperatura em cada unidade e o processo de escrita em tela.

  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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

Comunicação entre Processos (IPC) com Pipes no Linux

Gabarito: letra C (Certo). A utilização de pipes é um mecanismo válido de comunicação entre processos (IPC) no Linux, permitindo que os processos de leitura de sensores enviem dados ao processo de escrita em tela. O pipe é um canal unidirecional de comunicação entre processos, tipicamente usado para conectar a saída de um processo à entrada de outro, e é perfeitamente adequado para o cenário descrito, em que cada unidade de cura possui um processo de leitura que deve transmitir informações para um processo central de exibição.

Os pipes são um dos mecanismos fundamentais de comunicação entre processos (IPC) em sistemas operacionais Unix-like, como o Linux. Eles permitem que processos troquem dados de forma eficiente, sem a necessidade de arquivos intermediários ou mecanismos mais complexos. Um pipe é essencialmente um buffer gerenciado pelo kernel, com duas extremidades: uma de escrita e uma de leitura. O processo que deseja enviar dados escreve na extremidade de escrita, e o processo que deseja receber lê da extremidade de leitura. Essa comunicação é unidirecional, ou seja, os dados fluem em apenas uma direção.

No contexto da questão, temos três processos de leitura (um para cada unidade de cura) e um processo de escrita em tela. Cada processo de leitura coleta dados de temperatura e umidade dos sensores e precisa enviar essas informações para o processo de escrita. Os pipes são uma solução natural para esse problema: cada processo de leitura pode criar um pipe (ou usar um pipe nomeado) e escrever os dados, enquanto o processo de escrita lê de todos os pipes e exibe as informações na tela. Isso estabelece uma comunicação eficiente e organizada entre os processos.

É importante distinguir os pipes anônimos (ou não nomeados) dos pipes nomeados (FIFOs). Os pipes anônimos são criados pela chamada de sistema pipe() e são usados principalmente para comunicação entre um processo pai e seu filho, ou entre processos que compartilham um ancestral comum. Já os pipes nomeados, criados com mkfifo(), permitem comunicação entre processos não relacionados, pois possuem um nome no sistema de arquivos. No cenário da questão, como os processos de leitura e o processo de escrita são processos distintos (provavelmente criados de forma independente), o uso de pipes nomeados seria mais adequado, embora pipes anônimos também possam ser utilizados se os processos forem criados a partir de um processo pai comum.

A banca explora aqui um conceito central de sistemas operacionais: a comunicação entre processos (IPC). O candidato pode confundir pipes com outros mecanismos de IPC, como memória compartilhada, filas de mensagens ou sockets. No entanto, a questão é direta ao afirmar que "a utilização de pipes permite a comunicação entre os processos", o que é verdadeiro. Não há nenhuma restrição no enunciado que impeça o uso de pipes; pelo contrário, a descrição do cenário (processos distintos que precisam trocar dados) é exatamente o tipo de situação em que pipes são recomendados.

Portanto, a afirmativa está correta. Os pipes são um mecanismo de IPC válido e eficiente para a comunicação entre os processos de leitura e o processo de escrita em tela, conforme descrito na situação hipotética.

  1. 1Processo de leitura coleta dados
  2. 2Escreve no pipe
  3. 3Processo de escrita lê do pipe
  4. 4Exibe informações na tela
LEVEL · soulevel.com.br

Alternativa C — ✅ CertoGABARITO

A afirmativa está correta porque os pipes são um mecanismo de comunicação entre processos (IPC) amplamente suportado no Linux. Eles permitem que um processo envie dados a outro, estabelecendo um canal de comunicação unidirecional. No cenário descrito, cada processo de leitura pode escrever os dados coletados em um pipe, e o processo de escrita pode ler desses pipes para exibir as informações na tela. Não há nenhuma limitação técnica que impeça essa abordagem; pelo contrário, é uma solução comum e eficiente para comunicação entre processos em sistemas Unix-like.

PEGA ESSA DICA!

Para questões sobre IPC, lembre-se dos principais mecanismos: pipes (anônimos e nomeados), filas de mensagens, memória compartilhada, semáforos e sockets. Cada um tem suas características: pipes são unidirecionais e simples; filas de mensagens permitem troca de mensagens estruturadas; memória compartilhada é rápida, mas exige sincronização; semáforos são usados para controle de concorrência; sockets são usados para comunicação em rede. Na prova, identifique o cenário (processos relacionados ou não, necessidade de bidirecionalidade, volume de dados) para escolher o mecanismo adequado.

Gabarito: letra C (Certo).

Link permanente: /questoes/ce418257