Pular para o conteúdo principal

Questão de Sistemas Operacionais — Threads (SO) — CESPE / CEBRASPE 2024

Sistemas OperacionaisThreads (SO)
Código
ce404115
Banca
CESPE / CEBRASPE
Órgão
CTI
Ano
2024
Cargo
Tecno P1 ( )
Julgue o item subsequente, que versam acerca de sistemas operacionais.   Uma thread que busca informações armazenadas na memória secundária deve enviar ao sistema operacional uma solicitação contendo o tipo de operação a ser realizada e um identificador do arquivo, não sendo necessário fornecer o endereço de memória onde o arquivo deverá ser armazenado, nem a quantidade de dados a ser transferida.
  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”.

Threads e operações de E/S em sistemas operacionais

Gabarito: letra E (ERRADO). A afirmação está incorreta porque, ao realizar uma operação de leitura em memória secundária, a thread deve fornecer ao sistema operacional não apenas o tipo de operação e o identificador do arquivo, mas também o endereço de memória onde os dados serão armazenados e a quantidade de dados a ser transferida. Essa é a essência das chamadas de sistema de E/S, como read() e write(), que exigem um buffer na memória principal e o número de bytes a serem lidos ou gravados.

Para entender por que a afirmação está errada, é preciso compreender como funciona a comunicação entre uma aplicação (que pode ser uma thread) e o sistema operacional para realizar operações de entrada e saída. Quando um programa precisa ler dados de um arquivo armazenado em um disco rígido (memória secundária), ele não acessa o disco diretamente. Em vez disso, ele faz uma chamada de sistema (system call) ao núcleo do sistema operacional, que é o único componente com privilégios para interagir com o hardware.

Essa chamada de sistema precisa ser extremamente específica para que o sistema operacional saiba exatamente o que fazer. Imagine que você peça a um assistente para buscar um livro em uma biblioteca. Se você apenas disser "busque o livro", o assistente não saberá qual livro, onde colocá-lo ou quanto tempo terá para a tarefa. Da mesma forma, a chamada de sistema de leitura precisa conter:

  1. Tipo de operação: se é uma leitura (read) ou uma escrita (write).

  2. Identificador do arquivo: geralmente um descritor de arquivo (file descriptor), que é um número inteiro que representa o arquivo aberto.

  3. Endereço de memória (buffer): o endereço na memória principal (RAM) onde os dados lidos do disco devem ser colocados. Sem isso, o sistema operacional não saberia para onde copiar os dados.

  4. Quantidade de dados: o número de bytes que se deseja ler ou escrever. Isso é crucial para que o sistema operacional saiba quantos dados transferir e para alocar os recursos necessários.

A afirmação do enunciado omite justamente os dois últimos pontos, que são indispensáveis. A thread não pode simplesmente dizer "leia o arquivo X" e esperar que o sistema operacional adivinhe onde colocar os dados. O buffer de memória é um espaço reservado na RAM do processo, e a thread precisa informar seu endereço para que o sistema operacional possa preenchê-lo. Da mesma forma, a quantidade de dados é essencial para controlar a transferência e evitar estouros de buffer.

A pegadinha desta questão está em sugerir que a operação de E/S é mais simples do que realmente é, omitindo informações cruciais. O candidato pode ser levado a pensar que, como o sistema operacional gerencia a memória, ele saberia automaticamente onde colocar os dados. No entanto, a responsabilidade de fornecer o buffer e o tamanho da transferência é do processo solicitante, não do sistema operacional.

NÃO CAIA NESSA!

A banca tenta fazer o candidato acreditar que o sistema operacional "adivinha" onde colocar os dados lidos do disco. Na prática, a thread precisa fornecer o endereço do buffer na memória e a quantidade de bytes, pois é o processo que define onde os dados devem ser armazenados em seu próprio espaço de endereçamento. Essa é uma inversão clássica de responsabilidade.

  1. 1Tipo de operação
  2. 2Identificador do arquivo
  3. 3Endereço do buffer (RAM)
  4. 4Quantidade de bytes
LEVEL · soulevel.com.br

Item — ❌ ERRADO

A afirmação está incorreta. Uma thread que busca informações na memória secundária deve enviar ao sistema operacional uma solicitação contendo o tipo de operação (leitura/escrita), o identificador do arquivo, o endereço de memória onde os dados serão armazenados e a quantidade de dados a ser transferida. Esses dois últimos parâmetros são essenciais para que o sistema operacional execute a operação corretamente, copiando os dados do disco para o buffer indicado e respeitando o tamanho solicitado. Sem eles, a operação seria ambígua e impossível de ser realizada com segurança.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/ce404115