2014-10-15 3 views
3

Я знаю, что обычно в 32-разрядной машине размер указателей, используемых в обычных программах на C, составляет 32 бит. Как насчет системы x86 с PAE?Каков размер указателей в системе C на PAE?

+0

Вы говорите о коде приложения или коде ядра? –

+0

@DavidHeffernan код приложения –

+0

С точки зрения перспективы приложения все еще 32 бит. Все особенности PAE находятся на стороне ядра. –

ответ

1

PAE изменяет структуру таблиц страниц, чтобы позволить им обращаться к физической памяти более чем на 32 бита. Адреса виртуальной памяти остаются неизменными - указатели в приложениях пользовательского пространства по-прежнему составляют 32 бита.

Обратите внимание, что это означает, что 32-разрядные приложения могут использоваться без изменений в PAE-системах, но все еще могут использовать только 4 ГБ памяти.

4

Это все еще 32 бит.

PAE увеличивает размер адресов физической памяти, что позволяет операционной системе использовать более 4 ГБ оперативной памяти для запуска приложений. Для запуска приложения операционная система сопоставляет большие физические адреса с 32-разрядными виртуальными адресами. Это означает, что адресное пространство в каждом приложении по-прежнему ограничено 4 ГБ.

0

Вы можете получить доступ к памяти через окно (диапазон адресов). Каждый раз, когда вам нужно использовать что-либо за пределами этого диапазона, вы должны использовать системный вызов для отображения другого диапазона. Рассмотрите возможность использования нескольких куч, со смещением внутри окна (указатель) - тогда полный указатель будет идентификатором кучи и смещением (структурой) окна, всего 64 бита, каждый раз, когда вам придется выходить за пределы текущей кучи, вы должны переключите их, хотя.