Печать того же физического адреса в программе c

Есть ли способ печатать в этих программах один и тот же физический адрес (при использовании концепции общей памяти), а не печатать разные логические адреса?

Причина, по которой я печатаю один и тот же физический адрес:...

/* Читать это необязательно, так как я предоставил много информации, которая не является основной */

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

Программа 1:

#include<sys/types.h>
#include<string.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<stdio.h>

main()
{
    key_t key;
    int shmid;
    char* addr1;
    key = ftok("/home/tamil/myc/pws.c",'T');
    shmid = shmget(key,128*1024,IPC_CREAT|SHM_R|SHM_W);

    addr1 = shmat(shmid,0,0);


    printf("\nIPC SHARED MEMORY");
    printf("\n SENDER ADDRESS");
    printf("\nTHE ADDRESS IS %p",addr1);
    printf("\nENTER THE MESSAGE:");
    scanf("%s",addr1);
    printf("\nMESSAGE STORED IN %p IS %s",addr1,addr1);
}

Программа 2:

#include<sys/types.h>
#include<string.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<stdio.h>

main()
{
    int shmid;
    char* addr1;
    key_t key;

    key = ftok("/home/tamil/myc/pws.c",'T');
    shmid = shmget(key,128*1024,SHM_R|SHM_W);

    addr1 = shmat(shmid,0,0);

    printf("\nIPC SHARED MEMORY");
    printf("\n SENDER ADDRESS");
    printf("\nTHE ADDRESSS IS %p",addr1);
    printf("\nMESSAGE STORED IN %p IS %s",addr1,addr1);
}

Выход:

tamil@ubuntu:~/myc$ cc shmget.c
tamil@ubuntu:~/myc$ ./a.out

IPC SHARED MEMORY
SENDER ADDRESS
THE ADDRESS IS 0xb786c000
ENTER THE MESSAGE:helloworld

MESSAGE STORED IN 0xb786c000 IS helloworld
tamil@ubuntu:~/myc$ cc shmget2.c
tamil@ubuntu:~/myc$ ./a.out

IPC SHARED MEMORY
SENDER ADDRESS
THE ADDRESSS IS 0xb7706000
MESSAGE STORED IN 0xb7706000 IS helloworld
tamil@ubuntu:~/myc$ 

Здесь эти программы печатают 2 разных логических адреса. Но (чтобы удовлетворить профессора колледжа) есть ли способ напечатать тот же физический адрес? Пожалуйста помоги..


person Muthu Ganapathy Nathan    schedule 13.03.2011    source источник
comment
В большинстве ОС пользовательские программы понятия не имеют, что такое физическая память :)   -  person Armen Tsirunyan    schedule 13.03.2011
comment
@Армен Цирунян: Сэр, так что никак. Я прав, сэр?   -  person Muthu Ganapathy Nathan    schedule 13.03.2011
comment
@Muthu: Да, сэр, да, вы :)   -  person Armen Tsirunyan    schedule 13.03.2011
comment
@Армен Цирунян: Сэр, я учусь у вас. Поэтому я обращаюсь к вам как к господину. Но почему ты называешь меня господином? :)---   -  person Muthu Ganapathy Nathan    schedule 13.03.2011
comment
@Muthu: Потому что сэр здесь слишком формален. Он шутил. :)   -  person cHao    schedule 13.03.2011
comment
@Muthu, сэр (правильное произношение), вы учитесь, но другие зарабатывают (зарабатывают баллы), так что это даже Стивен   -  person necromancer    schedule 14.03.2011


Ответы (1)


  • Скорее всего, ваши программы уже делают именно то, о чем просил вас профессор.
  • Вы совершенно не понимаете концепцию физических и виртуальных адресов. В любой операционной системе, использующей виртуальную память, обычное приложение (в отличие от самой ОС) не может вообще знать никаких физических адресов.
person Employed Russian    schedule 13.03.2011