Очевидно, что у нас есть блок кода, подобный
int
main()
{
pid_t pid;
int y = 3;
if ( (pid = fork()) <0 )
return -1;;
if( pid == 0 ) /* child */
{
printf(" before: %d %p\n", y, &y );
y *= 10;
printf("after: %d %p\n", y, &y );
}
else /* father */
{
sleep(1);
printf("father: %d %p\n" , y , &y );
}
return 0;
}
Адрес печати одинаков для каждого printf (), и, как и в предыдущем посте по этой теме, можно предположить, что еговиртуальной памяти. Но моя путаница заключается в том, что это подразумевает, что каждый родитель и ребенок обладают отдельным физическим адресным пространством, и если да, то почему виртуальный адрес не может отличаться, так как в конечном итоге он будет отображаться в соответствующем физическом адресном пространстве MMU.1006 *