К какому адресу в указателе относится - PullRequest
2 голосов
/ 08 августа 2010

Что означает адрес в указателе, местоположение реального адреса в основной памяти или виртуальный адрес. Это может быть настроено.

И если это относится к виртуальному адресу, должен ли диспетчер памяти преобразовывать этот адрес в реальный адрес при каждом обращении к нему

Ответы [ 5 ]

12 голосов
/ 08 августа 2010

Это зависит от вашей системы и ОС.

Для типичного приложения Windows / Linux пространство пользователя является адресом виртуальной памяти. Приложения пользовательского пространства не имеют доступа к памяти по физическим адресам - это одна из абстракций, которые ОС предоставляет каждому процессу.

MMU (блок управления памятью) выполняет этот перевод для каждого доступа к памяти, и ОС должна настроить отображение ядра для вашего процесса.

4 голосов
/ 08 августа 2010

Если ваша система использует виртуальную машину, то адрес является виртуальным, если нет, то это не так. Это не имеет ничего общего ни с C, ни с C ++.

1 голос
/ 08 августа 2010

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

1 голос
/ 08 августа 2010

В некоторых ОС вы взаимодействуете с реальными физическими адресами, например в старой MS-DOS / Apple] [ОС, которую вы можете просматривать непосредственно в реальной графической памяти.Однако это имело ограничение, что ваша программа застряла в определенном месте в памяти.В немного упрощенной современной ОС имеется диспетчер памяти, который обычно защищает приложение от реальной физической памяти, что позволяет ОС более эффективно обрабатывать несколько процессов и позволяет приложениям использовать виртуальную память.

1 голос
/ 08 августа 2010

Другими словами, как разработчик / программист, вам не нужно беспокоиться о том, является ли адрес виртуальным или реальным.Указатель отлично работает во всех случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...