当前位置: 技术问答>linux和unix
dos能够使用多大的内存?
来源: 互联网 发布时间:2014-11-05
本文导语: 请问dos可以使用多大的内存,可以运行多大的程序? | DOS 的实模式直接可以访问的内存范围主要受到他的地址表示方式限制。 因为DOS是16位的,最大能表示0000~FFFF这64K,所以 他采用了段地址 +...
请问dos可以使用多大的内存,可以运行多大的程序?
|
DOS 的实模式直接可以访问的内存范围主要受到他的地址表示方式限制。
因为DOS是16位的,最大能表示0000~FFFF这64K,所以
他采用了段地址 + 段内偏移的做法
就是类似FFFF:0000
他的实际地址是
FFFF
+ 0000
----------
FFFF0 (0~1M)
这是理论上说的1M内存,
这种方式可以使用到cpu的地址总线寻址20位(0~19),所以实际上可以访问的是
00000~FFFFF就是1M + 16 字节
当段地址是FFFF,段内偏移也是FFFF的时候,地址就是
FFFF
+ FFFF
-------
10FFEF
这是第20个地址总线会被激活(8086以后的x86cpu都是20根地址总线以上的啦,286:24根最大16M ,386:32最大4G),
所以DOS可表示,并且可以直接访问(8086以后的cpu)的地址范围是0000:0000~FFFF:FFFF
1M+64K-16字节
这个64K-16字节就是大家常说的UMB(upper memory bank)上位内存.
因为DOS是16位的,最大能表示0000~FFFF这64K,所以
他采用了段地址 + 段内偏移的做法
就是类似FFFF:0000
他的实际地址是
FFFF
+ 0000
----------
FFFF0 (0~1M)
这是理论上说的1M内存,
这种方式可以使用到cpu的地址总线寻址20位(0~19),所以实际上可以访问的是
00000~FFFFF就是1M + 16 字节
当段地址是FFFF,段内偏移也是FFFF的时候,地址就是
FFFF
+ FFFF
-------
10FFEF
这是第20个地址总线会被激活(8086以后的x86cpu都是20根地址总线以上的啦,286:24根最大16M ,386:32最大4G),
所以DOS可表示,并且可以直接访问(8086以后的cpu)的地址范围是0000:0000~FFFF:FFFF
1M+64K-16字节
这个64K-16字节就是大家常说的UMB(upper memory bank)上位内存.