Коллеги, по просьбе Ивана Денисова выкладываю реализацию файлов в памяти.
Можно работать между несколькими ББ в одном адресном пространстве. Но защитные блокировки на совместный доступ надо организовывать отдельно.
Это кусок платформы "Ода" (2009 г.).
Там получается несколько связанных модулей:
Oda_sysTypes - некоторые базовые типы
Oda_sysInfo - информация об ОС
Oda_sysFiles (и автоматически подгружаемые реализации Oda_sysLinFiles, Oda_sysWinFiles) - расширения Files (Truncate; процедуры позиционирования и длины с LONGINT, правда, это чисто интерфейс, реализации для файлов > 2Гб нет)
Oda_sysGlobalHeap (и реализации Oda_sysLinGlobalHeap, Oda_sysWinGlobalHeap) - системная куча процесса
Oda_sysPageArrays - массивы из страниц над GlobalHeap
Oda_sysPageFiles - абстракция страничного файла (т.е. файла, в который можно добавлять/изымать страницы)
Oda_sysMem - некоторые средства работы с памятью
Oda_sysMemFiles - собственно, "виновник торжества" - файлы в памяти.
Кое-на-что есть кое-какая документация
Простой способ использования: Oda_sysFiles.memBufDir.New(размерБлока)
Полный способ - в документации к модулю MemFiles (сначала создать PageArray, потом открыть на его основе файл).
ПРи работе из разных ББ PageArray создается одним из них, а потом Attach-ится к имеющемуся базовому адресу в памяти (т.е. получается, что над одной структурой открыты два объекта PageArray в разных ББ). Напоминаю, что синхронизация не встроена в PageArray.