本文主要是介绍使用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区域。
这篇关于使用grub的memmap的预留内存时系统死机问题的一个解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!