根据 IBM PC 的约定,640KB 以上的 384KB 是保留给 BIOS 使用的。理论上,这一块内存是不能动的,不然就容易和 BIOS 代码冲突。
但 MSDOS 能够把自己加载到 UMB 里面,这个是怎么做到的呢?
我看了了一些资料,说是 EMM386.exe 用 386 的 virutal 8086 模式搞黑魔法,把 BIOS 访问的某些固定的 UMB 内存段和当前 DOS 环境访问的 UMB 内存隔离开。这样子就相当于当前 DOS 环境里面获得一些额外的空闲内存。是这样的吗?
但问题又来了。EMM386 怎么知道哪些内存段确定是被 BIOS 使用的?显存肯定不行吧,因为 DOS 程序也要写显存。
--
修改:hgoldfish FROM 59.61.196.*
FROM 59.61.196.*