Konsolidator dynamiczny

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Konsolidator dynamiczny, inaczej linker dynamiczny - to część systemu operacyjnego, która wywoływana jest w chwili uruchomienia programu i odpowiada za załadowanie do przestrzeni adresowej procesu niezbędnych dla niego bibliotek programistycznych, uzupełnienie wczytanego kodu o adresy funkcji bibliotecznych, które będą przez proces wykorzystywane, i rozpoczęcie wykonywania wczytanego kodu maszynowego od wskazanego przez programistę punktu.

Stosowany jest jako sposób zmniejszenia objętości programów wykonywalnych oraz zaoszczędzenia pamięci (przestrzeń adresowa z kopią biblioteki może być współdzielona przez wiele procesów). Wadą tego rozwiązania jest to, że zmniejsza się przenośność plików binarnych między platformami oraz wersjami bibliotek.

Systemy uniksowe[edytuj | edytuj kod]

W systemach uniksowych linker dynamiczny najczęściej występuje w postaci pliku o nazwie: ld.so (systemy typu BSD, Sun Solaris), ld-linux.so (Linux).

Linker dynamiczny bierze pod uwagę wartość zmiennych środowiskowych, takich jak: LD_LIBRARY_PATH, LD_PRELOAD, LD_AUDIT. Niektóre z tych zmiennych instruują linker o konieczności załadowania kodu bibliotek nieujętych w strukturach kontrolnych pliku wykonywalnego procesu. Inne mogą wskazywać niestandardowe położenie bibliotek w systemie plików systemu operacyjnego. Ze względów bezpieczeństwa większość zmiennych środowiskowych typu LD_ jest ignorowana lub specyficznie traktowana przy wykonywaniu programów w ustawionym bitem setuid lub setgid.

Zobacz też[edytuj | edytuj kod]