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

Répondre à