虚拟地址是什么,虚拟地址是怎么产生的
内容导航:
一、注册公司时虚拟地址是什么意思
注册的虚拟地址就是我们提供地址注册,会写在你的执照上面的,但是这个地址不是用于你办公的,也就是注册地址和你实际办公地址是不一致的,如果你在XX路XX号租一个办公室,然后用这个办公室注册,那么这个地址就不属于虚拟地址
二、什么是虚拟地址
什么是虚拟地址???虚拟地址 (virtual apress): CPU启动保护模式后,程序运行在虚拟地址空间中。
注意,并不是所有的“程序”都是运行在虚拟地址中。
CPU在启动的时候是运行在实模式的,Bootloader以及内核在初始化页表之前并不使用虚拟地址,而是直接使用物理地址的。
虚拟地址 (virtual apress): 4G虚拟地址空间中的地址,程序中使用的都是虚拟地址。
如果CPU寄存器中的分页标志位被设置,那么执行内存操作的机器指令时,CPU会自动根据页目录和页表中的信息,把虚拟地址转换成物理地址,完成该指令。
比如 mov eax,b8h ,这是把地址b8h处的值赋给寄存器的汇编代码,b8这个地址就是虚拟址。
CPU在执行这行代码时,发现寄存器中的分页标志位已经被设定,就自动完成虚拟地址到物理地址的转换,使用物理地址取出值,完成指令。
对于Intel CPU 来说,分页标志位是寄存器CR0的第31位,为1表示使用分页,为0表示不使用分页。
对于初始化之后的 Win2k 我们观察 CR0 ,发现第31位为1。
表明Win2k是使用分页的。
使用了分页机制之后,4G的地址空间被分成了固定大小的页,每一页或者被映射到物理内存,或者被映射到硬盘上的交换文件中,或者没有映射任何东西。
对于一般程序来说,4G的地址空间,只有一小部分映射了物理内存,大片大片的部分是没有映射任何东西。
物理内存也被分页,来映射地址空间。
对于32bit的Win2k,页的大小是4K字节。
CPU用来把虚拟地址转换成物理地址的信息存放在叫做页目录和页表的结构里。
举个例子:你家门牌是309室,但是你自己弄了个302室的牌子贴在上面,这个302室的牌子就是虚拟地址假的地址。
三、虚拟地址格式是什么
答:虚拟地址格式如下:基号段号页号页内地址虚拟内存变换算法编辑[3]虚拟存储器地址变换基本上有3种形虚拟存储器工作过程式:全联想变换、直接变换和组联想变换
四、“线性地址逻辑地址虚拟地址物理地址”分别是什么意思 搜
逻辑地址(Logical Apress) 是指由程式产生的和段相关的偏移地址部分。
例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。
只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程式执行代码段限长内的偏移地址(假定代码段、数据段如果完全相同)。
应用程式员仅需和逻辑地址打交道,而分段和分页机制对你来说是完全透明的,仅由系统编程人员涉及。
应用程式员虽然自己能直接操作内存,那也只能在操作系统给你分配的内存段操作。
线性地址(Linear Apress) 是逻辑地址到物理地址变换之间的中间层。
程式代码会产生逻辑地址,或说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。
如果启用了分页机制,那么线性地址能再经变换以产生一个物理地址。
若没有启用分页机制,那么线性地址直接就是物理地址。
Intel 的线性地址空间容量为4G(2的32次方即32根地址总线寻址)。
物理地址(Physical Apress) 是指出目前CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。
如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。
如果没有启用分页机制,那么线性地址就直接成为物理地址了。
虚拟内存(Virtual Memory)是指计算机呈现出要比实际拥有的内存大得多的内存量。
因此他允许程式员编制并运行比实际系统拥有的内存大得多的程式。
这使得许多大型项目也能够在具有有限内存资源的系统上实现。
一个非常恰当的比喻是:你不必非常长的轨道就能让一列火车从上海开到北京。
你只需要足够长的铁轨(比如说3公里)就能完成这个任务。
采取的方法是把后面的铁轨即时铺到火车的前面,只要你的操作足够快并能满足需求,列车就能象在一条完整的轨道上运行。
这也就是虚拟内存管理需要完成的任务。
在Linux0.11内核中,给每个程式(进程)都划分了总容量为64MB的虚拟内存空间。
因此程式的逻辑地址范围是到。
有时我们也把逻辑地址称为 虚拟地址。
因为和虚拟内存空间的概念类似,逻辑地址也是和实际物理内存容量无关的。
逻辑地址和物理地址的“差距”是,是由于虚拟地址->线性地址->物理地址映射正好差这个值。
这个值是由操作系统指定的。
机理 逻辑地址(或称为虚拟地址)到线性地址是由CPU的段机制自动转换的。
如果没有开启分页管理,则线性地址就是物理地址。
如果开启了分页管理,那么系统程式需要参和线性地址到物理地址的转换过程。
具体是通过设置页目录表和页表项进行的。
逻辑地址(Logical Apress) 是指由程式产生的和段相关的偏移地址部分。
例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。
只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程式执行代码段限长内的偏移地址(假定代码段、数据段如果完全相同)。
应用程式员仅需和逻辑地址打交道,而分段和分页机制对你来说是完全透明的,仅由系统编程人员涉及。
应用程式员虽然自己能直接操作内存,那也只能在操作系统给你分配的内存段操作。
线性地址(Linear Apress) 是逻辑地址到物理地址变换之间的中间层。
程式代码会产生逻辑地址,或说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。
如果启用了分页机制,那么线性地址能再经变换以产生一个物理地址。
若没有启用分页机制,那么线性地址直接就是物理地址。
Intel 的线性地址空间容量为4G(2的32次方即32根地址总线寻址)。
物理地址(Physical Apress) 是指出目前CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。
如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。
如果没有启用分页机制,那么线性地址就直接成为物理地址了。
虚拟内存(Virtual Memory)是指计算机呈现出要比实际拥有的内存大得多的内存量。
因此他允许程式员编制并运行比实际系统拥有的内存大得多的程式。
这使得许多大型项目也能够在具有有限内存资源的系统上实现。
一个非常恰当的比喻是:你不必非常长的轨道就能让一列火车从上海开到北京。
你只需要足够长的铁轨(比如说3公里)就能完成这个任务。
采取的方法是把后面的铁轨即时铺到火车的前面,只要你的操作足够快并能满足需求,列车就能象在一条完整的轨道上运行。
这也就是虚拟内存管理需要完成的任务。
在Linux0.11内核中,给每个程式(进程)都划分了总容量为64MB的虚拟内存空间。
因此程式的逻辑地址范围是到。
有时我们也把逻辑地址称为 虚拟地址。
因为和虚拟内存空间的概念类似,逻辑地址也是和实际物理内存容量无关的。
逻辑地址和物理地址的“差距”是,是由于虚拟地址->线性地址->物理地址映射正好差这个值。
这个值是由操作系统指定的。
机理 逻辑地址(或称为虚拟地址)到线性地址是由CPU的段机制自动转换的。
如果没有开启分页管理,则线性地址就是物理地址。
如果开启了分页管理,那么系统程式需要参和线性地址到物理地址的转换过程。
具体是通过设置页目录表和页表项进行的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/120067.html