[問題] fork後 virtual_ addr & physical_addr

看板C_and_CPP (C/C++)作者時間16年前 (2010/02/01 22:01), 編輯推噓3(305)
留言8則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: 為什麼 fork 之後,所看到的 virtual address 是一樣的, 這是說,它們對應到的 phisical address 也應該是一樣的嗎? 但是跑出來的結果,告訴我 phisical address 應該是不同的!但是, 為什麼 virtual address 會一樣? 我想要知道 virtual address 為什麼一樣! 還是說,那個不是 virtual address 呢?! 不知有沒有人可以幫小弟解答! 希望得到的正確結果:child_x_addr != parent_x_addr 這個結果是我自己想的,或許不可能會這樣子! 開發平台: Linux) 有問題的code: #include <stdio.h> int main() { int x, pid; pid = fork(); if (pid==0) { x = 3; printf("child: x = %d, x_addr = %p\n", x, &x); } else { x = 5; printf("parent: x = %d, x_addr = %p\n", x, &x); } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.120.34.2

02/01 22:07, , 1F
就說了是virtual address了,當然是虛擬出來的位置
02/01 22:07, 1F

02/01 22:08, , 2F
如果virtual address一樣 physical address就要一樣
02/01 22:08, 2F

02/01 22:08, , 3F
那你說說 virtual address的意義何在...
02/01 22:08, 3F

02/01 22:23, , 4F
os : vmm
02/01 22:23, 4F

02/02 03:02, , 5F
這程式碼好眼熟@@
02/02 03:02, 5F

02/02 10:56, , 6F
請去找 OS 教科書...這和 C/C++ 沒有關係...
02/02 10:56, 6F

02/03 16:40, , 7F
把ia32 software developer's manual拿出來翻,
02/03 16:40, 7F

02/03 16:41, , 8F
看protected mode memory management那一章裡面的Paging
02/03 16:41, 8F
文章代碼(AID): #1BPjwfFM (C_and_CPP)
文章代碼(AID): #1BPjwfFM (C_and_CPP)