Используете отображение памяти или операцию разблокированного потока? - PullRequest
1 голос
/ 27 сентября 2011

Я работаю над реализацией FUSE для FAT32 под Linux (я знаю, что это уже доступно в ядре Linux, но это школьное задание).Файловая система FAT32 создается с помощью команды mkfs.msdos, которую я позже отобразлю в памяти с помощью posix_madvise, или использую разблокированный поток с помощью posix_fadvise.

Я не уверен, что мне следует основыватья имею в виду, какие плюсы и минусы у каждого метода (с точки зрения производительности, использования памяти и т. д.).Я видел несколько примеров, которые объединяют использование madvise с mmap, но не было предоставлено никакой информации о том, следует ли использовать fadvise с mmap или, для начала, разницу междуfadvise / madvise и реализации POSIX posix_fadvise / posix_madvise.

Любая точка в правильном направлении будет принята с благодарностью.

1 Ответ

0 голосов
/ 28 сентября 2011

Если вы не хотите ограничивать себя файловыми системами ~ 2,5 ГБ или не требуете 64-битной машины, вы можете выбрать mmap и динамически управлять тем, какая часть файловой системы вы сохраняете, или использовать обычные операции чтения / записи. Я бы, наверное, пошел за последним. mmap переоценивается как оптимизация производительности и имеет недостатки, такие как заполнение вашего виртуального адресного пространства, поэтому я склонен использовать mmap только тогда, когда вам действительно нужно рассматривать файл как память - например, хранить синхронизацию с общим процессом объекты, исполняемый код или большие данные, которые вы хотите передать в API, который принимает только данные в памяти (например, qsort).

...