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.
  1. 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();
  2. Zastanów się, dlaczego struktura listy cyklicznej jest bardziej naturalna i zwykle efektywniejsza. Zaprojektuj i wykonaj testy badające efektywnośœć twojego rozwiązania;
  3. 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