Re: [問題] 如何取得系統總記憶體的位置

看板C_and_CPP作者 (未定)時間11年前 (2014/11/02 18:30), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串2/2 (看更多)
已爬文 所以總結一下: 實體記憶體位置,還是由OS在分配控制, 而程式編譯器只能算是ask或取得虛擬addr,但未必是連續的! 這樣對嗎? 那萬一程式故意對記憶體request爆量, OS也會自動做pagefile或什麼的(也就是把硬碟當做快取記憶體來操), 這樣對嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.125.172 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414924251.A.0A9.html

11/03 18:31, , 1F
1.不一定連續 2.我試過,記憶體用量會達100%,然後會頓
11/03 18:31, 1F

11/03 22:22, , 2F
不確定你說「連續」的意思;paging本來多數的OS都會做,是實
11/03 22:22, 2F

11/03 22:25, , 3F
現虛擬記憶體的方式,但new或malloc內部還先有一層管理,然後
11/03 22:25, 3F

11/03 22:27, , 4F
才到OS;另外我對"實體"兩字老是想到MMU看到的physical位址
11/03 22:27, 4F

11/03 22:51, , 5F
應該這麼說: OS 負責把這些在實體上可能是零散的空間整理成
11/03 22:51, 5F

11/03 22:51, , 6F
虛擬位址空間中的「連續」位址
11/03 22:51, 6F

11/03 22:52, , 7F
至於這些實體空間到底是在記憶體的何處抑或是磁碟的何處
11/03 22:52, 7F

11/03 22:52, , 8F
都只要 OS 知道就好, 應用程式不需要處理這種細節
11/03 22:52, 8F

11/03 22:53, , 9F
new / malloc 則又是蓋在虛擬位址空間上的記憶體管理
11/03 22:53, 9F
文章代碼(AID): #1KLWVR2f (C_and_CPP)
文章代碼(AID): #1KLWVR2f (C_and_CPP)