分享好友 行情首页 行情分类 切换频道
逻辑地址、线性地址和物理地址的关系
2024-12-24 05:56  浏览:56

 

首先不得不提的历史

         许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。

虚拟地址又称为线性地址,将线性地址转换到物理地址,需要用到页式MMU;而将逻辑地址转换到虚拟地址,需要用到段式MMU。

二、物理地址、虚拟地址(线性地址)、逻辑地址

     任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围。这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (64T).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集。这里举一个最简单的例子直观地说明这两者,对于一台内存为256M的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256M)。

      这里有一个虚拟内存的概念,虚拟内存(virtual memory)是对整个内存(不要和机器上插那条对上号)的抽像描述。他是相对于物理内存来讲的,能直接理解成“不真实的”,“假的”内存,例如,一个0x08000000内存地址,他并不对就物理地址上那个大数组中0x08000000 - 1那个地址元素;之所以是这样,是因为现代操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。进程使用虚拟内存中的地址,由操作系统协助相关硬件,把他“转换”成真正的物理地址。这个“转换”,是所有问题讨论的关键。
有了这样的抽像,一个程序,就能使用比真实物理地址大得多的地址空间(拆东墙,补西墙,银行也是这样子做的,甚至多个进程能使用相同的地址。不奇怪,因为转换后的物理地址并非相同的。

  物理地址,CPU地址总线传来的地址,由硬件电路控制(现在这些硬件是可编程的了)其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存、BIOS等)。在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写;而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到存储器管理单元MMU,把虚拟地址映射为物理地址。

        线性地址(Linear Address)也叫虚拟地址(virtual address)是逻辑地址到物理地址变换之间的中间层。在分段部件中逻辑地址是段中的偏移地址,然后加上基地址就是线性地址。是一个32位无符号整数,可以用来表示高达4GB的地址,也就是,高达4294967296个内存单元。线性地址通常用十六进制数字表示,值得范围从0x00000000到0xfffffff)程序代码会产生逻辑地址,通过逻辑地址变换就可以生成一个线性地址。如果启用了分页机制,那么线性地址可以再经过变换以产生一个物理地址。如果没有启用分页机制,那么线性地址直接就是物理地址。

        逻辑地址是在有地址变换功能的计算机中,访内指令给出的地址 (操作数) 叫逻辑地址,也叫相对地址,也就是是机器语言指令中,用来指定一个操作数或是一条指令的地址。要经过寻址方式的计算或变换才得到内存储器中的实际有效地址即物理地址。一个逻辑地址由两部份组成,段标识符: 段内偏移量。段标识符是由一个16位长的字段组成,称为段选择符。其中前13位是个索引号,后面3位包含一些硬件细节 。

       CPU将一个逻辑地址转换为物理地址,需要进行两步:首先将给定一个逻辑地址(其实是段内偏移量,这个一定要理解,CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线性地址,再利用其页式内存管理单元,转换为最终物理地址。这样做两次转换,的确是非常麻烦而且没有必要的,因为直接可以把线性地址抽像给进程。之所以这样冗余,Intel完全是为了兼容而已(Intel为了兼容,将远古时代的段式内存管理方式保留了下来,x86体系的处理器刚开始时只有20根地址线,寻址寄存器是16位。我们知道16位的寄存器可以访问64K的地址空间,如果程序要想访问大于64K的内存,就需要把内存分段,每段64K,用段地址+偏移量的方式来访问,这样使20根地址线全用上,最大的寻址空间就可以到1M字节,这在当时已经是非常大的内存空间了。)。

       现代的多用户多进程操作系统,需要MMU, 才能达到每个用户进程都拥有自己独立的地址空间的目标。使用MMU, 操作系统划分出一段地址区域, 在这块地址区域中, 每个进程看到的内容都不一定一样。例如MICROSOFT WINDOWS操作系统将地址范围4M-2G划分为用户地址空间,进程A在地址0X400000(4M)映射了可执行文件,进程B同样在地址0X400000(4M)映射了可执行文件,如果A进程读地址0X400000, 读到的是A的可执行文件映射到RAM的内容,而进程B读取地址0X400000时,则读到的是B的可执行文件映射到RAM的内容。这就是MMU在当中进行地址转换所起的作用。

 

三、分页机制:页和页帧

大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页桢(frame).页和页桢的大小必须相同。在这个例子中我们有一台可以生成32位地址的机器,它的虚拟地址范围从0~0xFFFFFFFF(4G),而这台机器只有256M的物理地址,因此他可以运行4G的程序,但该程序不能一次性调入内存运行。这台机器必须有一个达到可以存放4G程序的外部存储器(例如磁盘或是FLASH),以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页桢大小与页相同——这点是必须保证的,因为内存和外围存储器之间的传输总是以页为单位的。对应4G的虚拟地址和256M的物理存储器,他们分别包含了1M个页和64K个页桢。  

 

参考的文章如下

http://forum.ubuntu.org.cn/viewtopic.php?t=276918

http://bbs.chinaunix.NET/thread-2083672-1-1.html

 

Add something

    以上就是本篇文章【逻辑地址、线性地址和物理地址的关系】的全部内容了,欢迎阅览 ! 文章地址:http://w.yusign.com/quote/3874.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 述古往 http://w.yusign.com/mobile/ , 查看更多   
最新新闻
手机卡顿反应慢怎么解决(教你3招快速解决手机卡顿问题)手机卡顿怎么解决「手机卡顿反应慢怎么解决(教你3招快速解决手机卡顿问题)」
手机一旦发生卡顿,很多人想到的原因只有两个:一是网络不好,二是储存内存不足。于是我们就一边寻找网络好的地方,一边打开手机
你在某宝30块钱买的山寨手机壳,都是抄袭这些牌子的!山寨手机「你在某宝30块钱买的山寨手机壳,都是抄袭这些牌子的!」
蜜ちゃん ▼ 前几天,当vpn还没被禁止使用的时候,蜜酱刷着ins,突然看到日本模特Miwakokakei用着和我同款的中二手机壳!明明蜜
目前最好看的四款手机,一款苹果,最后一台最美全面屏!最好看的手机「目前最好看的四款手机,一款苹果,最后一台最美全面屏!」
现在华为小米都纷纷推出了自己的新机,那么你知道现在哪几款手机最好看吗,看看这几台有你喜欢的吗?iPhone X这是苹果十周年发布
手机定位位置 1.0.0手机位置「手机定位位置 1.0.0」
腾讯云移动应用安全(腾讯御安全)REORDER_TASKS重新排序系统Z轴运行中的任务ACCESS_WIFI_STATE获取当前WiFi接入的状态以及WLAN热
iTunes如何制作iphone手机来电铃声?iphone手机铃声「iTunes如何制作iphone手机来电铃声?」
本文主要介绍iTunes如何制作iphone手机来电铃声,学习起来非常容易,想要学习的朋友们可以跟着小编一起去看一看下文,希望能够帮
上海女子遭遇“手机租赁”高利贷,借款14万元3个月还42万元租手机「上海女子遭遇“手机租赁”高利贷,借款14万元3个月还42万元」
以分期租赁手机的方式办理贷款,到头来手机没拿到,还需要在3个月内偿还42万元债务。7月9日,上海警方公布一起以“手机租借”为
“最便宜”版特斯拉出炉:售价23万 3月31日起预订凤凰网手机版「“最便宜”版特斯拉出炉:售价23万 3月31日起预订」
经过各种猜测之后,豪华电动车特斯拉面向大众推出的最便宜的一款新车Model 3。 美国当地时间2月11日,特斯拉CEO埃隆·马斯克(Elo
KEmulator模拟器KEmulator lite 0.9.8电脑手机模拟器「KEmulator模拟器KEmulator lite 0.9.8」
KEmulator是一款稳定,高效的手机游戏模拟器,支持各类手机软件、应用和游戏等,更强大的是能支持手机网游。KEmulator是目前最为
本企业新闻
推荐企业新闻
发表评论
0评