2. CRIAÇÃO DE PROGRAMAS
Os programas são criados a partir de arquivos texto,
que contêm um roteiro estruturado de passos e ações a
serem executadas pelo programa que se deseja, ou
seja, estes arquivos texto são uma representação dos
algoritmos que se desejam programar.
Estes passos e ações estão descritos dentro do arquivo
texto através de uma linguagem de programação e por
isso são usualmente chamados de arquivo fonte do
programa (resumidamente arquivo fonte ou fonte).
As linguagens de programação utilizadas podem ser de
alto, médio ou baixo nível, mas qualquer que seja a
linguagem, seu tipo e a forma de estruturação do
programa, o arquivo fonte continua a ser simplesmente
um texto, análogo à uma redação, sujeito à regras de
sintaxe e de contexto.
3. Da mesma forma que os computadores não
entendem a nossa linguagem, ou seja a linguagem
que naturalmente utilizamos para nossa
comunicação, estas máquina tão pouco entendem
as linguagens de programação diretamente.
Existem entidades especiais responsáveis pela
transformação do arquivo fonte do programa em
uma forma passível de execução pelo computador.
Estas entidades estão ilustradas na Figura 4.7.
5. O compilador (compiler) é um programa especial
que traduz o arquivo fonte em um arquivo binário
que contêm instruções, dados e endereços
(representados binariamente) que permitem
executar as ações necessárias através das
instruções em linguagem de máquina do
processador existente no computador em questão.
Os arquivos binários produzidos pelo compilador
são os arquivos objeto ou resumidamente objeto.
Note que cada compilador é apropriado para uma
única linguagem de programação.
6. O ligador (linker), quando necessário, apenas
encadeia dois ou mais arquivos objeto sob a forma
de um único arquivo de programa executável ou
arquivo executável. O arquivo executável é aquele
que pode ser transferido para a memória do
computador possibilitando a execução do
programa.
Assim como os compiladores, o ligador também é
uma entidade deste processo de geração de
programas e também está sujeito a operar com
arquivos objeto produzidos apenas por
determinados compiladores.
Devemos ressaltar que até agora os arquivos fonte,
objeto e executável constituem arquivos, ou seja,
estão armazenados nas estruturas de memória
secundária (unidades de disco rígido, discos
flexíveis, fitas, cartuchos ou discos ópticos).
7. Existe uma outra entidade especial, chamada
carregador (loader), que é parte integrante do
sistema operacional, responsável por transportar
os arquivos de programa executável da memória
secundária para a memória principal, onde se dará
a execução do programa carregado.
Os carregadores constituem uma parte do sistema
operacional porque a colocação de programas na
memória e a execução dos mesmos são funções
deste, responsável por controlar eficientemente as
estruturas de memória primária, de
armazenamento secundário e o processamento do
sistema computacional.
8. Após o transporte do arquivo executável para a
memória principal é possível iniciar sua execução, onde
ele mesmo se transforma numa imagem executável,
que representa a expansão do código de programa
contido no arquivo executável em código executável,
áreas de memória reservadas para variáveis do
programa, pilha retorno e área extra para alocação
dinâmica por parte do programa.
A bem da verdade, o sistema operacional, antes da
carga do módulo de código, deve conhecer de antemão
seu tamanho total e a quantidade mínima de memória
extra necessária.
Tais informações residem geralmente num cabeçalho
(header) localizado no início do arquivo de programa
executável, que não é copiado para memória, mas
apenas lido pelo sistema operacional.