0

異なる論理アドレスを印刷するのではなく、(共有メモリの概念を使用しながら) これらのプログラムで同じ物理アドレスを印刷する方法はありますか?

私が同じ住所を印刷する理由:...

/*核心に触れていない多くの情報を提供したため、これを読むのは任意です*/

私の研究室では、共有メモリの概念を介して物理メモリに文字列を保存するプログラムと、共有メモリにアクセスして同じ文字列を出力するプログラムの 2 つのプログラムがあります。

プログラム 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 つの異なる論理アドレスを出力しています。しかし、(大学教授を満足させるために)同じ住所を印刷する方法はありますか?助けてください..

4

1 に答える 1

2
  • おそらく、あなたのプログラムは、教授があなたに求めたことをすでに正確に実行しています。
  • 物理アドレスと仮想アドレスの概念を完全に理解していません。仮想メモリを使用するオペレーティング システムでは、(OS 自体ではなく) 通常のアプリケーションは物理アドレスをまったく認識できません。
于 2011-03-13T17:43:30.800 に答える