連續的物理連續的物理連續的物理連續嗎?如果不是,那麼在物理上非連續的RAM塊中如何分配幾乎連續的內存和存儲器映射?一個詳細的答案表示讚賞。幾乎連續的物理連續的物理連續的
2
A
回答
1
不,它不必。虛擬內存的任何頁面都可以映射到任意的物理頁面。因此,您可以讓虛擬內存的相鄰頁面指向非相鄰的物理頁面。該映射由OS維護並由CPU的MMU單元使用。
2
簡短回答:您不必在意(除非您是內核/驅動程序開發人員)。這對你來說都是一樣的。
較長的答案:相反,虛擬連續的內存是通常不是物理連續(只有非常少量)。除巧合之外,或機器剛啓動後不久。然而,這不是必需的。
分配大量物理連續RAM的唯一方法是使用大頁面(因爲一頁內的內存需要連續)。然而,這是無用的努力,因爲你的過程沒有明顯的區別,你認爲它的連續內存是實際上是連續的,但是使用大頁面存在缺點。
通過物理上非連續的RAM進行內存映射的工作方式並不特別「特殊」。它遵循所有內存管理遵循的相同方法。
操作系統在「頁面」中劃分虛擬內存併爲您的進程創建頁表項。當您訪問某個位置的內存時,對應的頁面根本不存在,或者它存在並對應於實際的頁面,內存。
如果該頁面存在於RAM中,則完全沒有任何反應。。否則會產生故障,並運行一些操作系統代碼。如果結果表明該頁面根本不存在(或沒有正確的訪問權限),則您的進程將被分段錯誤終止。
否則,操作系統選擇一個未使用的任意頁面(或者將它認爲最不重要的一個換出),並將數據從磁盤加載到該頁面中。在內存映射的情況下,數據來自映射文件,否則它來自交換(並且對於全新分配的內存,複製零頁)。 OS然後將控制返回到您的過程。你永遠不知道這件事發生。
如果您訪問位於不同頁面的「連續」(或您認爲!)內存區域中的另一個位置,則會運行完全相同的過程。
在現實中,它是一個有點複雜,因爲一個頁面可能在RAM中存在,但不存在「正式」,是的要被回收或頁面等列表的一部分。但是這太複雜了。
相關問題
- 1. 連續的總理
- 2. 從3.4.x開始,動物園管理員的連續號碼是否連續?
- 3. 連續處理
- 4. 連續多處理
- 5. 計算連續的化合物回報
- 6. 圍繞點的連續物體旋轉
- 7. 連續發生的物品數量
- 8. malloc分配的內存不一定是物理連續的嗎?
- 9. *連續物理模擬* box2d/bullet3d的基本思想是什麼?
- 10. Python的 - 打開文件連續無物理打開每一個
- 11. 寫入從連續的物理存儲器
- 12. 連續物理引擎的碰撞檢測技術
- 13. 在用戶空間中使用物理上連續的頁面
- 14. 處理覆蓋物品上的快速連續拍打
- 15. 連續監測整個運行時間的物理設備斷開連接
- 16. popen處理持續連接
- 17. 連續的NSTextField
- 18. cocos2d-x 3.0內置物理連續碰撞(花栗鼠)
- 19. 動物園管理員重置連續編號
- 20. 連續
- 21. 連續
- 22. 連續
- 23. 連接不連續的骨架形狀和不連續的線
- 24. 發現連續幾天
- 25. awk substr連續幾次
- 26. 如何創建,連續和非連續幾天
- 27. VBA雙環連續和不連續
- 28. 與連續行的計算處理
- 29. 無法處理連續的SIGSEGV信號
- 30. 處理中的連續旋轉