我试图实现简单的操作系统,现在必须实现内存管理。为什么我的内存检查代码不能正常工作
首先,我们输入简单的代码来检查内存大小如下。
我遇到的问题是这个函数的结果取决于增量大小。
如果我将增量设置为1024,则此函数返回640Kb。
但是,如果我将增量设置为1024 * 1024,则此函数返回120Mb。
(我的系统(bochs)的内存设置为120MB。)
我检查了优化选项和A20门。
任何知道为什么我的功能无法正常工作的人?
unsigned int memtest_sub(unsigned int start, unsigned int end)
{
unsigned int i;
unsigned int* ptr;
unsigned int orgValue;
const unsigned int testValue = 0xbfbfbfbf;
for (i = start; i <= end; i += 1024*1024) {
ptr = (unsigned int*) i;
orgValue = *ptr;
*ptr = testValue;
if (*ptr != testValue) {
break;
}
*ptr = orgValue;
}
return i;
}
不要探测内存。在实模式下使用BIOS(因为它看起来像你在x86上)以获得内存布局。见int 15h。 – Macmade