Co to jest tabela symboli?

Tablica symboli jest używana przez systemy komputerowe jako sposób centralizacji informacji i zmniejszania rozmiaru programów. Tabele te działają jak klucz do tajnego kodu; symbol lub ciąg jest umieszczany obok innej, na ogół znacznie większej, informacji. Kiedy program odczytuje symbol, który jest powiązany z tablicą symboli, program odwołuje się do tablicy i pobiera informacje, a nie symbol. Dzięki temu duże fragmenty informacji lub często powtarzające się struktury mogą mieć tylko jeden wpis, co zmniejsza ogólny rozmiar programu.

Koncepcja tablicy symboli jest bardzo prosta. Pojedyncza tabela zawiera szeroki zakres informacji wykorzystywanych przez program, każda z własnym wpisem i unikalnym powiązanym symbolem. Te informacje mogą być ciągami kodu, informacjami debugowania, lokalizacjami pamięci, dosłownie wszystkim, co program mógłby wykorzystać do działania. Zamiast umieszczać te informacje w programie, kod po prostu odwołuje się do tabeli za pomocą jej unikalnego symbolu.

Istnieją dwa miejsca, w których tablica symboli jest powszechna: w kompilacji kodu do programów oraz w łączeniu bibliotek używanych przez wiele programów. Gdy jest używana w programach, rzeczywista tabela jest zwykle wchłaniana do programu lub przekształcana w bibliotekę współdzieloną w momencie kompilacji. Niezwykłe jest pozostawianie tej listy oddzielnie, ponieważ zmiana listy może mieć ekstremalne konsekwencje dla programu. Nawet jeśli tabela jest przekształcana w tym procesie, nadal jest to ta sama podstawowa rzecz, jest po prostu dołączana wraz z innym kodem.

Kiedy tablica symboli jest używana w bibliotece łączącej, możliwości jej działania drastycznie się rozszerzają. Biblioteka łącząca to zbiór informacji, które z założenia są dostępne dla programu w dowolnym momencie. Biblioteki te są często współdzielone przez system operacyjny lub rodzinę powiązanych programów, które są tworzone przez tę samą firmę.

Każda z tych bibliotek jest wypełniona informacjami na określone tematy. Jedna biblioteka może zawierać szeroką gamę programów do rysowania ramek okna interfejsu użytkownika systemu operacyjnego, podczas gdy inna może zawierać informacje o tym, gdzie określona grupa programów przechowuje informacje w pamięci. Ponieważ biblioteka łącząca może zawierać taki losowy zestaw informacji, często dołączane są do nich tablice symboli.

Poprzez włączenie tablicy symboli do linkera, możliwe jest współdzielenie symboli w całej serii programów. Pozwala to wielu programom na dostęp do tych samych danych w dowolnym momencie. Jeśli duża liczba programów wymaga tych samych informacji, umieszczenie ich w tablicy symboli w bibliotece znacznie zmniejsza rozmiar całej grupy programów.