Это будет проблематично.Чтобы понять, почему вы должны понимать связь между физической и виртуальной памятью.
В любой современной операционной системе программы получат очень большое адресное пространство для себя, а оставшаяся часть адресного пространства используется дляСама ОС.Другие программы просто невидимы: нет адреса, по которому они найдены.Как это возможно?Просто: процессы используют виртуальные адреса.Виртуальный адрес не соответствует напрямую физической памяти.Вместо этого есть таблица преобразования адресов, управляемая ОС.Когда ваш процесс выполняется, таблица содержит только сопоставления для выделенной вам оперативной памяти.
Теперь это означает, что ОС решает, какая физическая память выделена вашей программе.Это может (и будет) меняться на рунтимке.Например, обмен осуществляется с использованием того же механизма.При выгрузке страница ОЗУ записывается на диск, а ее отображение удаляется из таблицы перевода.Когда вы пытаетесь использовать виртуальный адрес, ОС обнаруживает отсутствующее сопоставление, восстанавливает страницу с диска в ОЗУ и возвращает сопоставление.Маловероятно, что вы возвращаетесь на одну и ту же страницу физической памяти, но виртуальный адрес не меняется в течение всего процесса замены / замены.Таким образом, даже если вам случится выделить страницу с плохой памятью, вы не сможете ее сохранить.Программы не владеют оперативной памятью, они владеют виртуальным адресным пространством.
Теперь Linux действительно предлагает некоторые специфические функции ядра, которые выделяют память немного другим способом, но кажется, что вы хотите полностью обойти ядро.Вы можете найти гораздо более подробное описание в http://lwn.net/images/pdf/LDD3/ch08.pdf