打印

BIOS系列杂谈-UEFI到操作系统的虚拟地址转换

[复制链接]
129|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
海洋无限|  楼主 | 2024-12-3 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先,我们来复习一下物理地址和虚拟地址的概念。所谓物理地址,就是从CPU 发出的读写请求所引用的地址。请注意,物理地址并不一定指向内存,它有可能指向一个芯片组的功能块,也可能指向外设,甚至什么也没有指到。一个读写请求,从CPU出发,经由芯片组,桥接设备,及各种地址解码硬件配合工作,被最终“引导”到目标设备,从而完成一次读写操作。所谓虚拟地址,则是程序的指令所使用的地址 ( 包括指令本身所在的地址,已及指令所读写的目标的地址 ) 。每当CPU遇到一个虚拟地址(可能是CPU从内存读入指令时,也可能是CPU按指令要求读写操作数时),CPU都会进行从虚拟地址到物理地址的转换  ( 简单起见这里只画出来页表 ) ,然后使用最终得到的物理地址发出读写请求。为什么计算机设计者要引入两种不同的地址概念呢?是为了显示自己很聪明,故意把事情搞复杂吗?当然不是(我倒希望是的,这样我们就可以理直气壮地少费些脑细胞了)。事实上,对虚拟地址和物理地址加以区分,在操作系统中十分有用。因为这样可以使每段程序都有自己“固定”的虚拟地址空间,不随内存分配的调整(比如把程序在内存中移动或剔除)而变动,这个特性在一段程序被多段程序调用时显得格外重要。此外页表所提供的保护机制,可以使操作系统更安全地管理整个内存,也为在内存紧张时将部分内存换出到磁盘提供了可能。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

530

帖子

1

粉丝