回 帖 发 新 帖 刷新版面

主题:[讨论]初学遇到的几个小问题

1.段寄存器是不是,只是存了一个16位地址。真的要访问段寄存器的内容是不是根据地址访问的是内存。
2.存储器主要是指的内存?
3.中断向量表是不是在内存中的?
4.8086的CPU里面是不是有一个1MB的存储空间?
5.说有了一个地址加法器。就可以算出20位的地址。这样就有寻址1MB的空间。那是不是我所有的操作的数据不能超过1MB呀?
6. 80486虚拟存储器有两层含义,一是指程序编程使用的逻辑存储空间,其大小由微处理器内部结构确定,如80486的最大虚拟存储空间为64TB(246B),它使编程人员在写程序时,不用考虑计算机的实际主存容量,可以写出比任何实际配置的物理存储器都大得多的程序;(不懂也!!)
二是指在主存容量不能满足要求时,为了给用户提供更大的访问存储空间,而采用内外存自动调度的方法构成的一种存储器。(这个也不是很懂)

高手啊,高手!!!!!来看一下下嘛!!!

回复列表 (共5个回复)

沙发

哇来看的人还真多

板凳

1.段寄存器是不是,只是存了一个16位地址。真的要访问段寄存器的内容是不是根据地址访问的是内存。
2.存储器主要是指的内存?
3.中断向量表是不是在内存中的?
4.8086的CPU里面是不是有一个1MB的存储空间?
5.说有了一个地址加法器。就可以算出20位的地址。这样就有寻址1MB的空间。那是不是我所有的操作的数据不能超过1MB呀?
6. 80486虚拟存储器有两层含义,一是指程序编程使用的逻辑存储空间,其大小由微处理器内部结构确定,如80486的最大虚拟存储空间为64TB(246B),它使编程人员在写程序时,不用考虑计算机的实际主存容量,可以写出比任何实际配置的物理存储器都大得多的程序;(不懂也!!)
二是指在主存容量不能满足要求时,为了给用户提供更大的访问存储空间,而采用内外存自动调度的方法构成的一种存储器。(这个也不是很懂)

1。段寄存器的内容是可以访问的啊,是可以得到具体的值的。举个例子讲,DEBGU下你打个R,所有的寄存器值不都出来了?

2。内部存储器简称内存

3。中断向量表在内存0~3FFH(实模式)

4。8086CPU内部没有1MB的存储空间,而是它只能访问1MB存储空间

5。实模式是这样的,只能寻址1MB空间。

6。32位CPU可以直接寻址4G的内存,不再有段的概念,地址是“平坦”的。虚拟内存是利用外存(一般是硬盘),通过分页管理来“模拟”内存,硬盘的空间相比内存是大的多了,所以当然也就能利用“比实际内存大的多”的空间了。另外,之所以虚拟内存能访问6TB,我印象中好象CPU是通过“选择子”(有16K)来办到的,这样16K*4G也就是64TB了?不过虚拟内存也不是能无限大的,硬盘与内存的速度差的太多了,过多的依赖于虚拟内存系统的性能将严重下降!在WINDOWS中一般虚拟内存文件大小设为主内存大小的1。5~2倍,不过如果你有2G的内存,用的是XP,你也可以试着设虚拟内存为0试试?不过建议多少也设点儿,呵呵。关于保护模式的东西是比较复杂的,我也是一知半解,想详细了解建议去学保护模式下的编程。

3 楼

谢谢楼上的同学,但是对于第一个问题我不是很满意。我意思是说,段寄存器是不是只是存了一个内存段的首地址。

还有一个问题就是CUP内部是不是也可以存少量的数据,例如AX,BX这些寄存器。少量数据大概是多大的容量。

而段寄器所存的数据是存在哪里的?是CPU内部还是内存里。

4 楼

1. 对于实模式,段寄存器16位,就是存放一个段地址(非该段的首地址)。
对于保护模式,一个段寄存器由80位组成,其中包括16位的选择子寄存器和64位的描述符寄存器。

寄存器都在CPU内部,与内存无关。

6.实际上你可以把虚拟内存看作一个虚拟的空间。保护模式下,资源被操作系统控制,一个用户级程序实际上就是在自己的虚拟空间里转。
当然,虚拟内存的容量是巨大的(提出虚拟存储器原因之一就是为了能够逻辑上扩充内存容量),需要硬盘之类的副存配合。

如果楼主对于此类问题仍然纠缠不清,请阅读关于x86实模式以及保护模式的资料(目前部分组成原理教材均有所讲述),另外还要阅读讲述操作系统原理的书籍,如《现代操作系统》。

5 楼

3Q我明白了

我来回复

您尚未登录,请登录后再回复。点此登录或注册