OberonCore
https://forum.oberoncore.ru/

Файлы в памяти
https://forum.oberoncore.ru/viewtopic.php?f=47&t=5511
Страница 1 из 1

Автор:  Илья Ермаков [ Суббота, 03 Октябрь, 2015 19:46 ]
Заголовок сообщения:  Файлы в памяти

Коллеги, по просьбе Ивана Денисова выкладываю реализацию файлов в памяти.
Можно работать между несколькими ББ в одном адресном пространстве. Но защитные блокировки на совместный доступ надо организовывать отдельно.

Это кусок платформы "Ода" (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.

Вложения:
Oda-files.7z [16.53 КБ]
Скачиваний: 404

Автор:  Иван Денисов [ Суббота, 03 Октябрь, 2015 21:50 ]
Заголовок сообщения:  Re: Файлы в памяти

Спасибо, буду разбираться.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/