當計算機啓動時加載操作系統時,操作系統如何知道硬件信息,是否有一些io指令或引導程序從BIOS中獲取信息。操作系統如何知道物理內存的真實大小?
6
A
回答
9
主板固件(也稱爲BIOS,ACPI接口或EFI)允許操作系統找出系統中RAM和ROM的物理映射。
例如,這是一個引導Linux的輸出:
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 0000000000098c00 (usable)
[ 0.000000] BIOS-e820: 0000000000098c00 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 00000000bfea0000 (usable)
[ 0.000000] BIOS-e820: 00000000bfeae000 - 00000000bfeb0000 type 9
[ 0.000000] BIOS-e820: 00000000bfeb0000 - 00000000bfec0000 (ACPI data)
[ 0.000000] BIOS-e820: 00000000bfec0000 - 00000000bfef0000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000bfef0000 - 00000000c0000000 (reserved)
[ 0.000000] BIOS-e820: 00000000ffc00000 - 0000000100000000 (reserved)
[ 0.000000] BIOS-e820: 0000000100000000 - 0000000c40000000 (usable)
3
5
賦予OS從基於BIOS的系統啓動的操作系統使用INT 0x15,AX = 0xE820查詢Query System Address Map函數。
基於UEFI的操作系統通常會使用GetMemoryMap()接口獲取物理內存映射。
相關問題
- 1. 如何增加在Windows 7 32位操作系統的物理內存大小
- 2. 操作系統如何確定虛擬內存的大小
- 3. 操作系統如何處理比內存大的python字典?
- 4. 內存管理由操作系統
- 5. 當操作系統將程序從文件系統加載到內存中時,操作系統如何知道程序有多大?
- 6. 如何知道網頁的真實大小?
- 7. 內存管理單元(MMU)如何通知操作系統頁表已更新?
- 8. unix-like操作系統如何實現IPC共享內存?
- 9. 我如何知道我正在使用的操作系統?
- 10. 操作系統如何知道進程的執行時間
- 11. 如何通過PHP和Javascript知道客戶端操作系統?
- 12. 如何知道WINDOWS操作系統提供的隔離存儲空間?
- 13. 這段代碼是否真的知道系統是小端還是大端?
- 14. 對操作系統的內存保護
- 15. 操作系統如何獲取正確的ico/favicon大小?
- 16. 如何找出操作系統中分頁的大小
- 17. 操作系統和內存管理(理論)
- 18. 操作系統文件系統塊大小?
- 19. Linux如何知道進程使用了多少物理內存?
- 20. 內存泄漏和操作系統
- 21. Linux內核操作系統寄存器
- 22. 操作系統內存分配地址
- 23. 操作系統內存分配
- 24. Firefox操作系統:進程,內存
- 25. 64位操作系統內存分配
- 26. 操作系統主內存碎片
- 27. 免費如何知道要釋放的內存大小?
- 28. 如何知道std :: vector的分配內存大小?
- 29. 爲什麼Docker操作系統映像大小如此之小?
- 30. 簡單的玩具操作系統內存管理