虚拟内存和物理内存的映射关系

虚拟内存

我们先来说说虚拟内存,我前面说过,之所以使用虚拟内存的原因就是因为很多软件非常大,运行起来特别容易占满整个物理内存,所以为了能够让大型软件运行再我们常用的电脑里,就出现了虚拟内存,其运作方式就是将有用的资源复制进内存中进行处理,没用的暂时放回去,这样就大大减少了内存的占用情况。

虚拟内存延伸出来的知识就是虚拟地址空间,这个空间就是我们常说的程序运行的空间,也是一个程序使用虚拟地址的范围。我们一直认为,电脑的系统只是为了让所有操作可以图形展示出来,让电脑使用起来更简单。实际上这只是一方面,另一方面就是我们所说的虚拟内存,它是计算机进入生活的必须产物。

计算机在早期的时候,程序是直接运行再硬件设备上的,但是硬件设备元器件非常有限,所以它们可计算的范围非常有限,不够用怎么办,而且我们说过计算机中的程序大多占用的是连续不断的一块内存,万一我们使用过程中,内存被其它程序占用了岂不是就会出错,所以虚拟内存和操作系统(系统是先产生的,我只不过一起提到而已)顺应时代而产生。

操作系统的作用是什么,它是为了确定物理内存和虚拟内存的映射关系,结合一个程序的编译模式,最终确定虚拟地址空间的大小范围等,说简单点,就是虚拟内存和物理内存的管理都是操作系统来进行的,而且能有效的解决我们前面说到的内存占用问题,防止其他程序占用我们使用的这片物理内存空间,这就是我们说到内存空间的隔离。说通俗点,就是一个很有很多孩子的母亲,这位母亲通过合理的方式,将这些孩子的资源分配的清清楚楚,让它们都能够健康成长,不会吵架,和睦相处。

软件层面

通过操作系统,是不是极少了出现错误的问题,而且因为程序直接从虚拟内存中操作,是不是可以让程序员们减少对物理内存的直接操作,让运行环境更加安全了。

虽然我们说了操作系统可以提高运行速度,而且提到了操作系统会受到编译模式影响,那么编译模式是什么。我们经常听到操作系统有64位,有32位等,除了软件上的问题,更多的是CPU的原因,因为CPU就是分位数的,早期的16位,到现在的64位,都让计算机发展的更快。而我们说的编译模式,就是指的不同平台,不同CPU下,数据位数不同,导致编译的模式也不一样,就是现在编译器来看大多都是64位和32位的。你们知道吗,实际上虚拟内存提出和应用,是32位系统出现的时候提出来的。

既然编译器的编译模式是多样的,那么我们来看一下编译模式是怎么个编译法,我们以32位系统为例,我们以前说过,不管指针还是地址,字节中每一位的二进制结果都位0和1两种,那么一个32位的操作系统就是2^32大概就是4G虚拟空间,注意这里说的是内存地址,不要搞错了。64位系统比较厉害了,它可以支持最大256TB的虚拟空间。不过受物理内存和操作系统影响,只使用了48位。

从上面的这些内容来看,一个32位系统需要搭配一个32位的CPU,然后运行的程序也必须是32位,这一套下来,我们可以统称为32位环境。

这里给朋友们做个知识小普及,为什么计算机系统除了分位数以外,还会有什么专业版,旗舰版,企业版等等,不要以为物理内存可以无限扩大,它也会受到计算机操作系统的限制,像Windows 7系统,它的家庭版最大支持16GB内存,而专业版却能支持192GB的内存。所以我们在选择扩大内存的时候,还需要更换操作系统。

上面说了那么多,无非就是操作系统将虚拟内存映射至物理内存,所以我们要对它的映射原理有所了解,这种映射并不是简单的一个内存映射至另一内存,它们是以块为单位划分,在系统上运行的程序所使用的空间看做一整块,在经过映射后,物理内存中也将按块划分,如果虚拟地址中,程序访问的地址超过了自己的使用范畴,那么系统就会将其认为成非法访问,直接在虚拟层面上禁止了访问物理内存,这样就不会存在内存相互占用的错误,我们将计算机的这种行为称为地址隔离。

当然,前面的这种以块为单位的方法,因为每次都需要占用一整块内存,难免会造成在使用阶段,出现大量程序没有使用,但是内存却仍然被占用的弊端,所以现在操作系统就使用了更加精细的划分方法,将虚拟地址和物理地址进行分割,简单的说,就是结合一一对应和整块对应的中间点,让内存区域不在以元器件和程序为单位,而是以切割的小内存块为单位,这样就像我们的活字印刷术一样,缺少了,就读取,多了,就放回原处,这样就会为内存腾出大量不需要的空间,也不用把一整块程序都放进来。小块内存之间有很多可以操作的余地,我们把这种均匀切割的内存看做一页,整体称作分页机制,这种地址转换的过程称为页表机制。这里就不再向下延伸,因为页表理解起来却是很绕,有兴趣的朋友可以自己去了解下。

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

推荐阅读更多精彩内容