Win9x在Intel和AMD新处理器虚拟机抽风主要有以下两个原因:

1、Win95OSR2、Win98第一版的NDIS.VXD和VMM32.VXD中的IOS.VXD等VXD文件调用GetSystemTime在CPU频率和IPC过快的情况下会两次返回相同的值,两者相减作除数,发生除以零错误,导致安装完成后进系统文字模式报NDIS或IOS等错误死机(另外虽然Win2000不属于Win9x,但Win2000在CPU过快的机器上的VMware上安装时也有机会在安装Distributed Transaction Coordinator时安装程序闪退重启)

2、Win98第一版、Win98第二版、WinMe的VMM32.VXD中的VMM.VXD中的FlushMappedCacheBlock函数在修改页表并访问数据时使用了错误的操作顺序

VMM.VXD中使用了如下错误的操作顺序:

  1. 清除TLB(CPU内部的页表转换缓存,可使用mov cr3或invlpg指令清除)
  2. 修改内存中的页表项
  3. 访问新页表项指向的内存

正确的操作顺序是:

  1. 修改内存中的页表项
  2. 清除TLB(CPU内部的页表转换缓存,可使用mov cr3或invlpg指令清除)
  3. 访问新页表项指向的内存

新处理器,如AMD Ryzen 3000+(可能更早的也有问题)、Intel 11代Core i系列桌面处理器和Intel 10代Core i系列笔记本处理器以后的处理器,对于预取操作进行了较为激进的优化,对TLB也进行了预取,导致Win98第一版、Win98第二版、WinMe在修改内存中的页表项操作之前,为之后的指令预取了错误的数据,由于主要影响的是磁盘缓存,因此导致了数据随机出错,进而导致系统运行时随机报错,甚至磁盘文件损坏

  • Win98第二版抽风最严重,安装时就会报非法操作,无法完成安装
  • Win98第一版可以完成安装,但抽风频率较高
  • WinMe抽风频率较低,但仍有可能导致磁盘文件损坏,特别是正常模式整理磁盘碎片会直接导致系统损坏
  • Win95和Win95OSR2并不能观测到这个问题的典型抽风现象

这两个问题不使用补丁的解决方案:

1、Win9x暂时没有很好的解决方案(Win2000安装时重启的问题可以使用VirtualBox安装解决)

2、可以通过在VMware中将硬盘控制器设置为SATA,由于Win98/Me没有SATA的32位硬盘控制器驱动程序,读写硬盘时会进入DOS模式读写,避免了抽风问题

对于Win9x的这两个问题,有人写了一个非官方的补丁,在安装时可使用这个补丁修补系统文件的问题:

JHRobotics/patcher9x: Patch for Windows 9x to fix CPU issues (github.com)

Win98第一版、Win98第二版、WinMe使用方法:

  1. 正常安装Win,第一次重启前插入patcher9x软盘,重启进入FreeDOS
  2. 输入patch9x回车
  3. 输入c:\windows\system回车(也可以直接回车)
  4. 输入2回车(也可以直接回车,选择2: patch files, VMM32.VXD will be patched directly)
  5. 输入y回车,应用补丁
  6. 按回车退回FreeDOS,拔出patcher9x软盘,按Ctrl-Alt-Del重启
  7. 安装Q242161 (98 FE), Q288430 (98 SE), ME296773 (Me)补丁后需重复以上步骤
  8. 注意千万不要在未应用补丁的Win98/98SE/Me系统中执行patch9x,否则可能导致系统文件损坏

Win95OSR2使用方法:

  1. 使用Win98启动盘将光盘中的win95文件夹复制到c:\win95
  2. 插入patcher9x软盘,输入a:\patch9x回车
  3. 输入c:\win95回车
  4. 输入4回车(选择4: scan *.CAB archives, extract files and patch them (VMM32 directly))
  5. 输入y回车,应用补丁
  6. 按回车退回DOS
  7. 进入c:\win95文件夹,输入setup回车开始安装
  8. 注意千万不要对Win95RTM/OSR1系统应用这个补丁,否则会导致系统文件损坏

参考资料:

Windows 9x TLB Invalidation Bug « Blog (stuffedcow.net)

TLB and Pagewalk Coherence in x86 Processors « Blog (stuffedcow.net)

