Печать того же физического адреса в программе c - PullRequest
0 голосов
/ 13 марта 2011

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

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

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

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

Программа 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 разных логических адреса.Но (чтобы удовлетворить профессора колледжа) есть ли способ напечатать тот же физический адрес?Пожалуйста, помогите ..

1 Ответ

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