On Fri, Nov 15, 2002 at 01:27:50PM +0100, Georges Mariano wrote: > OK, alors qu'est ce qui _est_ temps-r�el ?
Vaste question :-) Un syst�me temps-r�el "dur" (Hard real time) est un syst�me qui doit garantir un temps de r�ponse. S'il faut donner une commande � ton ABS toutes les 50ms, il faut garantir que la commande soit l�. En g�n�ral, ces syst�mes sont n�cessaires pour tout ce qui bouge. Le temps-r�el "mou" (Soft real time) suit la m�me id�e, mais rater une r�ponse n'est pas fatal (Suivant les syst�mes, "rater" ne veut pas dire la m�me chose: pour certains, on peut se permettre de "sauter" une sortie, pour d'autres on peut se permettre d'arriver en retard). Exemple du premier type: Tu d�codes du MPEG que tu affiches sur un �cran. Id�alement, tu veux donner 25 trames par secondes � l'�cran. Si tu rates une trame, il est acceptable de la sauter (et de r�peter la derni�re trame). Dans ce cas, arriver en retard ne sert � rien: l'�cran ne t'attend pas, donc pass� la limite de temps, on peut aussi bien laisser tomber le d�codage qu'on �tait en train de faire. Exemple du second type: Un syst�me de d�tection incendie doit faire sonner les sir�nes dans les 5s apr�s qu'un d�tecteur a detect� un feu. C'est la norme qui le dit. Mais si tu le fais apr�s 6s, le syst�me marche quane m�me, et est quand m�me utile (tu as une seconde de moins pour paniquer). (Bon, et tu rates la certification de ton mat�riel, mais c'est une autre histoire). Il y a bien entendu des combinaisons entre tout �a: des syst�mes o� certaines choses sont temps r�el "dur" mais d'autres non. D'o� l'inter�t de RTLinux ou RTAI: on fait le temps-r�el dur correctement (en dehors de Linux), et on utilise Linux pour le reste (stocker des choses sur disque, parler au r�seau etc). De fa�on g�nerale, les OS "normaux" (Linux, Windows etc) ne sont pas temps-r�el "dur"; on peut les utiliser pour du temps-r�el mou si on fait attention � avoir une charge processeur connue et deterministe (Et m�me comme �a, c'est pas id�al: quand tu fais un read() sur un fichier, tu ne sais pas combien de temps �a va prendre, et il n'y a pas de fa�on simple de dire "fait un read, mais laisse tomber si �a prend plus de 500ms". On peut le faire en fork-ant avant de faire le read, avec le deuxi�me process qui attend 500ms puis interrompt le processus qui fait le read... c'est un peu bord�lique et pas efficace.) . Pour faire du temps-r�el dur, il faut utiliser d'autres noyaux tels que VxWorks (sans doute le plus connu), eCos, RTLinux, Nucleus... En g�n�ral, ces OS ont un param�tre suppl�mentaire � leurs appels syst�mes: read( fd, buffer, size, timeout )... Voil� voil�. J'esp�re avoir �t� raisonnablement clair :-) /Y

