Что означает адрес памяти? - PullRequest
2 голосов
/ 18 января 2011

Представляет ли шестнадцатеричный адрес памяти позицию в памяти в целом?

например. 4 Гб оперативной памяти и есть адрес памяти. Указывает ли это на позицию (в байтах), с которой начинаются данные? например на 2,1 ГБ.

Как работает адрес памяти на жестком диске до загрузки данных в память?

Был ли когда-нибудь случай, когда части данных извлекаются из памяти, а другие данные - с диска? Как различаются локации?

Спасибо

Ответы [ 3 ]

3 голосов
/ 18 января 2011

Шестнадцатеричный адрес памяти (как, например, если бы вы указали значение указателя), указывает на местоположение в виртуальной памяти.

В 32-битной системе каждый процесс имеет 4 ГБ виртуальной памяти. Эта виртуальная память управляется процессором и операционной системой. Когда вы обращаетесь к расположению в виртуальной памяти, ЦП и операционная система определяют, где в системах отображается фактическая физическая память, это расположение отображается, и данные из нее извлекаются.

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

2 голосов
/ 18 января 2011

Современные операционные системы имеют виртуальную память .

Это означает, что адрес, который использует вашу программу для доступа к некоторому байту в памяти, является чисто «виртуальным», не существует.Операционная система сопоставляет его через специальные аппаратные контроллеры с real областями памяти, которые совершенно различны, и для данного адреса может вообще не быть физической памяти.Например, вы можете mmap () файл в (виртуальную) память, а доступ к байту по виртуальным адресам будет означать доступ к байту file .Точно так же, если некоторая страница памяти не использовалась в течение длительного времени, ОС может поменять страницу с физического ОЗУ на диск.В этом случае виртуальная память также не будет указывать на места физической памяти.

0 голосов
/ 18 января 2011

В большинстве случаев - да. Но некоторые процессоры используют 2 значения для вычисления реального адреса. Например Intel 8086. Hardisk - это единственное хранилище, которое имеет собственную систему хранения информации. Поэтому перед выполнением любой операции ЦП данные должны быть загружены в ОЗУ.

...