1. 程式人生 > >使用grub的memmap的預留記憶體時系統宕機問題的一個解決方案

使用grub的memmap的預留記憶體時系統宕機問題的一個解決方案

今天在測試檔案系統時,改了以下grub的啟動引數,從memmap=2G$1G改為memmap=8G$1G,然後寫檔案的時候,寫了幾個檔案,系統就不響應了。剛開始還以為是檔案系統的問題,排除了死鎖、記憶體越界等情況後,忽然注意到,檔案系統掛載時,系統發出的一個warning。


然後我想著會不會跟這個有關呢。然後用dmesg看看相關資訊。注意到在dmesg的開頭有bios關於記憶體的資訊


我預留的記憶體區域剛好跨過了兩個區域

ACPI:[0x00000000dfff0000-0x00000000dfffffff]
reserved:[0x00000000e0000000-0x000000023fffffff]

於是寫檔案的時候,檔案系統覆蓋了這個區域上面的資料,就可能會宕機了。於是我把grub引數改為memmap=6G$4G,正好對應於physical RAM map的最後一個usable區域,這樣再執行檔案系統,就沒宕機情況了。而這也解釋了原來的引數memmap=2G$1G可以正常執行的原因:這個區域剛好落在第二個usable區域。