Portál AbcLinuxu, 1. května 2025 12:39
setitimer()
. Předtím se ale musí nastavit reakce na signál (pro časovač reálného času) SIGALRM, který časovač generuje. Bližší informace - viz "man setitimer
".
Není to ale v žádném případě "realtime". Při nezatíženém systému závisí zpoždění na hodnotě HZ nastavené při kompilaci jádra, u současných jader (HZ=250) to dělá přes 4 ms (může to být i méně - pokud zrovna běží stejný proces -, ale počítat se musí s touto hodnotou). Při velké zátěži to ale může být i mnohem víc.
BUGS The current implementation of nanosleep() is based on the normal kernel timer mechanism, which has a resolution of 1/HZ s (i.e, 10 ms on Linux/i386 and 1 ms on Linux/Alpha). Therefore, nanosleep() pauses always for at least the specified time, however it can take up to 10 ms longer than specified until the process becomes runnable again. For the same reason, the value returned in case of a delivered signal in *rem is usually rounded to the next larger multiple of 1/HZ s.Přitom by nebyl problém nemít systémový časovač s pevnou periodou, ale vždy se v irq handleru podívat kdy je potřeba probudit další proces, a případně přeprogramovat časovač na kratší než obvyklou hodnotu. Linux saje :(
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.