Почему использование SysV или общая память POSIX по сравнению с mmap ()?

В мое мнение StarUML является лучшим.

10
задан Bob 14 July 2009 в 04:55
поделиться

3 ответа

Если у вас есть отношения родитель / потомок, прекрасно использовать mmap.

sysv_shm - это исходная реализация Unix, которая позволяет связанным и несвязанным процессам совместно использовать память. posix_shm стандартизированная разделяемая память.

Если вы используете систему posix без mmap, вы должны использовать posix_shm. Если вы используете unix без posix_shm, вы должны использовать sysv_shm. Если вам нужно разделить память только с родительским / дочерним, вы должны использовать mmap, если он доступен.

9
ответ дан 4 December 2019 в 01:02
поделиться

shm в Linux обычно реализуется через файл / dev / shm , который получает mmap ped, поэтому производительность должна быть эквивалентной - - Я бы выбрал mmap (w / MAP_ANON и MAP_SHARED , как вы упомянули) для простоты, если я знаю, что переносимость не является проблемой, как вы говорите. для вас.

1
ответ дан 4 December 2019 в 01:02
поделиться

Если память не изменяет, единственная причина использовать SysV / POSIX вместо mmap - это переносимость. В частности, старые системы Unix не поддерживают MAP_ANON . Однако Solaris, Linux, BSD и OS X поддерживают , поэтому на практике нет особых причин не использовать mmap .

1
ответ дан 4 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: