Next: Struktury danych
Up: Procesy - Algorytm exec()
Previous: Wprowadzenie
Wywołanie funkcji execve() to nic innego jak wywołanie
przerwania. Po wywołaniu przerwania, znajdujemy się już w trybie
jądra. Możemy wyróżnić 3 istotne fazy:
- Wykonuje się funkcja sys_execve() która przygotowuje środowisko
dla właściwej funkcji do_execve().
- Wywoływana jest funkcja do_execve(). Jej zadaniem jest
przygotowanie pliku do wykonania i znalezienie dla niego odpowiedniego
interpretera. Ten proces składa się też z trzech etapów:
- Przygotowania struktur danych opisujących program, który mamy
wykonać. Najważniejsza jest inicjalizacja struktury struct
linux_binprm bprm, która przechowuje istotne informacje dla
interpretera. Są to między innymi pierwsze 128 bajtów kodu, które
zawierają ``magiczne'' znaki identyfikujące format. Odpowiada za to
funkcja prepare_binprm().
- Przepisania zmiennych środowiskowych oraz parametrów wywołania do
wyżej opisanej struktury typu linux_binprm
- Z tak zainicjalizowaną strukturą typu linux_binprm jądro
przystępuje do poszukiwania interpretera formatu. Odpowiada za to
funkcja search_binary_handler()
- Wywoływana jest specyficzna dla danego formatu pliku wykonywalnego
funkcja typu load_binary(), która wykonuje rzeczywiste
załadowanie pliku, i usuwa pozostałości po starym programie.
Subsections
Michal Rutkowski
2001-12-19