10

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

Мне просто интересно, есть ли какие-нибудь инструменты, которые позволили бы мне получить доступ к моему himem (Вы могли бы подумать, что мы уже обошли эту проблему).

5 ответов5

20

Если у вас есть процессор с расширением физического адреса (что вы, вероятно, делаете) и правильная ОС (например, не потребительская версия Windows, он использует PAE, но ограничен 4 ГБ), тогда память можно отобразить и использовать как обычно. В противном случае память просто не будет адресована, операционная система скажет вам, что у вас есть сколько угодно больших микросхем, но они просто не будут добавлены к объему памяти, к которому вы можете получить доступ.

1

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

1

Полагаю, технически, если бы операционная система была хорошо спроектирована, вы могли бы использовать более 4 ГБ. Нет причин думать, что ОС с возможностями виртуальной памяти не может использовать 32-битные виртуальные адреса с 64-битными реальными адресами.

1

Зависит от того, какую 32-битную ОС вы имеете в виду!

Конечно, в современных операционных системах вы можете подключить столько, сколько ваша материнская плата может взять без проблем (хотя вы, возможно, не сможете использовать все это), но это было не всегда так, по крайней мере с Windows:

Ошибка в Windows 95, 98, SE и ME возникает, если у вас установлено более 512 МБ памяти.

http://answers.google.com/answers/threadview/id/333688.html

0

Первое, что нужно понять, это то, что современные компьютерные системы используют виртуальную память. Вы можете иметь 32-битные виртуальные адреса для приложений, имея более 32-битные физические адреса.

Второе, что нужно понять, - это то, что физическое адресное пространство используется для различных целей, наиболее важными из которых являются основной оперативной памяти и периферийные устройства с отображением в памяти. В частности, видеокарты часто имеют большие области отображения памяти. В результате, если у вас есть только 4 ГБ доступного физического адресного пространства, вы можете получить значительно меньше, чем 4 ГБ оперативной памяти. Обычно используется около 3,5 ГБ, но я видел системы, где оно было всего 2,5 ГБ.

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

  1. Процессор должен поддерживать это.
  2. Чипсет должен его поддерживать.
  3. BIOS должен поддерживать это.
  4. ОС должна его поддерживать.

Процессоры поддерживают PAE целую вечность, это не проблема.

Многие старые чипсеты были ограничены 4 ГБ физического адресного пространства. Чипсеты IIRC Intel для ноутбуков получили поддержку более 4 ГБ адресного пространства с поколением Santa Rosa в 2007 году. Я не уверен насчет настольных чипсетов, но я ожидаю, что это было примерно в то же время. Чипсеты для рабочих станций и серверов, очевидно, получили поддержку гораздо раньше.

Afaict BIOS'ы в основном поддерживают его, если это делает чипсет. Не удивил бы меня, если бы были некоторые исключения.

ОС тернистая. Linux и Windows поддерживают PAE целую вечность. К сожалению, поскольку Windows XP с пакетом обновления 2 MS искусственно ограничил физическое адресное пространство до 4 ГБ. Они утверждают, что сделали это из-за глючных драйверов, циники заподозрили, что сделали это, чтобы заставить людей покупать серверные версии.

В Windows XP это встроено в ядро и в принципе не может быть отменено. Однако в более поздних версиях это можно обойти с некоторыми незначительными взломами ядра. Смотрите https://wj32.org/wp/ для деталей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .