好的,运行同一个可执行文件的多个实例?

时间:2016-05-26 04:58:55

标签: linux operating-system

考虑一个名为makecookie的可执行文件(普通的旧串行/非并行程序)。我想同时运行它的两个实例(例如,通过打开两个终端),如下所示:

第一航站楼:

~/makecookie vanilla dataToRead.dat

第二终端:

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

第二个参数是配置字符串,第三个参数是要打开和读取的数据文件。结果将输出到终端上的stdout

这会导致同一个可执行文件同时执行。这有什么问题吗?为什么或为什么不呢?

1 个答案:

答案 0 :(得分:5)

运行同一可执行文件的多个实例不会导致任何问题。在操作系统的眼中,它们是两个不同的过程。每个实例都有自己的页表,文件描述符,堆栈,PID等,它们独立于所有其他实例。

但是当您在不同进程上访问相同资源时,您必须使用任何锁定策略来同步资源访问。例如,写入同一文件的两个实例将导致文件中的混乱,其中一个实例可能在另一个实例的数据中间写入。

从同一个文件读取的两个实例不会有问题,但是当一个写入和其他读取时,结果将是混乱的。注意:每个实例都有自己的读/写指针,它们在读/写时独立于其他实例。

当您使用文件dataToRead.dat纯粹用于阅读时,您不会遇到任何问题。

如果您已正确同步资源访问权限,则运行多个实例时没有问题。