1. Zapoznaj się z funkcjami obsługi timerów systemowych standardu POSIX XSI: getitimer, setitimer.

(a) Napisz program, który działa w nieskończonej pętli i okresowo generuje sygnały za pomocą timera ITIMER_REAL. Pobierz czas przed uruchomieniem timera oraz po otrzymaniu sygnału, za pomocą funkcji gettimeofday. Sformułuj wnioski na temat otrzymanych wyników.

(b) Napisz program zawierający minimalną (pustą funkcję), który będzie wielokrotnie wywoływał tę funkcję mierząc jej czas wykonania za pomocą timera ITIMER_VIRTUAL (wskazówka: wykorzystaj program napisany w poprzednim zadaniu). Porównaj uzyskane czasy wywołania funkcji i wyciągnij ogólny wniosek dotyczący narzutu czasowego na wywołanie funkcji w programie.

Następnie zmień wykorzystywany timer na ITIMER_REAL i powtórz serię eksperymentów, starając się napotkać sytuację, kiedy wywołanie funkcji zajmie jakiś wyjątkowo długi czas.

2. Zapoznaj się z funkcjami obsługi zegarów systemowych standardu POSIX TMR: clock_gettime, clock_settime, clock_getres.

(a) Napisz program podobnie jak poprzednio zawierający pustą funkcję, i zmierz czas jej wykonania za pomocą timera związanego z zegarem CLOCK_REALTIME.

(b) Napisz kolejny program do zbadania czasu wykonania pustej funkcji bezpośrednio za pomocą zegara CLOCK_REALTIME