Будет ли несколько экземпляров исполняемого файла (созданного со статическими библиотеками) совместно использовать что-либо в оперативной памяти - PullRequest
2 голосов
/ 09 января 2010

Предположим, исполняемый файл foo.exe построен на основе статических библиотек, и 6 экземпляров этого файла foo.exe одновременно работают на компьютере.Поскольку весь код одинаков (часть только для чтения), за исключением части чтения-записи в ОЗУ, будет ли какой-либо обмен данными между этими 6 экземплярами в ОЗУ для повышения производительности?Вместо этого foo.exe использует общие библиотеки, хотя в 6 экземплярах только 1 экземпляр этих общих библиотек будет находиться в оперативной памяти.

1 Ответ

6 голосов
/ 09 января 2010

Зависит от ОС.

Для Linux и Solaris все экземпляры обязательно будут совместно использовать страницы памяти, в которых хранится код (или текст, как его правильно называют).

Они также могут делиться страницами данных, которые происходят из исполняемого файла (то есть для глобальных и статических данных). Что происходит, если эти страницы используются совместно с техникой, называемой копирование при записи или COW. Пока экземпляр не изменяет страницы данных, они будут совместно использоваться. Но как только экземпляр изменяет страницу данных, он получает свою собственную копию.

Я предполагаю, что современные версии Windows делают то же самое, но я точно не знаю.

...