计算机内存寻址

基本概念

cpu(中央处理器)段式管理:段式管理的基本原理是指把一个程序分成若干个段(segment)进行存储,每个段都是一个逻辑实体(logical entity)。一个用户作业或进程所包含的段对应一个二维线形虚拟空间,程序通过分段(segmentation)划分为多个模块,故可以对程序的各个模块分别编写和编译。段式管理程序以段为单位分配内存,然后通过地址影射机构把段式虚拟地址转换为虚拟地址
cpu页式管理: 页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(一般为4K),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题


逻辑地址:包含在机器语言指令中用来指定一个操作数或一条指令的地址,每个逻辑地址都由一个段和偏移量组成,表示为[段标识符:段内偏移量]。例如,在C/C++程序中我们使用指针对变量地址操作,该地址就是逻辑地址(准确的应该说是逻辑地址的段内偏移量)。对应上述段式管理,逻辑地址是段式管理转换前的程序地址

线性地址:也称为虚拟地址,它是一个32位无符号整数,故可以用来表达高达4GB的地址。线性地址同逻辑地址一样也是不真实的地址。对应上述页式管理,线性地址是页式管理转换前的地址

物理地址:用于内存芯片级内存单元寻址,与处理器和CPU连接的地址总线相对应。一般情况下,我们说的计算机内存条中的内存就是它(虽然不准确)


好了,有了上述概念。我们先把计算器寻址分为两步:

逻辑地址->线性地址->物理地址

首先我们穿插一个小情景,比如老师交给你一个任务,理解装饰者模式

按照传统思想,是不是应该有这样逻辑:图书馆->大厅搜索(计算机科学技术书籍)->找到对应楼层书架,找到一本《大话设计模式》的书
接下来是不是应该查找目录找到需要的段落,逻辑如下:
找寻目录->找到页数->找到段落

彳亍,上述所说无异议吧,有异议的我希望:耗子尾汁, 接着向下看 ,开始正题。

逻辑地址转化为线性地址(虚拟地址)

逻辑地址由两部分组成:一个段标识符和一个指定段内相对地址的偏移量(简称偏移量),[段标识符: 段内偏移量]

段标识符是由一个16位长的字段组成,称为段选择符,由处理器提供段寄存器来存放段标识符,段寄存器有6种:
(1)cs 代码段寄存器,指向包含程序指令的段;
(2)ss 栈寄存器,指向包含当前程序的段;
(3)ds 数据段寄存器,指向包含静态数据或者全局数据段;
(4)其他三个寄存器es, fs, gs称为附加段寄存器,作一般用途,可以指向任意的数据段。

偏移量指明了从段开始的地方到实际地址之间的距离,偏移量为32位。

段标识符(段选择符)

段标识符,按照其字面意思便可理解它的作用是用来标识一个段的,而段是如何表示的呢?

这就引申到了另外一个概念:段描述符,每个段由一个8字节的段描述符表示,它描述了段的特征(段描述符就是段)。段标识符通过索引号(13位)就可以找到其对应的段(段描述符)

ok,经过了一系列文字,还不够鲜明,直接上图:


逻辑地址->线性地址

(1)先检查逻辑地址的段选择符的TI字段,以决定段描述符保存在哪一个描述符表中。(TI=0表明在GDT中,TI=1表明存在LDT中)
(2)根据段选择符的索引号,计算查找段描述符的地址,方法:索引号
8 + gdtr或者ldtr寄存器中的内容 = Base。
(3)把逻辑地址的偏移量与步骤(2)中得到的Base字段值相加就可以得到其对应的线性地址
*。


线性地址转换为物理地址

首先,我们得知道一些线性地址相关的东西

(1)线性地址被分成固定长度为单位的组,称为页。页内部连续的线性地址被映射到连续的物理地址中。
(2)分页段元把所有的物理地址分成固定长度的页框,称为物理页。
(3)线性地址映射到物理地址的数据结构称为页表。
(4)32位的线性地址,被分成3个域:目录(Directory)高10位,页表(Table)中间10位,偏移量(Offset)低12位,由偏移量的12bit可知,每页含有4096字节的数据

有了刚开始小情景的导入,直接上图,一目了然。

线性地址->为物理地址

步骤如下

(1)从cr3中取出进程的页目录地址(操作系统负责在调度进程的时候,把这个地址装入对应寄存器);
(2)根据线性地址前十位,在数组中,找到对应的索引项,因为引入了二级管理模式,页目录中的项,不再是页的地址,而是一个页表的地址。(又引入了一个数组),页的地址被放到页表中去了。
(3)根据线性地址的中间十位,在页表(也是数组)中找到页的起始地址;
(4)将页的起始地址与线性地址中最后12位相加,得到最终我们想要的其对应的物理地址

感谢观看!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容