Saya perhatikan dalam proses inisialisasi Gempa asli, fungsi berikut disebut.
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];
}
}
}
Saya pikir saya tidak cukup akrab dengan paging untuk memahami fungsi ini. void * ptr yang diteruskan ke fungsi adalah sepotong memori malloc () baru-baru ini yang berukuran byte besar. Ini adalah keseluruhan fungsi - j adalah variabel yang tidak direferensikan. Tebakan terbaik saya adalah sys_checksum int yang mudah menguap memaksa sistem untuk secara fisik membaca semua ruang yang hanya malloc (), mungkin untuk memastikan bahwa ruang-ruang ini ada dalam memori virtual? Apakah ini benar? Dan mengapa seseorang melakukan ini? Apakah karena alasan Win95 kuno?