-1

Я понял, что адреса, которыми мы занимаемся в программах пользовательского пространства, - это адреса виртуальной памяти, а не адреса физической памяти. Блок управления памятью отобразит эти виртуальные адреса в фактические физические адреса.Почему размер указателя меньше, чем адресный размер виртуальной памяти?

Но на 32-битной машине я заметил, что размер указателя в основном составляет 32 бита, но в то время как процесс фактически может занимать более 4 ГБ, т. Е. Виртуальное адресное пространство программы адресуется более чем на 32- бит (для программы с 8 ГБ виртуального адресного пространства виртуальная память адресована 33 битами). Поэтому я не могу использовать указатели (размер которых всего 32 бита) в моей программе для доступа к ячейкам памяти после 4 ГБ.

Так почему же размер указателя составляет всего 32 бита и почему не больше, чем на 32-битных машинах? Что определяет размер указателя?

+1

Просьба пояснить, как вы думаете, что адресное пространство памяти процесса может быть больше, чем физическое пространство памяти. – duffymo

+0

@duffymo представьте себе компьютер с 4 ГБ оперативной памяти и выполнив 64-битное приложение (64-битный курс курса) с использованием 8 ГБ: тогда вы будете использовать 64-битные адреса (указатели), хотя у вас есть только 4 ГБ RAM, но обилие виртуальной памяти – nabuchodonossor

+0

@shiva: Я думаю, что это не конкретный вопрос программирования, где пример sode поможет, поэтому SO - это не то место – nabuchodonossor

ответ

1

Ваша программа будет большую часть времени работать в виртуальной памяти (если вы не пишете ОС самостоятельно). То есть объем памяти, которую вы можете адресовать одновременно, всегда ограничен размером виртуальной памяти. Технически размер адреса привязан к размеру адресной шины базового оборудования, поскольку HW (т. Е. MMU, который фактически переводит эти адреса на адреса физической памяти) использует эти размеры.

Тем не менее, для вашего устройства есть возможность использовать больше физической памяти, чем 4 гигабайта на 32 бит. На x86 это было вызвано Physical Address Extension. При использовании PAE ваш компьютер может иметь более 4 гигабайт памяти, но ваша единственная программа может одновременно получить доступ к 4 гигабайтам одновременно (из-за ограничения размера 32-битного адреса).

Смежные вопросы