Pular para o conteúdo principal

Questão de Sistemas Operacionais — Conceitos de Gerência de Processos (SO) — VUNESP 2023

Sistemas OperacionaisConceitos de Gerência de Processos (SO)
Código
vu196612
Banca
VUNESP
Órgão
UNIVESP
Ano
2023
Cargo
Sup Ped ( )

Diversas são as formas de realizar a comunicação entre processos (IPC, do inglês Inter-Process Communication) quando da execução de um sistema operacional. Um exemplo de recurso unidirecional que pode ser utilizado para esse propósito é

  1. Ao fork.
  2. Bo evento.
  3. Co pipe.
  4. Do thread.
  5. Ea memória compartilhada.
Revelar gabarito e comentário

GabaritoC — o pipe.

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) e o Pipe

Gabarito: letra C. O pipe é um mecanismo de comunicação unidirecional entre processos, no qual os dados fluem em uma única direção, de um processo escritor para um processo leitor. As demais alternativas não representam recursos de comunicação unidirecional: fork é uma chamada de sistema para criar processos, evento é um mecanismo de sincronização, thread é uma unidade de execução e memória compartilhada é um mecanismo de comunicação bidirecional.

A comunicação entre processos (IPC) é um dos pilares dos sistemas operacionais modernos, permitindo que processos cooperem entre si para realizar tarefas complexas. Existem diversos mecanismos de IPC, cada um com suas características específicas de direção, capacidade de dados e sincronização. O pipe, também conhecido como canal ou tubo, é um dos mecanismos mais antigos e fundamentais, presente nos sistemas Unix desde suas primeiras versões.

O pipe funciona como um buffer no núcleo do sistema operacional, onde um processo escreve dados em uma extremidade e outro processo lê esses dados na outra extremidade. A característica fundamental do pipe é sua unidirecionalidade: os dados fluem apenas em uma direção, do escritor para o leitor. Isso significa que, se dois processos precisarem se comunicar em ambas as direções, serão necessários dois pipes, um para cada sentido.

Na prática, o pipe é criado pela chamada de sistema pipe(), que retorna dois descritores de arquivo: um para leitura e outro para escrita. O processo pai pode então criar um processo filho com fork(), e ambos compartilham os descritores do pipe. O pai escreve no descritor de escrita, e o filho lê no descritor de leitura, ou vice-versa. Essa estrutura é amplamente utilizada em shells de comando, onde o operador | conecta a saída de um comando à entrada de outro, como em ls | grep txt.

É importante distinguir o pipe de outros mecanismos de IPC. A memória compartilhada, por exemplo, permite que múltiplos processos acessem a mesma região de memória, possibilitando comunicação bidirecional, mas exige mecanismos de sincronização para evitar condições de corrida. Os eventos, por sua vez, são usados para sincronização, não para transferência de dados. Já o fork e as threads são mecanismos de criação de unidades de execução, não de comunicação.

A pegadinha desta questão está em identificar qual alternativa representa um recurso de comunicação unidirecional. O candidato pode ser tentado a escolher a memória compartilhada, por ser um mecanismo de IPC bem conhecido, mas ela é bidirecional. O pipe, por sua vez, é o exemplo clássico de comunicação unidirecional, sendo a resposta correta.

Guarde a distinção entre os mecanismos de IPC: pipe é unidirecional, memória compartilhada é bidirecional, e eventos são para sincronização. É exatamente essa fronteira que separa as alternativas desta questão.

Mecanismos de IPC
  • 1Comunicação
    • Pipe
      • unidirecional
      • buffer no núcleo
    • Memória compartilhada
      • bidirecional
      • exige sincronização
  • 2Sincronização
    • Evento
      • sinaliza condição
      • não transfere dados
  • 3Criação de execução
    • Fork
      • cria processo
    • Thread
      • unidade de execução
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O fork é uma chamada de sistema utilizada para criar um novo processo, duplicando o processo atual. Ele não é um mecanismo de comunicação entre processos, mas sim um mecanismo de criação de processos. Após o fork, os processos pai e filho podem se comunicar por outros mecanismos, como pipes, mas o fork em si não realiza comunicação.

Alternativa B — ❌ Incorreta

Eventos são mecanismos de sincronização entre processos ou threads, utilizados para sinalizar a ocorrência de uma condição ou para coordenar a execução concorrente. Eles não são utilizados para transferir dados entre processos, mas sim para sincronizar suas execuções. Portanto, não se enquadram como recurso de comunicação unidirecional.

Alternativa C — ✅ Correta ⟵ GABARITO

O pipe é um mecanismo de comunicação unidirecional entre processos, no qual os dados fluem em uma única direção, de um processo escritor para um processo leitor. Ele é implementado como um buffer no núcleo do sistema operacional, e sua criação é feita pela chamada de sistema pipe(). O pipe é amplamente utilizado em shells de comando, onde o operador | conecta a saída de um comando à entrada de outro.

Alternativa D — ❌ Incorreta

Thread é uma unidade básica de execução dentro de um processo, que compartilha o mesmo espaço de endereçamento e recursos do processo. Threads podem se comunicar diretamente por variáveis compartilhadas, mas não são um mecanismo de comunicação entre processos. Além disso, a comunicação entre threads não é necessariamente unidirecional.

Alternativa E — ❌ Incorreta

A memória compartilhada é um mecanismo de IPC que permite que múltiplos processos acessem a mesma região de memória. Ela possibilita comunicação bidirecional, pois qualquer processo pode ler e escrever na área compartilhada. Por ser bidirecional, não se enquadra como recurso de comunicação unidirecional, sendo este o erro da alternativa.

Gabarito: letra C

Link permanente: /questoes/vu196612