Journal Communication inter-processes

Posté par  .
Étiquettes : aucune
0
30
mai
2003
Bon generalement quand je dois faire de la com inter-processus j'utilise du RMI en JAVA et du Corba pour les autres. J'ai meme utilise des objets COM/DCOM. Mais la j'ai pas la puissance machine pour jouer a ca. Quelqu'un connait de bons docs sur le sujet ?
Je cherche en fait a faire un systeme de pipe ameliore. Je ne peux pas utiliser les pipes "normaux" pour tout un tas de raison et je dois donc recoder mon propre systeme

Si quelqu'un connait , a deja plancher sur ce genre de choses ou peut me filer un coup de main il gagnera ma reconnaissance eternelle.

Kha
  • # Re: Communication inter-processes

    Posté par  . Évalué à 5.

    IPC sytème V ? (files de messages, segments de mémoire partagée, sémaphores ...)

    Sinon, les sockets. Ca roulaize bien les sockets.
    • [^] # Re: Communication inter-processes

      Posté par  . Évalué à 4.

      C'est un peu trop lent les sockets, et puis vu le nombre de process qui vont tourner en simultane je risque d'arriver a court de ports avant d'avoir compris ce qui se passe. Surtout que je compte me servir des sockets pour faire d'autres choses a cote. En fait tout ce qui m'interresse c'est la com sur une meme machine, si un message a besoin de sortir de la machine je prefere utiliser une interface.

      IPC systeme V est pas mal, mais pas trop flexible. Quand on veut faire du multicast ou du broadcast il faut des plombes aux mesages pour arriver. Je pensais plus a un systeme de memoire partagee, mais la aussi j'ai un peu de mal avec la gestion des buffers.

      Il va y avoir des centaines de processes qui dialoguent, respawnent se font shooter par d'autres processes etc... D'ou la necessite de faire mechament rapide sinon bonjour les timeout.

      Kha
      • [^] # Re: Communication inter-processes

        Posté par  . Évalué à 3.

        A court de ports ? Ca dépend comment tu gère ça.
        En plus, tu peux utiliser des sockets Unix.

        Sinon, pour la mémoire partagée, shm + sémaphores roxorent mais pas en utilisant les IPC sysV, paluches-toi tes sémaphores à la main, ça vaut mieux.
        Et man mmap
        • [^] # Re: Communication inter-processes

          Posté par  . Évalué à 3.

          Je suis justement en train de regarder les systemes de gestion de memoire partagee, mais je bloque un peu. Soit c'est le mastodonte : ACE et OpenMP soit c'est carrement crade (un process bloque une quantite fixe de memoire et puis on implemente un systeme de gestion de memoire virtuelle et un garbage collector si besoin est et on ecrit une bibliotehque d'appel a cette memoire virtuelle etc.).
          C'est clair qu'avec un morceau de memoire partage je suis heureux, mais comment le reserver de facon propre et rapide ? Le truc c'est que ca va a l'encontre de tout ce que fait un OS (process qui va ecrire dans la memoire reservee par un autre process). J'ai peur qu'il ne me faille chercher l'artillerie lourde.

          Au fait il n'y aura pas de semaphores, c'est du reseau de Petri colore complet, on en mangerait. Tu me dira je peux toujours faire un reseau avec un jeton d'une couleur et deux etats, mais ca risque de se voir.

          Kha
          • [^] # Re: Communication inter-processes

            Posté par  . Évalué à 2.

            <blockquote>C'est clair qu'avec un morceau de memoire partage je suis heureux, mais comment le reserver de facon propre et rapide ? Le truc c'est que ca va a l'encontre de tout ce que fait un OS </blockquote>
            Pas du tout. C'est des threads, c'est tout.

            => man mmap et man pthread*

            Accessoirement, OpenMP est pas fait _du_tout_ pour ça, AMHA.
            • [^] # Re: Communication inter-processes

              Posté par  . Évalué à 2.

              Pas du tout. C'est des threads, c'est tout.
              Si je pouvais me limiter a des threads je seras content et ca serait deja fini. Mais non il faut que ce soit vraiment entre des processus differents (N.B c'est une etude de faisabilite donc si ca passe pas tant pis.)

              Accessoirement, OpenMP est pas fait _du_tout_ pour ça, AMHA.

              On est bien d'accord, mais ca permet de partager la memoire assez facilement et avec une interface de controle. C'est un peu l'histoire du bazooka pour tuer une mouche... C'est bien pour ca que je ne compte pas m'en servir.

              Kha
              • [^] # Re: Communication inter-processes

                Posté par  . Évalué à 1.

                En plus, l'implémentation en dessous c'est souvent des threads ...

                Si tu utilises la mémoire partagée (avec mmap(), clone(), rfork() etc. suivant l'OS), tu es sur une idée des threads.
                Si tu utilises les sockets, moins rapide que la mémoire partagée (forcément), tu es dans une optique message-passing qui montre mieux la séparation entre processus. C'est juste un peu casse burnes.
                • [^] # Re: Communication inter-processes

                  Posté par  . Évalué à 1.

                  Le prob de la techno sockets c'est que pour faire passer un message a un groupe de process souvent tu te marre. J'ai essaye de reproduire le meccanisme de multicast IP, j'ai encore mal aux dents. Sans compter que dans l'architecture en place n'importe quel process peut avoir un truc a dire a un autre process (sinon c'est pas drole).

                  Un systeme de passage de signaux est obligatoire de toute facon (reseau de Petri oblige) mais j'aimerais le limiter le plus possible, sinon ca sera pas faisable. J'ai pense a une solution et creeant un device (un ramdrive en raw) mais ca me parait carrement bourrin, difficile a faire accepter, et je me sens pas vraiment de me lancer dans des hacks impossibles la tout de suite.

                  Mais ca se presente de plus en plus comme si les sockets etaient la seule solution a mon probleme. Tant pis il va falloir se resigner....

                  Kha
                  • [^] # Re: Communication inter-processes

                    Posté par  (site web personnel) . Évalué à 1.

                    Tu veux simuler un réseau de Petri par des processus ?

                    Quand même pas une place = un process ? si ?
                    Ou un regroupement de place (un (t/p)flot par exemple) = un process ?
                    • [^] # Re: Communication inter-processes

                      Posté par  . Évalué à 1.

                      J'avais jamais pense a visualiser le truc comme ca, mais je crois que je sais pourquoi :) Par contre si tu fais un truc du genre : 1 process = un jeton 1 ressource = une place Ca passe beaucoup mieux non ? Kha
    • [^] # Re: Communication inter-processes

      Posté par  . Évalué à 2.

      moi je suis pour les sockets aussi
      mais si tu as bcp de process, tu peux utiliser une sorte de master qui aurait le role d'un serveur irc en fait, en redirigeant les messages vers les bonnes personnes :)
      donc tu n'as qu'un seul port en LISTEN sur la machine, celui du serveur !
      vala ma ptite idee
      ++
      sam
  • # Re: Communication inter-processes

    Posté par  . Évalué à 2.

    SI c'est pour un SMA (System Multi Agents) tu peux p.e. regarder du coté de MadKit http://www.madkit.org/(...)

    Dam

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.