So che i sistemi operativi facilitano la condivisione dei dati tra processi e inter-thread. Voglio conoscere i meccanismi utilizzati per facilitare tale condivisione. Ho letto di "pipe". Quali sono gli altri modi?
So che i sistemi operativi facilitano la condivisione dei dati tra processi e inter-thread. Voglio conoscere i meccanismi utilizzati per facilitare tale condivisione. Ho letto di "pipe". Quali sono gli altri modi?
I thread operano nello spazio di indirizzamento comune, quindi le strutture di dati in memoria possono essere condivise senza restrizioni (presupponendo, naturalmente, che sia stata implementata una sincronizzazione corretta). Si può passare un indirizzo di una struttura di dati in memoria a un altro thread in modo che il thread possa accedere a quella struttura di dati.
I processi, d'altra parte, operano in spazi di memoria separati, quindi usano uno dei diversi approcci:
localhost
). I dati devono essere serializzati e deserializzati, rendendo questo approccio meno pratico al crescere del volume di dati. Nota che non è esattamente condivisione , perché tutti i dati sono copiati in entrambe le direzioni. Coda messaggi è un'altra opzione. Un processo può scrivere sulla coda di una coda e un altro processo può leggere dalla testa di quella coda. Il vantaggio della coda dei messaggi è che supporta operazioni asincrone.
A seconda dell'ambito e del tipo di un'applicazione, se le applicazioni di riga di comando sono necessarie, è possibile utilizzare le pipe scrivendo e leggendo dalla console, se si sta scrivendo un'applicazione intranet o un'applicazione autonoma e i processi di accesso ai dati sono paralleli o attivi macchine diverse è possibile utilizzare un server di database.
Se ciò di cui hai bisogno non è complesso, puoi usare file o sistemi di database che sono parte integrante dell'applicazione come SQL lite , ma qui è necessario implementare la funzione di segnalazione in modo da non danneggiare i dati se entrambi i processi tentano di scrivere dati.
Leggi altre domande sui tag operating-systems data process thread