Я знаю, что можно использовать файлы с отображением памяти, то есть реальные файлы на диске, которые прозрачно отображаются в память. Насколько я понимаю (я еще не использовал их), отображение происходит немедленно, файл частично считывается при первом доступе к памяти, а ОС начинает «кэшировать» весь файл в фоновом режиме.Возможно ли отображение памяти?
Теперь: Возможно ли несколько злоупотреблять этой концепцией и памятью еще одним блоком памяти? Предполагая, что ОС обеспечивает такое направление, можно создать вид compressed_malloc()
, который возвращает отображение из памяти в память. Память, возвращаемая вызывающему абоненту, представляет собой простой диапазон памяти, который прозрачно сжимается в памяти и также в конечном итоге сохраняется в памяти. Таким образом, для больших буферов возможно, что только часть его распаковывается «на лету» (при доступе), в то время как остальные блоки сохраняются в сжатом состоянии.
Эта концепция технически возможна в данный момент или - если она уже реализована (в программном обеспечении) - на что обратить внимание?
Обновление 1: Я более или менее ищу что-то технически достижимое без изменения самого ядра ОС или для которого требуется платформа виртуализации.
Обновление 2: Я надеюсь на то, что позволяет мне реализовать сжатие и связанную логику в моем собственном коде пользовательского пространства. Я бы просто использовал средства операционной системы для создания карт памяти.
Многие современные файловые системы поддерживают прозрачное сжатие (NTFS, ZFS, другие). Как это взаимодействует с отображением памяти, я не уверен, но это может быть то, что вы ищете. – zindorsky
Нет, я не хочу создавать файл. Ни в коем случае. Я хочу сохранить всю память памяти в памяти (отсюда и название) и освободить ее после использования. – Stefan