今天在測試文件系統時,改了以下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區域。