Я работал над пониманием того, как mmap () работает с файлами на диске, и в основном получаю его, но у меня все еще есть этот вопрос.
В ситуации с основным процессом, который разветвляетсякуча рабочих дочерних процессов и файл-база данных mmapped db, доступная только для чтения, имеет ли значение, если mmaps происходят в главном процессе перед вилками или в дочерних процессах?
Насколько я понимаю, если этопроисходит в главном процессе до разветвления, затем в таблице страниц памяти всем отображаемым страницам задается настройка для сбоя страницы при их чтении, запускающая ядро для загрузки страницы с диска (или из кеша страниц)), и после разветвления одно дочернее чтение страницы будет означать, что страница находится в mmap и готова для чтения другими детьми, не вызывая основной ошибки страницы.
Но если mmap происходит в дочерних процессах послеРазделяют ли другие работающие дети возможность делиться этими загруженными страницами - все ли они в действительности используютэто же базовый ммап?Или каждый рабочий ребенок должен вызывать ошибку страницы и загружать каждую страницу самостоятельно?