Trabalho solicitado pela professora Celínia Cantalice na disciplina Introdução à Informática para obetenção de nota referente a AP2. Turma GTI/ADS - Noturno.
2. Todos os programas passam por quatro etapas de transformação desde o código-fonte
armazenado no computador até a etapa que este código será executado na máquina.
Basicamente o processo de tradução e execução de uma linguagem de alto nível começa com
um programa em linguagem de alto nível sendo compilado para um programa em assembly, e
após essa operação ele é montado, através de um montador, em um módulo objeto em
linguagem de máquina.
O próximo processo fica por conta do link-editor que combina vários módulos com as rotinas de
biblioteca para resolver todas as referências. Para finalizar, o Loader é encarregado de colocar
o código de máquina nos locais apropriados da memória, para ser executado pelo processador.
4. O compilador tem a finalidade de converter uma linguagem (código-fonte) de fácil
escrita e leitura para os programadores em uma linguagem (código-alvo ou objeto)
que possa ser executada pela máquina.
Em exemplo, um compilador basicamente transforma um programa “.java” ou “.c”
em um programa assembly que é a forma simbólica de como a máquina entende.
Código-fonte Compilador Código-objeto
5. Assim como o assembly é a interface com o software de nível superior, o montador
converte a instrução em assembly para o equivalente em linguagem de máquina.
A função do montador é transformar um programa em assembly em um arquivo
objeto, que é uma combinação de instruções de linguagem de máquina, dados e
informações necessárias para colocar instruções corretamente na memória.
Cada instrução no programa assembly será convertida em uma versão binária da
instrução.
6. O arquivo objeto normalmente contém seis partes distintas:
• O cabeçalho do arquivo objeto que contém o tamanho e a posição de outras partes do arquivo
objeto;
• O segmento de texto que possui o código na linguagem de máquina;
• O segmento de dados estáticos que contém os dados alocados por toda a vida do programa;
• As informações de relocação que identificam instruções e words de dados que dependem de
endereços absolutos quando o programa é carregado na memória;
• A tabela de símbolos que contém os rótulos restantes que não estão definidos, como as
referências externas;
• As informações de depuração que contém uma descrição resumida de como os módulos foram
compilados, para que o depurador possa associar as instruções de máquina aos arquivos fonte e
tornar as estruturas de dados legíveis.
7. A função do link-editor é juntar as rotinas que já foram montadas, como as rotinas de
biblioteca. Também é função do link-editor compilar e montar cada procedimento de
forma independente, de modo que uma mudança em uma linha só exija a compilação e a
montagem de um procedimento.
As três etapas realizadas por um link-editor são:
Colocar os módulos de código e dados simbolicamente na memória;
Determinar os endereços dos rótulos de dados e instruções;
Remendar as referências internas e externas.
8. O link-editor produz um arquivo executável que pode ser executado em um
computador. Normalmente esse arquivo possui o mesmo formato de um arquivo-
objeto, exceto que não contém referências não resolvidas.
Nota-se que é o Link-Editor quem faz realmente o arquivo executável final e não o
montador como muitos pensam.
9. Agora que o arquivo executável foi gerado, o sistema operacional lê esse arquivo
executável para a memória e o inicia. Abaixo segue um exemplo das etapas seguidas pelo
Carregador num sistema Unix e Linux:
Lê o cabeçalho do arquivo executável para determinar o tamanho dos segmentos de texto
e de dados;
Cria um espaço de endereçamento grande o suficiente para o texto e os dados;
Copia as instruções e os dados do arquivo executável para a memória;
Caso exista, copia os parâmetros do programa principal para a pilha;
Inicializa os registradores da máquina e define o stack pointer para o primeiro local livre;
Desvia para uma rotina de partida, que copia os parâmetros para os registradores de
argumentos e chama a rotina principal do programa. Quando a rotina principal retorna, a
rotina de partida termina o programa com uma chamada ao sistema exit.
10. Toda CPU trabalha em dois ciclos principais, o Ciclo de Busca e o Ciclo de Execução.
Assim que o computador é iniciado, a CPU entra no Ciclo de Busca, em seguida passa
para o Ciclo de Execução e depois volta para o Ciclo de Busca. Ela continua nesse
processo até que precise ser desligada, saindo do Ciclo de Execução para o estado final.
11. Toda vez que um computador é ligado é necessário que o computador seja carregado da
memória secundaria para a memória principal. Este processo, denominado ativação do sistema
(boot) , é realizado por um programa localizado em um local específico do disco (disco block),
sendo geralmente o primeiro bloco. Este procedimento de ativação varia em função do
equipamento, podendo ser realizado através de teclado, de um terminal , ou de chaves em um
painel.
Além da carga do Sistema Operacional, a ativação do sistema também consiste na
execução de arquivos de inicialização.
Na maioria dos sistemas existe o processo de desativação denominado Shutdown . Este
procedimento permite que as aplicações e componentes sejam desativados de maneira
ordenada, garantindo a integridade do sistema.
12. Organização e Projeto de Computadores. David Patterson, John
Hennessy. Elsevier, 2005.
Organização de Computadores. Tennenbaum. Addison Wesley,
2010.