看板 C_and_CPP 關於我們 聯絡資訊
根據 tinlans 大大的推文, 不同的行程的記憶體佈局大概是這樣 : <<----------------虛擬記憶體----------------->> 實體記憶體 ┌──┐ ┌─────┐ 0xFFFFFFFF │ │←──────┤ │ │ │ │ 系統 │ │ │ │ ( 1 G ) │ │ │←──┐ │ │ └──┘ │ └─────┘ 0xC0000000 │ │ Process1 Process2 Hard Disk │ ┌─────┐0xBFFFFFFF ┌─────┐0xBFFFFFFF ┌──┐ └─┤ │ │ │ │ │←─┐ │ 行程 │ │ 行程 │ │ │ │ │ ( 3 G ) │ ┌──┤ ( 3 G ) │ │ │←┐└──┤ │ │ │ │ └──┘ │ └─────┘0x00000000│ └─────┘0x00000000 └───────────────┘ 想請問一下, 如果像上面這種架構, 不同行程的虛擬記憶體對映是不 是更複雜了 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115 ※ 編輯: loveme00835 來自: 140.121.197.115 (07/09 22:24)
loveflames:你要做IPC? 07/09 22:26
loveme00835:只是感覺好奇而已, 因為虛擬記憶體位址相同, 不知道該 07/09 22:28
loveme00835:怎麼映射 07/09 22:28
clanguage:實際上是分頁交換而已吧 看你用多少 07/09 22:29
tinlans:kernel space 的 1G 是從後面推回來的。 07/09 22:42
tinlans:至於 share memory 做法很多,像是把 process 的 page 07/09 22:44
tinlans:對應到同一個 frame 上。 07/09 22:44
loveme00835:如果是從後面推過來, 0 不就算是行程獨有的嗎 ? 07/09 22:45
※ 編輯: loveme00835 來自: 140.121.197.115 (07/09 22:46) ※ 編輯: loveme00835 來自: 140.121.197.115 (07/09 22:50)
loveme00835:我笨了... 謝謝各位大大的指教, 又上了一課 :) 07/09 22:51
tinlans:從後面推回來又沒差。不過並不是所有 OS 都是 3G/1G, 07/09 22:55
tinlans:我記得 windows 是 2G/2G,所以板子上太多東西的時候可以 07/09 22:55
tinlans:最多啃掉 2G 的空間,讓你插 4G 只有 2G 能用。 07/09 22:55
loveme00835:原來如此~ 07/09 22:57
loveflames:windows預設是2G/2G,不過記得能調成3G/1G 07/09 23:08
tinlans:這問題丟 CSSE 板問或許會有更好的解答。畢竟我的主場 07/09 23:19
tinlans:並不在 Linux 和 Windows,而是在 FreeBSD。更細節的東西 07/09 23:19
tinlans:問我也沒用,我講的也未必準。 07/09 23:19