Zadanie 11
W zmiennej formats
system Linux przechowuje listę formatów plików wykonywalnych. Każdy element
listy odpowiada jednemu formatowi i zawiera m.in. wskaźnik na funkcję sprawdzającą
,czy dany plik jest w tym formacie i ew. wczytującą go. Funkcja systemowa
do_execve() w celu rozpoznania
formatu próbuje funkcji z kolejnych elementów listy. Przeglądanie listy
odbywa się zarówno podczas ładowania programu jak i biblioteki.
-
Zastąp strukturę listy strukturą listy cyklicznej, pamiętającej ostatnio
ładowany format i od niego zaczynającej przeszukiwanie w kolejnym wywołaniu
funkcji do_execve();
-
Zastanów się, dlaczego struktura listy cyklicznej jest bardziej naturalna
i zwykle efektywniejsza. Zaprojektuj i wykonaj testy badające efektywność
twojego rozwiązania;
-
Jeśli masz inny pomysł na zmianę struktury formats,
możesz go zaimplementować zamiast punktu 1. Powinieneś wtedy uzasadnić,
dlaczego według ciebie jest on lepszy;
UWAGA: W punkcie 2 sugerujemy zliczanie wywołań funkcji do_execve()
oraz wywołań funkcji sprawdzających format pliku. Tych drugich powinno
być jak najmniej.
Autor: Marcin Mucha