阅读:1352回复:1
关于分页内存与非分页内存(To love1999)
lov1999,关于上次我们上次讨论的分页内存与非分页内存问题我回去看了有关书籍以后觉得我们的讨论存在错误。
自从80286开始,保护模式中就被支持,但是到80386DX才真正实现32位机(80386还有一款SX处理器,它被称为准32位机)。80386兼容实模式,它共有32根地址线,在保护模式下运行时,最大可访4G内存。同时CPU对不同特权级的支持提供了对多任务的支持。多任务实现的必要前提是实现虚拟内存,因为这样,每个应用程序拥有自己独立的内存空间,不会被其他的应用程序访问,保护了数据的完整性。 但是虚拟内存不能直接被CPU访问,任何虚拟内存必须被转换成物理内存才能被CPU访问。80386仍然有分段内存,但是它已不再是16位,而是32位,它不必开始于16bytes的边缘,而是可以开始于内存中任何地方,同时它的段址已不再是实模式的段地址,它是一个被称为选择子的新概念,选择子和偏移地址共同决定虚拟地址的线性地址。这一步在保护模式是必选的。除此之外,80386保护模式还提供了内存分页技术,这种方法将物理内存和线性内存分成固定大小的内存页(对于x86来说是4K).当采用分页机制以后,线性内存还需要通过查表以确定它所映射到的物理内存,否则(没有采用分页机制),线性地址就等于物理地址。这一步(分页机制)是可选的。 所以回到我们上次讨论的问题,我认为分页与非分页应该有新的答案。 |
|
|
沙发#
发布于:2002-03-23 12:20
老兄,你说的这一大段话我都懂。但我不明白你究竟要讨论的是什么?
以前我说的windows里nonpaged pool其实也是分页内存,它和cpu所说的未分页内存不是一回事,我认为在一个时间里,要么系统是分页的,要么是未分页的,不可能两种同时存在,因为这个好像是由CR3的bit 31决定的 |
|
|