O que exatamente é o tempo de compilação, o tempo de carregamento e o tempo de execução? [fechadas]

1

Dizem que Tempo de Compilação - Quando é conhecido em tempo de compilação onde o processo irá residir, o tempo de compilação é usado para gerar o código absoluto. Aqui não tenho certeza qual é o código absoluto?

Tempo de carregamento - Quando não é conhecido em tempo de compilação onde o processo residirá na memória, o compilador gera código re-localizável. O que é o código re-localizável?

Tempo de execução - Se o processo puder ser movido durante sua execução de um segmento de memória para outro, a vinculação deverá ser atrasada para ser executada em tempo de execução.

Se eu tiver um programa C simples, como o Hello World.c

Qual mecanismo o Linux geralmente usa a partir de três opções acima para alocar o processo para executar o programa hello world?

    
por i3wangyi 05.02.2014 / 04:29

1 resposta

3

Eu acho que esses conceitos são melhor descritos nesta referência, intitulada: Notas de aula dos sistemas operacionais Ceng 328 - Endereçamento .

trecho

  • Addresses may be represented in different ways during these steps.
    • Addresses in the source program are generally symbolic (such as $count$).
    • A compiler will typically bind these symbolic addresses to relocatable addresses (such as "14 bytes from the beginning of this module").
    • The linkage editor or loader will in turn bind the relocatable addresses to absolute addresses (such as 74014).
    • Each binding is a mapping from one address space to another.
    • Classically, the binding of instructions and data to memory addresses can be done at any step along the way:
      • Compile time. The compiler translates symbolic addresses to absolute addresses. If you know at compile time where the process will reside in memory, then absolute code can be generated (Static).
      • Load time. The compiler translates symbolic addresses to relative (relocatable) addresses. The loader translates these to absolute addresses. If it is not known at compile time where the process will reside in memory, then the compiler must generate relocatable code (Static).
      • Execution time. If the process can be moved during its execution from one memory segment to another, then binding must be delayed until run time. The absolute addresses are generated by hardware. Most general-purpose OSs use this method (Dynamic).
  • Static-new locations are determined before execution. Dynamic-new locations are determined during execution.

Outras leituras

Se você estiver interessado neste tópico, sugiro que leia as seguintes páginas da Wikipédia.

Um bom exemplo das diferenças entre tempos de ligação iniciais e atrasados é coberto aqui: Tempos de encadernação , bem como aqui neste artigo intitulado: Vinculação antecipada versus atrasada .

    
por 05.02.2014 / 05:18

Tags