我正在尝试实现简单的操作系统,现在必须实现内存管理。
首先,我们键入简单的代码来检查内存大小,如下所示。
我遇到的问题是这个函数的结果取决于增量大小。
如果我将增量设置为 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;
}