LINUX.ORG.RU

how to map two virtual addresses to one physical page in userspace?

 , virtual memory


0

1

Читаю статью «Virtual Memory Primitives for User Programs» by Appel and Li и хочу потестировать это в линуксе. В section 2 список функциональности, которая требуется от ОС для этого: trap, prot, unprot, map2. С trap все понятно — можно эмулировать page fault через mprotect и потом своим сигнал хэндлером снять протэкшн, обработать «page fault», поставить протэкшн. А как сделать map2? Может можно как-то сделать анонимный mmap чтобы он замапил одну и ту же страницу по разным адресам?


Может можно как-то сделать анонимный mmap чтобы он замапил одну и ту же страницу по разным адресам?

Анонимный mmap() - врядли, но есть вариант shm_open() + shm_unlink(), а затем использовать полученный дескриптор в mmap().

Sorcerer ★★★★★
()

nokachi

Один я читаю это как «покачи»?

anonymous
()
Ответ на: комментарий от Sorcerer

есть подозрение что в линуксе mmap не гарантирует маппинг виртуальных адресов на одну и ту же физическую страницу

nokachi
() автор топика

практика показала что shared memory решает проблему

nokachi
() автор топика
Ответ на: комментарий от nokachi

Нафига нужно «сделать анонимный mmap чтобы он замапил одну и ту же страницу по разным адресам»?

ttnl ★★★★★
()
Ответ на: комментарий от ttnl

чтобы эмулировать copy-on-write: по одному адресу память рид-онли и при попытке записи делается trap и сигнал хэндлер создает копию

nokachi
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.