X86_64長模式(64位)不需要分段選擇器。爲什麼分割在32位中是必要的,但在64位中是無用的? 謝謝,爲什麼x86-64長模式不需要分割?
2
A
回答
3
CPU在X86_64長模式下使用PAE(物理地址擴展)技術來控制內存。
因此段選擇器是不必要的。
我建議你閱讀這本pdf手冊AMD64 Architecture Programmer’s Manual Volume 2: System Programming
。
谷歌amd64 volume 2
,第一個結果是pdf手冊。
請參閱第5.3章Long-Mode Page Translation
,你就會明白。
2
當內存實際按段加載和卸載時,段選擇器很有用,當x86被首次開發時,這是一個選項。然而,現代操作系統全都使用分頁,後者在後來引入到x86中(儘管進行了一些折衷),但它的簡單性最終導致它取代了分段。
32位x86保留分段可用,而16位操作系統轉換到新處理器體系結構,但在64位x86設計期間,某些舊功能(包括分段)被刪除。操作系統教科書中通常描述的另一個功能,但實際上從未使用的功能是不同權限「環」的概念。通常情況下,有4個環(編號爲0-3),但實際上沒有人使用除0(內核)和3(用戶空間)以外的任何內容,因此x86-64刪除了環1和環2。但是,要添加對新管理程序相關的指令,x86-64引入了一個低於0的新環,稱爲-1。
分割使得難以檢測cache aliases的內存,所以支持它也會使x86-64芯片的設計更加複雜。
相關問題
- 1. 需要正則表達式模式分割;而不是用[]
- 2. 爲什麼我需要按列分組,而不需要分組?
- 3. 我爲什麼要進行分割?
- 4. 爲什麼super不需要分配?
- 5. 爲什麼IIS7需要很長時間
- 6. 爲什麼cufftPlanMany()需要太長時間?
- 7. XmlSerializer.Serialize需要很長時間...爲什麼?
- 8. 爲什麼我們需要長型?
- 9. 爲什麼VARCHAR需要長度指定?
- 10. 爲什麼此分句需要分號?
- 11. 爲什麼不需要document.getElementById?
- 12. 爲什麼我不需要
- 13. 爲什麼UITextview的交互部分需要長按?
- 14. JSON模式驗證 - 爲什麼不需要強制執行?
- 15. 需要12柱形式,分割成6
- 16. 爲什麼這種模式需要很長時間才能在java中匹配?
- 17. 分割錯誤:爲什麼?
- 18. 分割錯誤。爲什麼?
- 19. MVC模式:需要先創建什麼?
- 20. 爲什麼不分割優化?
- 21. 爲什麼我使用Perl的分割函數不分割?
- 22. 需要將#tags分割爲文本
- 23. 爲什麼需要
- 24. 爲什麼需要「{} \」?
- 25. 爲什麼需要新分支標誌?
- 26. 爲什麼Flurry的分析需要android.permission.ACCESS_NETWORK_STATE
- 27. 爲什麼.Net Socket.Disconnect需要兩分鐘?
- 28. 爲什麼在這裏需要分號?
- 29. 爲什麼Lucene QueryParser需要分析器
- 30. 需要與分割錯誤