Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Comunicazione tra processi

    Salve,
    sto sviluppando del software per un progetto all'università,e mi son sorti dei dubbi che non riesco a colmare.
    Per effettuare una comunicazione uno-molti, quale struttura mi consigliereste? Penso che bisogni comunque fare molte comunicazioni uno-uno.. però in questo caso, se ho n processi, non credo vadano bene le pipe, vero? Non posso creare 2*n pipe (una per richieste e l'altra per risposta) vero? Non credo sia ottimale.. la memoria condivisa non credo sia una buona scelta. E credo che le socket non siano una buona scelta, anche se offrono un canale bidirezionale, perchè i processi operano sullo stesso host.
    Il problema generalizzato è che ho n e j processi che svolgono ruoli diversi, ma devono poter comunicare tra loro (uno a caso degli n deve poter comunicare con uno a caso dei j). Mi serve che mi consigliate quale metodo di comunicazione sia più adatto, all'implementazione poi ci penso io!

    Grazie tanto anticipatamente dell'aiuto!!

    Luca450Mhz
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

  2. #2
    Magari potresti studiare come funziona dbus

    E' vero che è un po' complesso (e credo sovradimensionato rispetto a quello che ti serve), ma potresti prendere spunto da alcune idee

    Ora parlo da profano: non è possibile creare solo una pipe in entrata e una in uscita? Gli altri processi apriranno quella d'entrata in scrittura solo nel momento in cui è necessario scrivere, e quella in uscita la terranno aperta read-only (se è possibile che più processi leggano un file contemporaneamente).

  3. #3
    Ciao,
    veramente dovrei usare delle strutture standard (pipe, memoria condivisa, pipe, quelle native del Linux insomma..)comunque posso vedere come funziona questo che mi hai suggerito tu. No solo due pipe non mi bastano, per il semplice motivo che ogni volta devo stabilire una comunicazione punto-punto tra 2 soli processi tra quelli in esecuzione. In quel modo andrei a scrivere su un canale comune, che tutti potrebbero leggere, non solo il processo interessato. In effetti il problema sta proprio nell'usare molte strutture per comunicare, ma non so quale sia meglio da usare..

    Grazie comunue della partecipazione!

    Luca450Mhz
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

  4. #4

    Re: Comunicazione tra processi

    Originariamente inviato da Luca450Mhz
    [...]
    Il problema generalizzato è che ho n e j processi che svolgono ruoli diversi, ma devono poter comunicare tra loro (uno a caso degli n deve poter comunicare con uno a caso dei j). Mi serve che mi consigliate quale metodo di comunicazione sia più adatto, all'implementazione poi ci penso io!
    Uhm, forse una mailbox condivisa, magari sfruttando una named pipe. Nella mailbox ogni processo piazza un messaggio nella forma (destinatario + corpo), aggiungendo magari il mittente
    se serve; tutti gli interessati si tengono in ascolto, e quando uno trova un messaggio per lui lo preleva e agisce
    di conseguenza. Potresti eventualmente usare una mailbox per
    gruppo di processi.
    Buttato li come viene viene, spero ti sia di qualche utilita`.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  5. #5
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249

    Re: Comunicazione tra processi

    Originariamente inviato da Luca450Mhz
    Salve,
    sto sviluppando del software per un progetto all'università,e mi son sorti dei dubbi che non riesco a colmare.
    Per effettuare una comunicazione uno-molti, quale struttura mi consigliereste? Penso che bisogni comunque fare molte comunicazioni uno-uno.. però in questo caso, se ho n processi, non credo vadano bene le pipe, vero? Non posso creare 2*n pipe (una per richieste e l'altra per risposta) vero? Non credo sia ottimale.. la memoria condivisa non credo sia una buona scelta. E credo che le socket non siano una buona scelta, anche se offrono un canale bidirezionale, perchè i processi operano sullo stesso host.
    Il problema generalizzato è che ho n e j processi che svolgono ruoli diversi, ma devono poter comunicare tra loro (uno a caso degli n deve poter comunicare con uno a caso dei j). Mi serve che mi consigliate quale metodo di comunicazione sia più adatto, all'implementazione poi ci penso io!

    Grazie tanto anticipatamente dell'aiuto!!

    Luca450Mhz
    se i processi condividono file allora usa le pipe altrimenti le socket !
    come funzionano questi processi ?
    I got the remedy

  6. #6
    Una mailbox..beh non è proprio quello che mi serve veramente.. named pipe? Non le ho mai sentite, e penso di non poterle usare dato che il professore non ce le ha spiegate! Ma in cosa si differenziano dalle pipe semplici?
    Allora devo simulare un sistema di taxi e di clienti. Quindi ci saranno n taxi e j clienti. Quando viene stabilito quale taxi deve andare a prendere un certo cliente, questi avranno bisogno di comunicare tra di loro. Quindi ognuno dovrebbe avere un metodo per comunicare, e quando serve devo stabilire una connessione punto-punto tra ogni coppia di processi, in quanto il tassista e il cliente devono scambiarsi informazioni.

    Spero ho chiarito un pò le idee!! Grazie comunque a tutti!

    Luca450Mhz
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

  7. #7
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    ci deve essere un server, altrimenti come fai a collegare un tassista con un cliente....

    cosa condividono un taxi con un cliente ?
    secondo me conviene usare le socket..
    I got the remedy

  8. #8
    C'è un altro processo che funge da server, che simula la centrale, che prende le chiamate dei clienti e trova il taxi libero. Dopo cio' il tassista e il cliente devono comunicare tra loro.

    Luca450Mhz
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

  9. #9
    Probabilmente devo usare un array di pipe. Qualcuno sa darmi qualche consiglio al riguardo? La funziona per creare una pipe vuole in input in vettore di due posizioni. Dato che me ne servono molte, ho cercato di creare una matrice n X 2. Se passo però alla funzione della pipe matrice[j] ad esempio, non funziona. Come posso fare per gestire un array di pipe? Sono costretto ad usare una lista dinamica? O c'è un altro metodo??

    Ah, ma una read su una pipe è sincrona o asincrona? Cioè rimane in wait finchè non c'è qualcosa da leggere o mi ridà quello che c'è nella pipe in quel preciso momento (anche valori nulli..??)?

    Grazie!

    Luca450Mhz
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.