將視覺和物理內存分成頁面。要檢查頁面是否有效,頁表項中有一個有效位。但是在一個頁面中,MMU如何知道地址是否有效?例如,屬於堆的一部分的頁面。並非該頁面的所有地址都是有效的,那麼MMU如何檢查addr以查看它是否有效?如何知道地址是否在頁面內有效
0
A
回答
0
頁面是MMU存儲有關信息的最小內存單位;這基本上是'頁面'的定義。因此,頁面內的所有地址都是同等有效的。如果頁面的一部分是你不打算訪問的東西(可能不在任何分配的對象之外),那不是MMU可以檢測到的東西。
0
邏輯內存分爲PAGES。物理內存分爲PAGE FRAMES。頁表:
- 識別哪些邏輯頁是進程的地址空間
- 在虛擬存儲器的情況下爲頁面
- 的映射以從物理頁的保護(或沒有映射的一部分的是被分頁出去)。
內存訪問的有效性取決於訪問類型,當前處理器模式和頁表狀態。
在邏輯上,當存儲器訪問發生的處理器:
- 符的地址轉換成邏輯頁和偏移到邏輯頁面(即取決於頁面大小)。
查找邏輯頁面的頁表條目。有可能沒有頁表項存在。在線性頁面表中,表格的大小可能受到限制。在多級頁面表中,頁面可能沒有嵌套表格。如果有相應的條目=>訪問衝突。
檢查頁表項是否指示有效頁面。這通常用一個有效的位來完成,但還有其他的方法。如果頁面無效=>訪問衝突。
檢查在當前處理器模式下頁面是否允許訪問類型(讀/寫/執行)。如果不是=>訪問衝突
檢查邏輯頁面是否映射到物理頁面框架(這通常是作爲步驟#3的一部分完成的)。如果不是=>頁面錯誤
「堆」只是內存。一個進程可以同時有多個堆。堆管理器將頁面映射到邏輯地址空間,然後管理這些頁面。堆甚至不需要駐留在連續的內存中。
儘管高級內存圖通常顯示「一堆」,但這些都是粗略的簡化。
相關問題
- 1. 如何知道電子郵件地址是否無效?
- 2. 如何知道會話是否有效
- 3. 如何知道文本是否有效
- 4. 是否有JavaScript函數如何知道首頁網址?
- 5. 如何知道我的內容是否佔用整個頁面?
- 6. Wordpress如何知道分頁是否有效?
- 7. 有誰知道如何計算有效地址
- 8. 如何知道藍牙設備是否與其地址在線?
- 9. 如何判斷虛擬內核地址是否有效?
- 10. 如何知道用戶是否在AD組中有效存在
- 11. 如何知道對象地址是否爲0x0?
- 12. Android:如何知道IP地址是Wifi IP地址?
- 13. 如何知道它是否是默認頁面或不是從主頁面
- 14. 如何知道一個IP地址是否在本地網絡,xcode
- 15. 函數返回後本地內存地址是否有效?
- 16. 如何知道TPNGObject是否有有效的頭文件?
- 17. IDataErrorInfo:如何知道所有屬性是否有效?
- 18. 對於HTML頁面,是否可以知道原始地點?
- 19. 如何使用addMarker()檢查地圖地址是否有效?
- 20. PHP:我如何知道是否有人來自美國的IP地址?
- 21. java中的ip地址是否有效
- 22. 主頁面需要知道ContentPlaceHolder是否未被當前內容頁面使用
- 23. 我如何知道粉絲頁面是否已被刪除?
- 24. 如何知道用戶是否關閉了該頁面?
- 25. 如何知道頁面是否真的完全加載?
- 26. 如何讓頁面知道瀏覽器是否已登錄?
- 27. 如何知道我的頁面是否被緩存?
- 28. 如何知道是否使用硒成功加載頁面?
- 29. 如何知道兩個URL是否導向同一頁面
- 30. 如何知道Facebook頁面的帖子是否爲廣告?