Programas de computadores diretamente relacionados com serviços complementares do sistema operacional podem ser chamados de programas utilitários. Considerando os programas utilitários do sistema operacional, assinale a afirmativa INCORRETA.
- A)O debugger (depurador) é o utilitário que permite ao usuário acompanhar toda a execução de um programa, a fim de detectar erros na sua lógica de programação.
Certa: o debugger permite acompanhar a execução do programa e localizar falhas de lógica.
- B)O interpretador, durante a execução de um programa escrito em linguagem de alto nível, traduz cada instrução e a executa imediatamente. Ele é considerado um tradutor que não gera módulo-objeto.
Certa: o interpretador traduz e executa cada instrução na hora, sem gerar módulo-objeto.
- C)O loader (carregador) é o utilitário responsável por carregar na memória principal um programa para ser executado. O procedimento de carga varia com o código gerado pelo linker e, em função deste, o loader é classificado como do tipo absoluto ou relocável.
Certa: o loader carrega o programa na memória e pode ser absoluto ou relocável conforme a forma de endereçamento.
- D)O linker (editor de ligação) é o utilitário responsável por gerar, a partir de um ou mais módulos-objeto, um único programa executável. Suas funções básicas são resolver todas as referências simbólicas existentes entre os módulos e reservar memória para a execução do programa.
Certa: o linker reúne módulos-objeto, resolve referências simbólicas e produz o executável.
- E)Existem dois tipos distintos de tradutores que geram módulos-objeto: montador e compilador. O montador é o utilitário responsável por gerar, a partir de um programa escrito em uma linguagem de alto nível, um programa em linguagem de máquina não executável. O compilador é o utilitário responsável por traduzir um programa em linguagem de montagem em um programa-objeto não executável (módulo-objeto).
Errada: ela trocou as funções, pois o montador traduz assembly e o compilador traduz linguagem de alto nível.
Gabarito: E
Quando o assunto é software básico e utilitários do sistema operacional, a banca adora misturar as funções dos tradutores com as dos programas de apoio. Aqui, vale separar bem as peças do quebra-cabeça: debugger ajuda a depurar, interpretador executa instrução por instrução, loader carrega o programa na memória e linker faz a ligação entre módulos-objeto. O ponto central da questão está na alternativa E, porque ela inverte as funções de montador e compilador. Em teoria de sistemas, o montador traduz linguagem de montagem (assembly) para código-objeto ou executável, enquanto o compilador traduz linguagem de alto nível para código-objeto. Ou seja, a banca trocou as definições e colocou cada um no lugar do outro. Também é importante perceber que módulos-objeto não são, em regra, programas finais prontos para execução. Eles ainda precisam passar pelo linker e, em seguida, pelo loader para serem colocados na memória principal e executados. Essa é a sequência clássica cobrada em concursos, especialmente em Arquitetura de Computadores e Sistemas Operacionais. Se você guardar uma ideia simples, já ajuda muito: compilador pega linguagem de alto nível, montador pega assembly, linker junta, loader carrega. A questão fica errada porque a alternativa E embaralha justamente os dois primeiros tradutores. Em livros clássicos de Organização e Arquitetura de Computadores, essa distinção aparece de forma padronizada.