Mi a különbség a statikus és a dinamikus összekapcsolás között?


Legjobb válasz

Mielőtt továbblépne a különbségre, röviden áttekintheti az összekapcsolási folyamatot.

Miért linkelő?

Amikor C kódot (vagy bármely más nyelvet) ír, akkor azt .c formátumban tárolja.

#include

int main(){

printf("quora");

return 0;

}

Ez a program most átmegy azon fordítási szakaszon, amelyben a forráskódot konvertálják gépnyelvi utasításokká. Ezek az objektumfájlok .o vagy .obj formátumban vannak tárolva. Ha 2 külön fájlunk van, akkor 2 külön objekt fájlunk lesz. Ezek a fájlok csak a program fordításai, a programok futtatásához elő kell állítanunk egy futtatható fájlt, amelyet az operációs rendszer ténylegesen futtathat. Erre a célra hivatkozót használunk.

Most a linker egyetlen futtatható fájlt hoz létre sok objektumfájlból. Most a C programunkban a main () függvényt használtuk, de hol van annak meghatározása. A fordító hatóköre csak egy fájlra korlátozódik, így nem keresi azokat a hivatkozásokat, amelyeket esetleg más fájlokban deklaráltak és definiáltak.

A Linker több fájlban keres erre a „main ()” függvénydefinícióra és összeköti őket. Most a kérdésére térek.

Statikus és dinamikus összekapcsolás:

  1. In statikus összekapcsolás , az összes könyvtári modul átmásolásra kerül a végső futtatható képre. A program betöltésekor az operációs rendszer csak egyetlen fájlt helyez el a memóriában, amely tartalmazza mind a forráskódot, mind a hivatkozó könyvtárakat. Míg a dinamikus összekapcsolás esetén csak a külső vagy megosztott könyvtárak neve kerül a memóriába. A dinamikus összekapcsolás lehetővé teszi, hogy sok program használja a futtatható modul egy példányát.
  2. A statikus összekapcsolást a linkelők az összeállítás utolsó lépésében végzik, míg a dinamikus összekapcsolást az operációs rendszer futási időben végzi.
  3. Statikusan összekapcsolt fájlok több lemezt és memóriát fogyaszt, mivel az összes modul már össze van kapcsolva. De a dinamikus összekapcsolás esetén a referencia modulnak csak egy példányát tárolják, amelyet sok program használ, ezáltal megtakarítva a memóriát és a lemezterületet.
  4. A statikus összekapcsolás esetén, ha a külső forrásprogram megváltozik, akkor azokat újra össze kell állítani és újra össze kell kapcsolni. De dinamikus összekapcsolás esetén csak egyetlen modult kell frissíteni és újrafordítani.
  5. A statikusan összekapcsolt programok gyorsabbak, mint dinamikus megfelelőik.
  6. Mivel a statikusan összekapcsolt fájl minden csomagot és modult tartalmaz, kompatibilitási problémák nem merülnek fel. Míg a dinamikus összekapcsolás esetén, mivel a könyvtárfájlokat külön tárolják, kompatibilitási problémák adódhatnak (mondjuk, az egyik könyvtárfájlt a fordító új verziója fordítja). >
  7. A statikusan összekapcsolt programok mindig állandó betöltési időt vesznek igénybe, míg a dinamikusan összekapcsolt programoknál ez az idő változó.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük