Является ли `open ()`, `mmap ()` или ни одна из них более фундаментальной функцией?

На самом деле Xms и Xmx определяют лимит размера кучи, но есть и другие области памяти: стек (Xss x количество потоков) + PermGen + CodeCahe (48 МБ на по умолчанию в Java 7) + Прямая память.

Как правило, они добавляют примерно 1/2 ГБ, если нет спецификаций.

0
11.08.2017, 09:08
2 ответа

Обратите внимание, что mmap(2)часто требует файловый дескриптор, обычно предоставляемый open(2); в этом смысле openявляется более фундаментальным. Также обратите внимание, что виртуальное адресное пространствонекоторого процессамодифицируется не только mmap, munmap, mprotect(2) , но и другими системными вызовами(включая execve(2); см. также shm_overview(7))

Кстати, ядро ​​Linux не 't не используетmmapили open, но предоставляет и реализует их (для программ уровня приложения пользовательского пространства).

Но ядро ​​Linuxуправляет кэшем страниц, который является более фундаментальным и связан с обоимисистемными вызовами. См. также LinuxAteMyRamи рассмотрите возможноиспользование madvise(2), posix_fadvise(2), readahead(2), чтобы дать подсказки подсистеме кэширования страниц.

различаются ли эти два системных вызова принципиально

Все системные вызовы (перечисленные в syscalls(2)...) различны.

См. такжеAdvanced Linux ProgrammingиОперационные системы: три простых шага(обе можно загрузить бесплатно).

5
28.01.2020, 02:14

Так как вы называете функции, мы предполагаем, что вы уже знаете, что вызов mmap()на для файла требуется fd, который обычно (но не всегда) создается с помощью open().

Если вы не используете O_DIRECT, в ядрах, подобных Linux, с «унифицированным буферным кешем», read()и write()работают с одним и тем же кешем страниц, который отображается в mmap(). Однако это игнорирует компромиссы производительности каждого метода, поэтому это не кажется очень полезным ответом.

Помимо получения книги, Google находит хорошее и краткое описание mmap и обычного ввода-вывода в сравнении с обычными операциями ввода-вывода. кеш страницы. В нем не упоминается производительность costдля mmap(), согласно цитате Линуса Торвальдса, которую вы, вероятно, уже видели.

2
28.01.2020, 02:14

Теги

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