[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] Temps reel [Re: horloge a la bourre]



On Fri, Nov 15, 2002 at 02:08:28PM +0100, Olivier Rioland wrote:
> Selon moi, c'est plutôt au niveau du temps de réponse :

Pas mal, mais beaucoup trop vague.
 
> Prenons le cas où un processus A est en train d'être
> exécuter par la machine (une tâche de fond). Un événement
> extérieur intervient devant lancer un processus B. Alors
> il faut que le processus A cède la place au processus B en
> un temps maximum connu (généralement une centaine de
> micro-secondes, parfois moins) avec une tolérance minimum
> (ex : le temps d'attente est supérieur à 1 ms dans
> seulement 2% des cas). 

Non; si ton ABS fait un cycle toutes les 40us, le temps
d'attente ne doit jamais être supérieur à 40us. Si dans 2%
des cas (500 fois par secondes!) tu es à 1ms, il ne va pas
falloir longtemps pour que tu t'arrêtes dans un mur.

En fait, ton exemple est exactement l'opposé du temps réel:
dans tout système Linux, quand j'appuie sur ma souris, je
m'attend à ce que le click soit pris en compte dans les
50ms. Dans 5% des cas, ça peut prendre 500ms. Une fois par
mois, ça prend plusieurs seconde (pasque je suis en train de
swapper ou qqch dans le genre). Et dans le cas géneral, je
n'ai pas de limite supérieure de temps.

Donc, le "temps maximum" doit être effectivement connu, mais
nettement plus précisément que ça... et dans le cas de l'ABS
(ou du missile), le temps maximum doit être *garanti*.

(Incidemment, il n'y a pas de temps de réponse
"généralement" accepté à 100 micro-secondes: ça dépend
entièrement de ce que tu fais).

> Sous linux, ce temps est de l'ordre de 10 ms

Comment tu mesures?

La dernière fois que j'ai mesuré ça, j'avais un process qui
attendait un signal sur une entrée d'interruption; quand le
process se reveillait, il changeait l'état d'une sortie.
Entre l'activation de l'entrée et le changement de la
sortie, j'ai mesuré 100uS. Sur un strong-arm à 220MHz, donc
pas une bête de course.


> (correspondant à la fréquence moyenne d'arrivée d'infos de
> la part d'un utilisateur humain quand il tape au clavier
> très vite).

Quel rapport entre la vitesse de frappe et le temps de
réponse du système??!? Si je tape plus vite, il répond plus
vite? Je pense que tu confonds des choses qui n'ont rien à
voir, ou alors tu n'es pas clair.

> Des OS temps réel existent pour plateforme intel, comme
> par exemple QNX, mais ils sont chers. L'idée de proposer
> un système temps réel basé sur le noyau Linux est donc
> plutôt intéressante (je ne connais cependant pas de cas
> concrets où ça a été utilisé).

En général, pour faire du temps réel, il vaut mieux ne pas
utiliser une plateforme Intel (basé sur *86), car
l'architecture rend l'evaluation du temps de réponse presque
impossible (les instructions ne prennent pas toutes le même
temps d'execution; certaines peuvent durer des éternités
quand on commence à faire des rep; si je me souviens bien,
toutes les interruptions n'arrivent pas à la même vitesse
non plus).

Cela dit, eCos par exemple est gratuit, se trouve qq part
sur www.redhat.com (pas taper -- RedHat fait aussi de très
bonnes choses dans le domaine de l'embarqué, c'est juste
leur distribution qui n'est pas très bonne ;-) ).

/Y



Reply to: