Enllaç

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca

Enllaçar (literalment "connexió"), [1] en informàtica , és el procés d'integració dels diferents mòduls als quals fa referència un programa (que poden ser subprogrames o biblioteques ), per crear una sola unitat executable. L’ enllaçador (o editor d’enllaços ) és un programa que fa la connexió entre el codi objecte , és a dir, la traducció del codi font al llenguatge de la màquina i les biblioteques d’idiomes necessàries per a l’execució del programa (API, interfície de programació d’aplicacions ).

En els mainframes d’ IBM com OS / 360, aquest programa s’anomena editor d’enllaços . En les variants Unix , el terme carregador també s'utilitza sovint com a sinònim d'enllaçador. A causa d'aquesta confusió terminològica entre processos en temps de compilació i en temps d' execució , aquesta entrada utilitzarà l' enllaçador per al primer i la càrrega per al segon.

Operació

Els codis d'objecte són parts d'un programa que conté tant codi de màquina com informació per a l'enllaçador. Aquesta informació consisteix principalment en definicions de símbols, que són de dos tipus:

  • Els símbols definits o exportats són símbols que representen aquelles funcions o variables que estan presents al mòdul (per tant, al codi objecte relatiu) i que estan disponibles per ser utilitzats per altres mòduls.
  • Els símbols no definits o importats representen funcions anomenades o variables a les quals es fa referència a l’objecte actual, però no es defineixen internament, sinó que es defineixen en altres mòduls.

La feina de l’enllaçador és resoldre enllaços a símbols no definits trobant quin altre mòdul els defineix; i després substituir cada marcador de posició per l'adreça real del símbol.

Un conjunt de mòduls de programari preparats per ser utilitzats per altres programes s’anomena “ biblioteca ”. Per tant, una biblioteca és un conjunt de mòduls (en forma de codis objecte) recollits en un únic fitxer contenidor. Els enllaçadors poden utilitzar els mòduls de programari continguts a les biblioteques. Alguns enllaçadors no inclouen tota la biblioteca al programa de sortida, sinó només les parts necessàries per fer referència a un altre codi objecte o altres biblioteques. Hi ha biblioteques per a diversos propòsits (exemples: interacció amb maquinari, càlcul matemàtic); normalment, les biblioteques més habituals s'utilitzen automàticament de manera implícita, mentre que les més especialitzades han de ser explícitament indicades pel programador .

L'enllaçador també s'encarrega de distribuir el programari (codi objecte) a l'espai d'adreces del programa. Això pot requerir el trasllat de codi d'una adreça base a una altra; es tracta d'una operació important perquè moure un segment de codi d'una adreça a una altra requereix que torneu a calcular i modificar totes les adreces que apunten a aquest codi. Atès que el compilador normalment no sap on (en quina adreça de memòria) residirà el codi relacionat amb un mòdul concret, el compilador assumeix una adreça fixa (per exemple, zero), que després s’ha de modificar quan tots els mòduls es combinen en una única codi executable. El desplaçament d'un segment de codi d'una adreça a una altra s'anomena "reubicació" i pot requerir el recàlcul de les adreces que s'utilitzen a les instruccions de salt absolut o a les instruccions per carregar o desar dades a la memòria.

El programa executable produït per l'enllaçador pot requerir una reubicació addicional quan el programa es carrega a la memòria (just abans que s'executi). Aquest pas no és necessari en equips que tinguin un sistema de memòria virtual ; en aquests ordinadors, cada programa té disponible el seu propi espai d'adreces privades. Als sistemes de memòria virtual tots els programes utilitzen la mateixa adreça base sense que hi hagi conflictes entre diferents programes

Enllaç dinàmic

Els sistemes operatius moderns ofereixen enllaços dinàmics , és a dir, la resolució dels símbols no definits s’ajorna fins que s’executa el programa . Això significa que l'executable conté símbols no definits i una llista d'objectes o biblioteques que poden proporcionar-ne la definició. El llançament del programa per executar carrega aquests objectes / biblioteques i estableix l'enllaç final.
Aquest mode d'execució ofereix dos avantatges:

  • Les biblioteques àmpliament utilitzades (com les del sistema estàndard) es poden emmagatzemar en una única ubicació i no duplicar-les a cada sol·licitud;
  • Si s'actualitza i es reemplaça una biblioteca de funcions, tots els programes que l'utilitzin es beneficiaran dinàmicament de l'actualització tan bon punt es tornin a executar. Per contra, els programes que incloguin aquestes funcions d’enllaços estàtics han de passar un nou passi d’editor / carregador d’enllaços.

Nota

  1. ^ Tot i que alguns textos i autors en italià han optat per traduir el terme, aquest últim és d'ús molt poc freqüent.

Bibliografia

  • David William Barron, muntadors i carregadors . 1972, Elsevier.
  • CW Fraser i DR Hanson, un enllaçador independent de la màquina . Pràctica i experiència de programari 12, 4 (abril de 1982).
  • IBM Corporation, Operating System 360, Editor de vinculació, Manual de lògica del programa , 1967 [1]
  • DW Jones, Llenguatge de muntatge com a codi objecte . Pràctica i experiència de programari 13, 8 (agost de 1983)
  • John R. Levine : Linkers and Loaders , Morgan-Kauffman, ISBN 1-55860-496-0
  • Leon Presser, John R. White: enllaçadors i carregadors . ACM Computing Surveys, volum 4, número 3, setembre de 1972, pp. 149–167 [2]
  • Norman Ramsey, Instruccions de trasllat de la màquina per Currying . (1996) [3] [ enllaç trencat ]
  • David Salomon, muntadors i carregadors . 1993 [4]

Articles relacionats

Enllaços externs

Control de l'autoritat LCCN (EN) sh99011681 · GND (DE) 4145562-9 · BNF (FR) cb16102823h (data)
Informàtica Portal de TI : accediu a les entrades de Viquipèdia relacionades amb TI