Просьба пояснить разницу между виртуальными и физическими адресами на следующем примере. Пожалуйста, объясните, какой адрес конкретно используется здесь и как использовать другой адрес в одном месте. Также, как можно различать два.Разница между виртуальным адресом и физическим адресом?
код:
if(fork()==0)
{
a=a+5;
printf("%d%d", a, &a);
}
else
{
a=a-5;
printf("%d%d", a, &a);
}
Какой адрес делает &a
см в обоих заявлениях?
За исключением комментария, что это физический адрес, я согласен с тем, что написано здесь. Только самые низкие значения ядра работают с физическими адресами. Весь другой код работает с виртуальными адресами. В частности, пользовательские программы в таких системах, как Unix, работают только с виртуальными адресами, а ядро управляет отображением с виртуальных на физические адреса, а MMU обрабатывает это сопоставление. По существу нет способа определить физический адрес, соответствующий виртуальному адресу из кода пользователя. –