2016-05-26 30 views
5

Si consideri un eseguibile denominato makecookie (programma vecchio seriale/non parallelizzato semplice). Vorrei eseguire due istanze di esso contemporaneamente (aprendo due terminali, per esempio), come segue:Va bene eseguire più istanze dello stesso eseguibile?

primo terminale:

~/makecookie vanilla dataToRead.dat 

secondo terminale:

cd ~ 
mkdir secondJar 
ln -s ~/makecookie secondJar/ 
secondJar/makecookie chocolate dataToRead.dat 

Il secondo argomento è una stringa di configurazione e il terzo argomento è un file di dati da aprire e leggere. Il risultato verrà emesso a stdout sul terminale.

Ciò causa l'esecuzione dello stesso eseguibile allo stesso tempo. Ci saranno problemi con questo? Perché o perché no?

risposta

4

L'esecuzione di più istanze di uno stesso file eseguibile non causa alcun problema. Agli occhi del sistema operativo sono due processi diversi. Ogni istanza ha le proprie tabelle di pagina, descrittori di file, stack, PID ecc., Che sono indipendenti da tutte le altre istanze.

Tuttavia, quando si accede a una stessa risorsa su processi diversi, è necessario sincronizzare l'accesso alla risorsa utilizzando una delle strategie di blocco. Ad esempio, due istanze che scrivono su uno stesso file risulteranno nel clutter nel file in cui un'istanza potrebbe scrivere nel mezzo dei dati di un'altra istanza.

Due istanze che leggono da uno stesso file non costituiranno un problema, ma quando uno scrive e legge il risultato sarà disordinato. Nota: ogni istanza avrà il proprio puntatore di lettura/scrittura dove stanno leggendo/scrivendo indipendentemente da altre istanze.

Poiché si utilizza il file dataToRead.dat esclusivamente per la lettura, non si verificheranno problemi.

In generale non vi è alcun problema nell'esecuzione di più istanze se è stato sincronizzato correttamente l'accesso alla risorsa.