Hlavní navigace

Vlákno názorů k článku Porovnání systémů Linux a FreeBSD (11) od peto2 - Dobry, dik za predosle reakcie Kedze toto je serial,...

  • Článek je starý, nové názory již nelze přidávat.
  • 8. 2. 2004 22:16

    peto2 (neregistrovaný)

    Dobry, dik za predosle reakcie
    Kedze toto je serial, ktory sa zaobera kernelovymi vecami, tak sa to pytam tu, lebo je tu dost velka sanca, ze mi niekto odpovie...
    Ako sa v linuxe dynamicky linkuje? Co robi pri linkovani kernel a co robi ld.so? Je to tak, ze kernel natiahne spustitelny subor a prip. kniznice (na ake miesto?) a potom sa linker stara o "linkovanie"?
    A ked sa aplikacia spusta druhy raz, musi sa to znova linkovat? Nebolo by lepsie, len nahrat spust. subor na spravne miesto, tak aby to sedelo s uz predtym zlinkovanou (tou istou) aplikaciou a namapovat to?
    Bol by som rad, keby mi to niekto vysvetlil, dost mi to neda spavat a na to, aby som sa vrtal v kerneli nemam ani cas a ani tak dobre neviem C.

  • 8. 2. 2004 23:50

    Mikuláš Patočka (neregistrovaný)

    Kvůli jednoduchosti kernel nemá žádnou podporu linkování. Linkování dělá kompletně program /lib/ld-linux.so.2. Kernel pouze namapuje ld-linux.so do paměti. Program a knihovny se linkují pomocí syscallu mmap. Dynamické knihovny musí být přeloženy jako speciální position-independent code (flags -fPIC u gcc), což způsobí, že kód bude fungovat bez ohledu na adresu, na které se nachází v paměti. Program být s tímto příznakem přeložen nemusí, protože je vždy na stejné adrese. Dynamické knihovny sice fungují i bez -fPIC, ale pak žerou paměť pro každý proces, který si je nalinkuje, a pomalu se zavádějí.

    ld-linux.so do paměti namapuje program i knihovny a do speciálních míst za program i knihovny umisťuje tabulky odkazů na funkce a (v případě knihoven) proměnné.

    Linkování může urychlit program prelink, který napsal Jakub Jelínek. Ten umožní, aby správce systému knihovny a programy "předlinkoval" --- vyrobí se hotové tabulky odkazů na funkce a proměnné ke každému programu a dynamické knihovně, při spouštění se nemusí vyhledávat symboly, a provede se pouze mmap těchto tabulek.

  • 9. 2. 2004 16:26

    peto2 (neregistrovaný)

    No, prelink je sice pekna vec, ale na KDE a pod. velke aplikacie to aj tak nefunguje (linkuju do libGL alebo co) a pri inych to nema moc velky efekt.