- 主题:假设往 DOS 机器里面安装了 1MB 内存
8086上,无论是硬件(20根地址线)还是软件(shifted segment + offset)都被限制在了
20位上,当然无法访问更多的内存了
【 在 hgoldfish 的大作中提到: 】
: 那 MSDOS 和程序得到的是 1MB 内存呢,还是 1MB + 384KB?
: 640KB 到 1MB 这一段空间,无论如何都是映射到 BIOS 的存储的对吧。
: 如果安装了内存之后仍然不被用起来,岂不是很可惜。
: ...................
--
FROM 104.133.9.*
你想多了
维基上说ibm pc主板上所有内存槽全插满了才256k
【 在 hgoldfish 的大作中提到: 】
: 所以 8086 的时代,无论如何大家都不会安装超过 640KB 的内存是吧?多一个 KB 也不会?
--
FROM 71.198.4.*
- Upper Memory Blocks
Pocket8086 installs 128KB of memory in the D0000-EFFFF address segment and uses bit2 of IO port 060H as its switch flag. When it is written to 0, UMB is turned on (default). When it is written to 1, the UMB is turned off.
【 在 hgoldfish 的大作中提到: 】
: 我刚看了一下某电商平台上面的 pocket8086 电脑,安装了 640KB + 128KB 内存,使用的是 nec v30 处理器。
: 所以这里为啥要提供额外的 128KB 内存呢?
--
FROM 71.198.4.*
【 在 hgoldfish 的大作中提到: 】
: 这个是 pocket8086 特有的,还是古代 8086 就有的特性?
: 这怎么能算 UMB 呢?UMB 应该是 FFFF:0000 - FFFF:FFFF 才对啊。而且我记得这一段内存到了 286 才能被访问到。
: 原版 IBM PC 里面,D0000-EFFFF 这一段没有被使用吗?
应该没有被用到吧,它既然要挑一段地址给自己用,肯定挑一段别人很少用到的地址
: ...................
--
FROM 71.198.4.*
这部分就是留给外设和bios用的,每家公司只能声明自己使用的那部分,其他部分有没有人用没办法知道的
【 在 hgoldfish 的大作中提到: 】
: 这个 384 KB 内存里面哪部分被利用到,有没有明确的文档来说明?
: 我记得 MSDOS 的 HIMEM.SYS 有个功能是自动探测哪部分被使用了,但也留了参数让用户自己指定某些地址段是可以使用的。
--
FROM 104.133.9.*
【 在 hgoldfish 的大作中提到: 】
: 每家公司?也就是每个外设使用的内存地址都可能不一样?
对呀,你只能决定自己使用什么,不能决定别人使用什么
: 比如我往里面装一块显卡、一块声卡、一块网卡、一块 MIDI 卡的话,它们冲突了怎么办?
当年玩dos游戏,这就是最麻烦的地方,一般情况下外设提供多个选项,有冲突了就换一个
地址冲突的情况并不多,最常见的中断号的冲突,资源太有限了
为了解决这些冲突问题,才有了后来的plug and play,这样系统启动的时候能自动查找外设并分配资源
: 原谅我问这么弱智的问题,因为我是从 P II 才开始用电脑的哈哈。我其实没正经用过 DOS.
: ...................
--
FROM 104.133.9.*
最简单的方法就是在板卡上提供一个小开关
再详细的你也不要问我了,我也不懂
没有研究过外设
【 在 hgoldfish 的大作中提到: 】
: 那这些外设是使用什么方案提供多个选项的?启动 DOS 的时候先用驱动程序向外设发消息?一般是用什么方案发消息?当年通过 PCI 或者更古董的那个啥槽发消息有统一的接口吗?
: 读写某段内存地址就指向外设,这样的机制是由 CPU 提供的?8086 提供哪个机制来设置内存地址段?
这叫做MMIO, 通常由memory controller和IO controller来实现,cpu就当作普通的内存访问就行了(加上一些额外限制,比如non-cachable, non-speculate等)
早期x86上并不流行MMIO, 大概这就是外设导致的内存冲突的并不常见的原因
那时访问外设的主流方法是通过IN/OUT指令访问IO端口,IO端口的冲突也比较常见
--
FROM 104.133.9.*
VGA不能通过MMIO访问,必须通过BIOS中断访问,这些BIOS中断就可以看作是VGA firmware提供的驱动程序给应用程序调用的接口吧
【 在 hgoldfish 的大作中提到: 】
: 显卡才占用 32KB? 这怎么够用啊?后面的 VGA 需要 640*480 个字节我算了一下是 300KB 来着。是不是得先写一部分,然后刷到显存里面再次写?当年 16 色的系统用起来很有质感。
: 像这种规定,有没有什么相关的文档?我去看一下还有没有其它细节?
--
FROM 104.133.9.*