Win9x在Intel和AMD新处理器虚拟机抽风的原因及补丁相关推荐

  1. 服务器cpu支持DDR4,迟来的惊喜 AMD新处理器支持DDR4内存

    因为AMD的CPU中集成了内存控制器,所以只要内存条换代,处理器的接口必定会换装,从Socket AM2.AM3一路过来都是这样.接下来的x86平台包括Zen处理器和APU(Bristol Ridge ...

  2. 国产处理器再获重大突破,走出国门挑战Intel和AMD

    据媒体报道指海外PC厂商Dannie已推出了一款支持国产兆芯处理器的主板,这代表着国产处理器已不仅在国内市场替代Intel和AMD,还开始走向海外市场,代表着国产芯片的重大突破. 兆芯推出的处理器为X ...

  3. amd 服务器cpu型号怎么看,Intel还是AMD?10个问题看懂CPU该如何选

    很多DIY新手在装机选购CPU的过程中都容易陷入一些误区中,比如盲目追求CPU核心数量.认为旗舰产品就一定好于主流产品等.本次,我们就通过十个DIY新手在选购CPU过程中常见的问题,来为大家普及一下C ...

  4. Intel、AMD和Arm 告警:注意新的推断执行CPU漏洞!

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 安全研究员发现了绕过Intel.AMD和Arm公司现代计算机处理器中基于硬件的推断执行防御措施. 今天,这三家CPU厂商发布安全公告并发布缓解更 ...

  5. 干掉Intel、AMD?国产处理器架构都有哪些?

    6月底公布的最新一期TOP500超算排行榜中,中国的神威·太湖之光低调地挤下了六连霸的同胞兄弟天河2号,成为首款理论性能达到10亿亿次的超算,将 天河2号之前保持的性能往前推进了一个量级,晋级新的世界 ...

  6. AMD Ryzen 处理器 使用 VMWare 安装 Mac OS 虚拟机详细记录

    之前在Inter处理器上装过Mac虚拟机,后来硬件更新,换了 AMD 3600,发现虚拟机打不开了,显示客户机已禁用CPU.无奈只能寻找解决方法.在折腾几天,几度绝望之后,终于在综合许多攻略的基础上成 ...

  7. AMD:别黑我了,你们要的新处理器马上来

    长期以往,PC爱好者们通常都会依据个人喜好分为两大派系:偏爱高性能低能耗的Intel派,以及偏爱性价比的农企派,通常情况下不会有人选择保持中立.但AMD认为,其即将发布的新一代旗舰芯片Zen将改变这一 ...

  8. Intel和AMD处理器各有什么特点?该如何选择?

    上篇文章为大家介绍了NVIDIA显卡和ATI显卡的孰优孰劣?,这一篇侠客岛为大家介绍下关于CPU厂商的两大巨头Intel和AMD! 目前两大CPU巨头的竞争可为惨烈,竞争越激烈对于我们消费者来说,可谓 ...

  9. AMD新推两款3GHz双核Opteron处理器 耗电更大

    AMD新推两款3GHz双核Opteron处理器 耗电更大[@more@][赛迪网讯]4月22日消息,芯片厂商AMD已经开始悄悄地销售新的3GHz版本的双核Opteron服务器处理器. 据CNET Ne ...

最新文章

  1. 如何查看CISCO FWSM上ACL分区的空闲资源
  2. mysql 只允许本地登陆 centos,Centos中MySQL设置密码跟不允许匿名登陆
  3. vsnprintf的作用和使用
  4. 项目进度管理:控制进度
  5. 学会Python正则表达式,就看这20个例子~
  6. Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))
  7. 用JavaScript fetch API取数据遇到CORS policy问题
  8. (ZT)VC++的链接错误LNK2001
  9. 智商145!比利时神童9岁读完大学,成史上最年轻大学毕业生
  10. C语言 strcpy函数实现
  11. [C++ Quiz] Intermediate level
  12. Android 百度地图开发详解
  13. Linux教程+操作系统教程
  14. Http状态代码指示
  15. 我希望进入大学时就能知道的一些事儿
  16. mysql报1114错误_mysql插入数据出现error1114 table is full
  17. IOS手机长按图片无法弹出识别二维码
  18. Revit API: Dimension 尺寸标注
  19. elementUI表格气泡乱串、闪烁、位置偏移问题解决(自制气泡,计算位置,箭头永远指向当前元素)
  20. ANDROID 系统下载

热门文章

  1. MATLAB教学_06进阶绘图
  2. python简单入门——画多啦A梦
  3. 用scratch2.0编射击游戏
  4. 《Dead Cells》的随机地图生成
  5. 【学点Linux】Linux该如何学习(新手入门必看)
  6. 最优停止理论-有限层确定问题和dp算法
  7. [资源下载]张宇老师讲授的数学视频(概率+高数+线代)
  8. MTK 平台sensor arch 介绍-hal
  9. 分段地址变换过程c语言,段页式存储结构
  10. idea中创建vue项目