Win9x在Ryzen等新处理器虚拟机抽风主要有以下两个原因:
1、Win95OSR2、Win98第一版的NDIS.VXD调用GetSystemTime在CPU频率过快的情况下会两次返回相同的值,两者相减作除数,发生除以零错误,导致安装完成后进系统文字模式报NDIS错误死机
2、Win98第一版、Win98第二版、WinMe的内核和32位保护模式磁盘驱动(VMM32.VXD、VMM.VXD、NTKERN.VXD、IOS.VXD、ESDI_506.PDR、SCSIPORT.PDR)中使用了如下错误的操作顺序:
正确的操作顺序是:
导致AMD Ryzen 3000+、Intel 11代 Core i系列,以及更新的处理器,在修改内存中的页表项操作之前,为之后的指令预取了错误的数据,由于主要影响的是磁盘驱动,因此导致了数据随机出错,进而导致系统运行时随机报错
对于这些问题,有人写了一个非官方的补丁,在安装时可使用这个补丁修补系统文件的问题:
JHRobotics/patcher9x: Patch for Windows 9x to fix CPU issues (github.com)
参考资料: