Виртуальная память в физическую память

Я работаю с зоной доверия (ARM) и, в отличие от доступа к памяти в Linux, доверенный апплет не имеет доступа к сопоставлению виртуальной и физической памяти. Он имеет дело строго с физической памятью.

Как мне перевести с виртуальных на физические адреса?


person MarkP    schedule 24.09.2014    source источник
comment
Зачем нужно переводить виртуальное в физическое?   -  person osgx    schedule 25.09.2014
comment
Как говорится в исходном сообщении, код, работающий в зоне доверия, не имеет доступа к сопоставлению виртуальной и физической памяти. Когда вызывается зона доверия, ЦП прекращает обработку. Единственное, что разрешено запускать на ЦП, — это доверенный апплет. ОС хоста буквально остановлена. Таким образом, нет доступа к отображению.   -  person MarkP    schedule 25.09.2014
comment
Какое отображение? У каждой пользовательской программы есть свое отображение, а у недоверенного ядра — свое.   -  person osgx    schedule 25.09.2014
comment
В этом примере давайте используем /proc/self.   -  person MarkP    schedule 25.09.2014


Ответы (1)


Итак, насколько я понимаю, вы не знаете, какую область памяти может использовать ваше приложение, поскольку оно отделено от виртуального адресного пространства, установленного в ЦП?

На мой взгляд, у вас есть только два варианта:

  • Как-то сказать ОС, что под приложение зарезервирован раздел памяти (физический). Скажем, от 0xfff0 до 0xffff
  • Таблица страниц с отображением обычно находится в конце ядра в памяти. Попробуйте получить этот адрес, и вы можете поискать в нем свободное адресное пространство (блок памяти).
person Marcin Gorczyński    schedule 28.10.2014