Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2699 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Interruptions et temps réel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Interruptions et temps réel

n°1024800
Renal02
Posté le 25-03-2005 à 14:30:27  profilanswer
 

Bonjour!
 
Je travaille actuellement sur un projet C++ multi-thread en temps réel, et je voudrais savoir s'il existe une fonction C++ (ou C) ou une méthode permettant à une suite d'instructions de ne pas être interrompues par un autre thread ou par l'execution d'instructions dans un autre objet que celui qui ne doit pas être interrompu. Je me demande donc si il existe une fonction permettant de dedier le CPU à un objet pendant une courte période (de l'ordre de 500 ms maximum). Il faut savoir qu'à un instant donné il peut y avoir jusqu'à 50 threads en même temps. Pour le moment j'utilise des sections critiques, le problème est que celle ci peut être interrompue.
 
Merci d'avance pour votre réponse, j'espère avoir été assez claire.

mood
Publicité
Posté le 25-03-2005 à 14:30:27  profilanswer
 

n°1024878
cricri_
Posté le 25-03-2005 à 15:28:49  profilanswer
 

A ma connaissance ce n'est pas possible par soft, mais seulement par interruption hardware.
En gros il faudrait une carte qui "fasse" le temps réel si on peut dire de façon à ne donner à windows que le temps restant.

n°1025180
chrisbk
-
Posté le 25-03-2005 à 18:07:17  profilanswer
 

Renal02 a écrit :

Bonjour!
 
Je travaille actuellement sur un projet C++ multi-thread en temps réel, et je voudrais savoir s'il existe une fonction C++ (ou C) ou une méthode permettant à une suite d'instructions de ne pas être interrompues par un autre thread ou par l'execution d'instructions dans un autre objet que celui qui ne doit pas être interrompu. Je me demande donc si il existe une fonction permettant de dedier le CPU à un objet pendant une courte période (de l'ordre de 500 ms maximum). Il faut savoir qu'à un instant donné il peut y avoir jusqu'à 50 threads en même temps. Pour le moment j'utilise des sections critiques, le problème est que celle ci peut être interrompue.
 
Merci d'avance pour votre réponse, j'espère avoir été assez claire.


 
ptet en passant en priorité max, genre real time (sous win) ?


---------------
NP: HTTP Error 764 Stupid coder found
n°1025181
cricri_
Posté le 25-03-2005 à 18:08:17  profilanswer
 

Maintenant que j'y pense Il existe un RT pour win, fait par une filiale Microsoft, WinRiver il me semble ...

n°1026679
dreamkille​r
Posté le 27-03-2005 à 12:20:25  profilanswer
 

cricri_ a écrit :

Maintenant que j'y pense Il existe un RT pour win, fait par une filiale Microsoft, WinRiver il me semble ...


De toute facon windobe n'est pas temps reel apres faut te rabattre sur des solution s plus ou moin couteuse

n°1026697
slvn
Posté le 27-03-2005 à 12:51:22  profilanswer
 

suivant l'os sur lequel t'es y a peut etre une fonction qui fait ce que veux :/
 
sinon il s'agit simplement de desactiver les interruptions pendant ton traitement, comme ca t'es sur que ton programme a le cpu pour lui tout seul.
 
/slvn

n°1026712
cricri_
Posté le 27-03-2005 à 13:05:19  profilanswer
 

dreamkiller a écrit :

De toute facon windobe n'est pas temps reel apres faut te rabattre sur des solution s plus ou moin couteuse


Oui, mais avec ça windows n'est plus qu'une tache de ce RT ;)
Je n'étais pas dans le projet mais des collègues ont testé cette solution avec succès.

n°1026725
el muchach​o
Comfortably Numb
Posté le 27-03-2005 à 13:24:27  profilanswer
 

WindRiver, c'est l'OS temps réel Tornado, apparemment racheté par Microsoft (ils ont tellement d'argent qu'ils n'ont que ça à faire maintenant). Il est bien évident qu'une appli développée pour du TR sous cet OS ne sera vraisemblablement pas portable aisément sur du Windoze de base.

n°1026771
dreamkille​r
Posté le 27-03-2005 à 15:07:06  profilanswer
 

ouai et elle est a combien la licence de tornado?!? :o c'est pas donnée

n°1028056
Renal02
Posté le 29-03-2005 à 09:23:09  profilanswer
 

Merci pour vos réponses, mais en fait mon problème est, d'une part affecter le CPU au prg, mais d'autre part au sein de ce processus, affecter le CPU à l'execution d'instructions liés à un objet. Comme j'ai 16 objets et 5 threads par objet et que une courte partie du code doit être executée très rapidement (donc sans être interrompue), je me demande s'il n'existerait pas une methode permettant d'éviter tout types d'interruption (système, mais également le fait que le cpu passe naturellement d'un objet à l'autre, d'un thread à l'autre). Pour les interruptions systèmes j'ai appris à l'école qu'on peut les intercepter, pour l'autre...je ne sais absolument pas. Sinon je travaille effectivement sous Windows.

mood
Publicité
Posté le 29-03-2005 à 09:23:09  profilanswer
 

n°1028144
theshockwa​ve
I work at a firm named Koslow
Posté le 29-03-2005 à 11:33:05  profilanswer
 

y'a pas un mutex global sous windows, qui permette de bloquer les autres applis ? :o

n°1028189
Renal02
Posté le 29-03-2005 à 12:29:54  profilanswer
 

Citation :

y'a pas un mutex global sous windows, qui permette de bloquer les autres applis ?


A vrai dire je n'en ai aucune idée, mais mon plus gros problème se trouve à l'interieur même de mon appli : comment affecter pour une courte période le CPU à un bout de mon code. Comme j'ai plusieurs objets et plusieurs threads dans mon appli, pour qu'on ait l'impression que tout se passe en même temps, le cpu pase de l'un à l'autre naturellement, cela devient un pb si des instructions doivent être exécutées rapidement et que le fait d'executer un bout de code de chaque objet au court du temps ralenti l'ensemble.

n°1028213
theshockwa​ve
I work at a firm named Koslow
Posté le 29-03-2005 à 12:42:28  profilanswer
 

c'était pas une réponse sérieuse [:petrus75]

n°1028265
HelloWorld
Salut tout le monde!
Posté le 29-03-2005 à 13:32:12  profilanswer
 

Tu peux jouer sur la priorité de tes thread,  ou utiliser des fibres à la place des thread. Les fibres sont aux threads ce que les thread sont aux processus. C'est toi qui gère l'ordonancement des fibres. En augmentant la priorité de ton processus et de tes thread (+ configuration de l'OS), tu peux allonger le quantum de temps alloué avant préemption.
Tu peux controller que tes propres threads ne s'interrompent pas entre eux, mais tu ne peux pas bloquer les autres processus. C'est le pricipe même d'un OS multitâche pré-emptif. Comme on te l'a dit Windows n'est pas temps réel, donc tu n'auras pas de solution temps réel. Tu auras toujours un certain temps de latence, et aucune garantie de non pré-emption. Tu peux arriver à d'assez bon résultats à condition d'avoir une charge CPU faible (en gros que y'ai que ton appli qui tourne quoi). Si t'as doom 3 en tâche de fond...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Interruptions et temps réel

 

Sujets relatifs
JList insertion en temps réelle ...recherche tuto pour programmation Temps Réel
[Cache] Avec un temps de vie variableDéefinir le temps d'éxécution d'une boucle
temps reel en java[phpBB] probleme de temps
requête d'intervalle de temps, pb qd vient la fin du mois !Votre avis sur mon emploi du temps dynamique et sa navigation.
Plus de sujets relatifs à : Interruptions et temps réel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR