Pular para o conteúdo principal

Questão de Arquitetura de Computadores — Compilador — IADES 2024

Arquitetura de ComputadoresCompilador
Código
qg207149
Banca
IADES
Órgão
CENSIPAM
Ano
2024
Nível
Superior
Uma aplicação de computador típica, como um processador de texto ou um grande sistema de banco de dados, pode consistir em milhões de linhas de código e conta com bibliotecas de software sofisticadas que implementam funções complexas de suporte ao aplicativo. O hardware de um computador, entretanto, só pode executar instruções extremamente simples de baixo nível. Passar de uma aplicação complexa para instruções simples envolve várias camadas de software que interpretam ou traduzem operações de alto nível, um exemplo da grande ideia de abstração.PATTERSON, David A.; HENNESSY, John L. Computer organization and design. 5. ed. 2014 (tradução livre).No que se refere à organização de computadores e aos sistemas operacionais, assinale a alternativa correta.
  1. AO compilador traduz linha por linha o programa escrito em linguagem de alto nível, não sendo capaz de explorar otimizações específicas para a arquitetura do computador.
  2. BTécnicas de abstração aumentam a complexidade do sistema, pois expõem detalhes de funcionamento das camadas de software de mais baixo nível.
  3. CUm sistema operacional abstrai o computador fisico, escondendo detalhes de funcionamento do hardware e fornecendo uma interface de programação de aplicações (API) consistente para diferentes arquiteturas.
  4. DO hardware dos computadores modernos implementa uma hierarquia de memória que é totalmente exposta ao software quando se programa diretamente em assembly.
  5. EProcessadores que implementam a técnica de pipelining têm maior capacidade de execução de instruções em paralelo. Essa capacidade é exposta ao software quando se programa diretamente em assembly.
Revelar gabarito e comentário

GabaritoC — Um sistema operacional abstrai o computador fisico, escondendo detalhes de funcionamento do hardware e fornecendo uma interface de programação de aplicações (API) consistente para diferentes arquiteturas.

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

Organização de Computadores e Sistemas Operacionais

Gabarito: letra C. O sistema operacional atua como uma camada de abstração sobre o hardware, escondendo detalhes de baixo nível e oferecendo uma interface de programação (API) consistente, que permite que aplicações funcionem em diferentes arquiteturas sem modificação. Esse é o papel central do SO na organização de computadores.

A banca testa conceitos fundamentais: papel do compilador, abstração em sistemas operacionais, exposição de hardware e paralelismo em pipeline. A alternativa C é a única que descreve corretamente a função de abstração do sistema operacional.

Aspecto

Compilador

Interpretador

Sistema Operacional

Hardware / Pipeline

Função principal

Traduz código-fonte inteiro para linguagem de máquina

Executa código-fonte linha por linha

Abstrai hardware, gerencia recursos e fornece API

Executa instruções de baixo nível

Otimização para arquitetura

Sim, realiza otimizações específicas (alocação de registradores, escalonamento)

Não, executa sem otimizações prévias

Não otimiza código, mas gerencia hardware

Implementa técnicas como pipeline para paralelismo

Exposição de detalhes do hardware

Não expõe; gera código objeto

Não expõe; depende do ambiente de execução

Esconde detalhes; oferece interface consistente

Parcialmente exposto em assembly (ex.: registradores), mas hierarquia de memória é transparente

Impacto na complexidade

Reduz complexidade ao automatizar tradução

Mantém simplicidade de execução, mas sem otimização

Reduz complexidade ao abstrair hardware

Aumenta desempenho, mas complexidade é gerenciada pelo hardware

Alternativa A — ❌ Incorreta

Afirma que o compilador traduz linha por linha (característico de interpretadores) e que não explora otimizações para a arquitetura-alvo. Na verdade, compiladores processam o código-fonte inteiro e realizam otimizações específicas para o processador de destino, como alocação de registradores e escalonamento de instruções. Erro: confunde compilador com interpretador e nega a capacidade de otimização.

Alternativa B — ❌ Incorreta

Diz que técnicas de abstração aumentam a complexidade e expõem detalhes das camadas inferiores. O oposto é verdadeiro: a abstração reduz a complexidade ao esconder detalhes de implementação, fornecendo interfaces simplificadas. A exposição de detalhes seria contrária ao princípio de abstração.

Alternativa C — ✅ Correta ⟵ GABARITO

Descreve precisamente o papel do sistema operacional: abstrair o hardware, ocultar detalhes de funcionamento (como interrupções, gerenciamento de memória, dispositivos) e oferecer uma API (chamadas de sistema) consistente para que aplicações possam ser executadas em diferentes arquiteturas de hardware sem alteração. Esse é um dos pilares da portabilidade.

Alternativa D — ❌ Incorreta

Alega que a hierarquia de memória (cache, RAM, disco) é totalmente exposta ao programador assembly. Na realidade, a hierarquia de memória é gerenciada pelo hardware e pelo sistema operacional de forma transparente. Programadores assembly lidam com endereçamento virtual (quando presente) e não controlam diretamente os níveis de cache. Erro: superestima o controle do assembly sobre a hierarquia.

Alternativa E — ❌ Incorreta

Afirma que a técnica de pipelining expõe ao software a capacidade de paralelismo quando se programa em assembly. O pipelining é uma técnica de microarquitetura que aumenta a taxa de processamento de instruções, mas é transparente para o programador – o modelo de execução sequencial é preservado. O assembly não tem acesso direto ao pipeline. Erro: confundir paralelismo em nível de hardware com exposição ao software.

NÃO CAIA NESSA!

A alternativa A confunde compilador com interpretador. Muitos candidatos associam "tradução linha por linha" a compiladores, mas essa é a característica de interpretadores (como Python ou JavaScript). Compiladores (C, C++, Rust) traduzem o programa inteiro antes da execução e realizam otimizações complexas. Fique atento a essa troca.

PEGA ESSA DICA!

Para questões sobre abstração, lembre-se: SO e máquinas virtuais escondem complexidade, enquanto compiladores traduzem e otimizam. O pipelining e a hierarquia de memória são mecanismos de hardware transparentes ao software de aplicação.

Conclusão: Apenas a alternativa C está correta. Ela captura a essência do sistema operacional como gerenciador de recursos e fornecedor de abstrações.

Link permanente: /questoes/qg207149