Questão de Arquitetura de Computadores — Compilador — IADES 2024
Arquitetura de Computadores›Compilador
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.
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.
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.
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.
DO hardware dos computadores modernos implementa uma hierarquia de memória que é totalmente exposta ao software quando se programa diretamente em assembly.
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.