Есть приложение, которое берет 8гб памяти при помощи malloc. В этом блоке памяти создаются элементы динамического массива, однако не факт что за время всей своей работы приложение создаст весь массив, скорее всего этого не произойдет и только в худшем случае все 8 гб будут заняты. А так как известно что физически память выделяется только при обращении к областям которые выделил malloc то и реальный резидентный размер приложения будет не 8гб а в среднем 1 гб
Исходя из последнего можно на системе запустить 4 копии такого приложения или нет если в системе памяти 4+8гб(своп)? Судя по резидентным размерам да, однако если сложить размеры выделяемые программе то нет. Вопрос 1 - влезут 4 копии при резидентном размере 1 гб или нет?
Если да то как они выпадут если суммарный резидентный размер начнет превышать суммарный допустимый объем памяти (ведь прогам выделено по 8гб которые им не запрещено юзать и то что они юзают лишь 1/8 этого места статичтическая случайность), здесь я имею ввиду какой сигнал сгенерирует сислема или какие иные действия произведет ОС. Меня смущает то что если malloc ине память выделил то я гарантированно могу её использовать.
Если нет то правильноли я думаю что второй проге уже не дадут запуститься, в смысле повторное затребование mallocom 8гб когда 8гб уже выделено при суммарном допустимом 12гб уже невозможно? Тут меня смущает то что при таком подходе память просто тратиться в пустую размер виртуальной памяти и резидентный размер существенно разные вещи все же и в этом случае не совсем понятны причины того что реальная память (страница) выделяется при первом обращении.
Короче кто знает ПОЧЕМУ так или иначе поясните плиз (интересует Unix в общности и Linux, Free/OpenBSD в частности)