Сколько страниц памяти с ошибками можно использовать? - PullRequest
2 голосов
/ 25 декабря 2011
#include <unistd.h>
(size_t) sysconf(_SC_PAGESIZE);

sysconf (_SC_PAGESIZE) сообщает мне, что размер моей памяти составляет 4096 в моей операционной системе и процессоре. Сколько из 4096 байтов на странице памяти можно использовать для данных и сколько занимает служебная информация / метаданные?

У меня есть приложение, в котором я оптимизирую локальность кэша, упаковывая часто используемые указатели в один и тот же блок кэша, и мне нужно знать, пригодна ли вся страница памяти, или я перейду границы страницы памяти, заполнив всю страницу памяти .

1 Ответ

5 голосов
/ 25 декабря 2011

Нет метаданных. Можно использовать 4096 байт.
ОС хранит метаданные где-то, но на других страницах, что не должно вас беспокоить.

Возможность доступа к памяти не зависит от размера страницы. Если вы выделили 100 байт, вы можете получить доступ только к 100 байтам. Если вы выделили 4096, вы можете получить доступ к 4096.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...