Socket per Database
Luca Giuzzi
giuzzi a dmf.bs.unicatt.it
Ven 8 Dic 2000 22:04:29 UTC
> Domandina:
> C'è qualche relazione tra i socket UNIX e il sysV IPC? Visto che questi possono
> funzionare solo in locale (l'avete detto voi), sul mio sistema ce ne sono un
> sacco in uso da qualcosa in cui compare "X", so che X in locale cerca per
> default connessioni mediante IPC e io l'ho complilato nel kernel (era
> consigliato...) sembra una deduzione logica? Se è così questo è un grande passo
> da parte mia per capire come far funzionare la comunicazione interprocesso
> senza disturbare il TCP (che mi sta antipatico: non lascia spazio al suo
> fratellino UDP!)
>
Le IPC (Inter Process Communication) sono delle funzionalita' per sincronizzare
programmi diversi sulla stessa macchina [e per il passaggio di messaggi e
dati, non ultimo tramite l'uso di memoria condivisa (SHM.. attenzione
pero', questa e' anche POSIX, sebbene con una semantica un poco diversa) ]
Si tratta di un sistema alternativo (e diverso) per condividere dati fra
tasks differenti... per alcune cose e' equivalente usare socket AF_UNIX
o message queues IPC, per altre sicuramente IPC e' la decisione migliore
(memoria condivisa), infine in determinate situazioni (ad es. se si vuole
che il codice possa funzionare sia in locale che via rete, nel caso di
streams[*] di dati, oppure qualora
le applicazioni non siano state disegnate con QUEL tipo di condivisione
dati in mente originariamente) AF_UNIX e' sicuramente la decisione
migliore!
Una nota: lo stack IP non viene usato nel caso di sockets in locale...
quello si applica solamente ai casi AF_INET e AF_INET6. Se li' sopra
si fa girare TCP, UDP, IGMP o qualchecosa d'altro, questo dipende dalle
opzioni con cui il socket e' stato creato...
Nota 2:
lo so: linux non supporta (per decisione di Linus) gli STREAMS stile
SVR4... questo sarebbe un altro meccanismo di comunicazione, non
l'opzione SOCK_STREAM di socket()
Ciao,
lg
Maggiori informazioni sulla lista
Lug
|