オリジナルのQuakeの初期化プロセスで、次の関数が呼び出されることに気付きました。
volatile int sys_checksum;
// **lots of code**
void Sys_PageIn(void *ptr, int size)
{
byte *x;
int j,m,n;
//touch all memory to make sure its there. The 16-page skip is to
//keep Win 95 from thinking we're trying to page ourselves in (we are
//doing that, of course, but there's no reason we shouldn't)
x = (byte *)ptr;
for (n=0 ; n<4 ; n++)
{
for (m=0; m<(size - 16 * 0x1000) ; m += 4)
{
sys_checksum += *(int *)&x[m];
sys_checksum += *(int *)&x[m + 16 * 0x10000];
}
}
}
私はこの機能を理解するのに十分なページングに慣れていないと思います。関数に渡されるvoid * ptrは、サイズがバイトである、最近malloc()されたメモリです。これは関数全体です-jは参照されない変数です。私の推測では、揮発性のint sys_checksumが、システムにmalloc()されたすべてのスペースを物理的に読み取らせ、おそらくこれらのスペースが仮想メモリに存在することを確認していると思いますか?これは正しいですか?そして、なぜ誰かがこれを行うのですか?それはいくつかの時代遅れのWin95の理由のためですか?