Linux.embarque : Désactivation Scheduler

Posté par seblux () le 16 mai 2007
0
Bonjour à tous,



Pour une application embarquée j'aurai besoin de pouvoir désactiver le Scheduler pendant un court instant, en mode User.



Est-ce possible de désactiver le Scheduler sous Linux ?

Si oui, quelle est la fonction qui me permettrai de le faire ?



Je vous remercie d'avance pour votre aide.



Sébastien.

> Lire le message (7 commentaires, moyenne: 1,7).  

Vous avez demandé le commentaire #836100.

C'est pour quoi faire ?

Posté par TheBreton () le 16/05/2007 à 11:28. (lien). Évalué à 2.

Il n'est pas prévue pour linux de fonctionner comme ca.
Quel est la raison de vouloir couper le scheduler ?
Si c'est pour absorber un pic de charge en temps de traitement et ameliorer un temps de reponse en desactivant les autres taches:
-Tu peut jouer avec la priorité d'execution de ta tache (le scheduleur te donneras plus la main que les autres taches)
-Tu peut envoyer un signal a tes taches pour quelle passe en sleep (si tu en as les sources) puis un autre pour les relancer
-(solutions beurk) Tu peut descendre la partie traitement (longue) dans un module kernel car dans l'espace kernel tu n'est pre-empté que par les [interruptions et thread kernel] mais par aucune tache user.

--
Merde, ca fait trois fois que je le coupe il est toujours trop court!
-(un stagiaire hardware qui devait connaitre le grand pere de Sylvain Sauvage ;-) )-

[ Répondre ]

  • [^]Re: C'est pour quoi faire ?

    Posté par seblux () le 21/05/2007 à 08:55. (lien). Évalué à 1.

    Merci à tous pour vos réponse (et si j'ai bien compris je suis un peu dans la m....)

    En fait le but est de porter un vieu code Assembleur sous Linux, ce code désactivait le scheduler pour le traitment de ressources critiques.
    A savoir, il n'y aurra normalement qu'un seul Processus successible d'acceder à ces données, mais plusieurs Threads dans ce processus qui pourraient éventuellement y acceder, et peut-être simultanément....
    Donc si j'ai bien suivi, pour éviter d'être interrompu par un autre Thread quand je veux acceder à ma ressource, je devrai passer par le mode Kernel lorsque j'accede à ces ressources ?
    Ainsi je ne serais pas interrompu par un autre Thread qui désire acceder à la même ressource au même moment....

    Ca tiens la route ?

    [ Répondre ]

    • [^]Re: C'est pour quoi faire ?

      Posté par Toto () le 24/05/2007 à 12:54. (lien). Évalué à 2.

      As tu regarder du coté des sémaphores ? Cela permet de creer des lock() sur des ressources, ce qui semble correspondre à ton besoin.

      [ Répondre ]

      [^]Re: C'est pour quoi faire ?

      Posté par Plinn () le 28/05/2007 à 12:36. (lien). Évalué à 1.

      Non, tu as simplement besoin de synchroniser tes threads et ta ressource critique.
      Regarde les sémaphores ou mutex.
      Tu peux parfaitement gérer ça en mode user sans un quelconque recourt au mode Kernel.

      [ Répondre ]

      • [^]Re: C'est pour quoi faire ?

        Posté par seblux () le 29/05/2007 à 08:42. (lien). Évalué à 1.

        J'avais également pensé à cette solution qui me simplifierai bien les choses, c'est sur.
        Merci à tous.

        [ Répondre ]