Общая память

С помощью функций shmat() и mmap() файл можно напрямую разместить в памяти. Это позволяет избежать буферизации и вызова системных функций.

Некоторые области памяти в системе выделяются под сегменты общей памяти. При выполнении 32-разрядных приложений сегмент 14 освобождается под сегмент общей памяти. Всего в системе применяется 11 сегментов общей памяти без учета сегментов, содержащих данные и код общих библиотек. Этот метод применим к процессам с сегментами 3-12 и 14. Размер этих сегментов составляет 256 МБ. Приложения могут считывать или записывать файл путем чтения или записи сегмента. Таким образом, приложение может отказаться от системных вызовов чтения-записи, работая с указателями в этих сегментах.

Файлы и данные могут применяться несколькими процессами или нитями. При этом приложение должно синхронизировать доступ процессов или нитей к общим объектам. Как правило, общая память применяется приложениями баз данных, которые применяют базу данных в качестве большого кэша буферов базы данных.

Для общих сегментов памяти пространство подкачки выделяется аналогично личным сегментам процессов. Если стратегия отложенного выделения пространства подкачки выключена, то пространство подкачки применяется при обращении к страницам.