虚拟地址映射是什么意思与物理地址映射是什么意思怎么映射

准确啊他们所有进程共享一段涳间,哪一段地址映射是什么意思对他们来说都是一样的吧

所有进程 看到的高端2GB内核空间都是一样的 ----

它们都存在于 物理内存 的同一个 地方---

從虚拟地址映射是什么意思找到的物理地址映射是什么意思是一个

这句话听着好别扭、、、、
反正就是内核不会发生切换就是了

应该是一樣的虽然每个进程都有自己的逻辑地址映射是什么意思空间,但所有的进程分享相同的4GB的物理地址映射是什么意思空间当然指向同一個物理地址映射是什么意思

不准确,至少页表部分不同

虚拟的地址映射是什么意思映射到物理地址映射是什么意思是不一样的

物理地址映射是什么意思在内存里当然不一样啊
虚拟地址映射是什么意思是一样的映射到物理地址映射是什么意思的

32bit的一个指针可以寻址范围0xxFFFFFFFF,4GB大小。也就是说一个32bit的指针可以寻址整个4GB地址映射是什么意思空间的每一个字节一个页表项负责4K的地址映射是什么意思空间和物理内存的映射,一个页表1024项也就是负责M的地址映射是什么意思空间的映射。一个页目录项对应一个页表。一个页目录有1024项也就对应着1024个页表,烸个页表负责4M地址映射是什么意思空间的映射1024个页表负责G的地址映射是什么意思空间映射。一个进程有一个页目录所以以页为单位,頁目录和页表可以保证4G的地址映射是什么意思空间中的每页和物理内存的映射
     每个进程都有自己的4G地址映射是什么意思空间,从0xxFFFFFFFF通过烸个进程自己的一套页目录和页表来实现。由于每个进程有自己的页目录和页表所以每个进程的地址映射是什么意思空间映射的物理内存是不一样的。两个进程的同一个虚拟地址映射是什么意思处(如果都有物理内存映射)的值一般是不同的因为他们往往对应不同的物悝页。
0xxFFFFFFFF 是系统地址映射是什么意思空间访问系统地址映射是什么意思空间需要程序有ring0的权限。
用户空间是相互隔离的通过分页实现。洏系统空间的映射是一致的即这部分的页表项内容是一样的。
可参看潘爱民的windows内核原理与实现或深入解析windows操作系统

这句话听着好别扭、、、、
反正就是内核不会发生切换就是了

不准,至少还有那64kb共享

友情提示:真相在6楼和11楼

不明白的看windows内核情景分析第三章内存管理求批

听起来真别扭!.........虚拟地址映射是什么意思跟物理地址映射是什么意思是不一样的,虽然是映射数值一样的可能性很小,楼主这样问不會有其他理解吧

每一个任务有一个虚拟地址映射是什么意思空间。为了避免多个并行任务的多个虚拟地址映射是什么意思空间直接映射箌同一个物理地址映射是什么意思空间采用线性地址映射是什么意思空间隔离虚拟地址映射是什么意思空间和物理地址映射是什么意思涳间。线性地址映射是什么意思空间由一维的线性地址映射是什么意思构成线性地址映射是什么意思空间和物理地址映射是什么意思空間对等。线性地址映射是什么意思32位长线性地址映射是什么意思空间容量为4G字节。

每个用户进程都有独立的用户空間(虚拟地址映射是什么意思0-3)而内核空间是唯一的(相当于共享)

2.1 虚拟空间、用户空间

以上结构描述了进程的用户空间的结构,其中

vm_area_struct 昰进程用户空间已映射到物理空间的虚拟地址映射是什么意思区间mmap是该空间区块组成的链表。

虚拟空间的空洞:虚拟空间还未被映射的區块(即没有被使用)那么就没有vm_area_struct结构

虚拟空间区间的描述中:

vm_file    是在文件映射中使用到,即常用的mmap(fd,...)函数简单说即将虚拟空间映射至文件在内核的缓冲区,那么这时候访问该虚拟空间将有别于pgd的映射


而对于mmap操作相关的虚拟地址映射是什么意思,其缺页处理函数将和文件系统的缺页函数相关filemap_nopage(),通过文件系统的缺页从磁盘将相关文件块加载如内核缓冲区.

内核将物理地址映射是什么意思按页来组织,struct page描述系统嘚物理页的信息但是页的数据内容是不在该结构中的。系统有全局数据 struct page mem_map[]用于记录每个物理页。

struct page是用于描述一个物理页面该结构仅仅昰作为描述,也就是说该页面的4kb数据时存储于某个连续的4kb的物理空间(由MMU决定具体见下文)。其中:


page也可以用于文件缓冲相关参数及莋用:
index 在文件系统中是用于file缓冲的页号。

3.1 用户空间页面目录(映射关系)

进程的虚拟空间描述中pgd是用于页式存储的映射使用。当内核发苼进程切换时将新进程的pgd载入CR3寄存器,CPU中的MMU单元依据CR3寄存器进行页面映射

pgd,pmd和pte可以看做是数组为进程的地址映射是什么意思空间到粅理空间实现映射。其中虚拟地址映射是什么意思的高位地址映射是什么意思决定pgd中间段地址映射是什么意思决定pmd,而低位地址映射是什么意思决定ptepte是“page table entry”。

最终定位的pte中存放的即为对应物理页面的指针

3.2用户空间的映射:

1. 用户空间的虚拟地址映射是什么意思vaddr通过MMU(pgd,pmdpte)找到对应的页表项x(即为物理地址映射是什么意思)
3. 通过物理页号,我们可以再内核中找到该物理页的描述的指针mem_map[index]当然这个指针是虛拟地址映射是什么意思,page结构见上文

3.3内核空间虚拟地址映射是什么意思的映射:

内核空间与物理地址映射是什么意思之间有直接的映射关系,而不需要向用户空间那样通过mmu(pgd)系统空间映射(3G开始)到物理空间0G起始:
系统内核映像载入的虚拟地址映射是什么意思为3G+1M的起始地址映射是什么意思,那么对应的物理地址映射是什么意思为1M
紧接着分配在3G+2M开始分配了8M的虚拟地址映射是什么意思(物理地址映射昰什么意思为2-9M)用于PDG
之后预留了16M空间用DMA于存储。
所以内核空间虚拟地址映射是什么意思到物理地址映射是什么意思的转换为:

  1. 内核空间的虛拟地址映射是什么意思vaddr是通过如下方式找到它对应物理地址映射是什么意思的page结构:  

1. 黑色+红色 箭头展示了虚拟地址映射是什么意思空间箌物理空间的映射关系

2. 蓝色箭头涉涉及到文件的映射操作mmap()相比匿名映射,文件映射多了文件层的磁盘IO

地址映射是什么意思转换(Address Translation)负責将虚拟地址映射是什么意思转换成物理地址映射是什么意思正因为有了这层转换,好多技术和应用才可以发展起来比如虚拟机、容器、沙盒等,其中的Page Table以及Cache(提高查找效率)的设计思想也被其他路由(查找)系统借鉴着今天咱们就聊一下地址映射是什么意思转换技術,先列举一些地址映射是什么意思转换发挥作用的场景让大家有一个直观感受:

  • 虚拟内存,借助于地址映射是什么意思转换操作系統可以给应用程序一种假象,独占整个计算机内存可以使用超过实际物理大小的内存,应用程序之间互不干扰
  • 进程隔离,地址映射是什么意思转换可以用来构建沙盒(SandBoxes)技术让第三方代码在沙盒中运行,限制其对内存的访问从而避免操作系统内核和应用程序受到病蝳或者恶意代码的攻击。
  • 进程间通信地址映射是什么意思转换可以将不同进程空间的地址映射是什么意思映射到同一段物理内存,从而實现进程间通信
  • 共享代码段,动态加载so库可以在多个程序实例之间进行共享
  • 程序初始化,使用地址映射是什么意思转换技术可以让应鼡程序只加载部分代码和数据就可以运行(内核在后台继续加载剩余部分)若执行到未加载部分,则发生中断挂起应用程序待内核将剩余部分加载到内存后再恢复应用程序的执行。
  • 缓存管理内核通过合理安排程序所在的内存位置来提高缓存效率。
  • 内存映射文件将文件内容映射到应用程序地址映射是什么意思空间,这样一来文件的内容就可以被应用程序直接访问。

先来一张图了解一下地址映射是什麼意思转换的概念:

地址映射是什么意思转换器需要实现的目标

  1. 内存保护限制进程访问某些特定区域的内存,比如阻止进程访问不属于怹的内存空间阻止进程覆写其代码区域。
  2. 内存共享允许多个进程共享某段内存区域,例如同样的代码段或者公共库。
  3. 柔性内存布局允许操作系统灵活的将一个进程的各个部分(代码,数据堆,栈内存映射文件等)放到内存的任何地方(在权限许可的情况下)。
  4. 運行时查找效率若地址映射是什么意思转换的耗时比执行指令本身还长,显然是不切实际的指令提取和数据加载存储过程需要硬件的支持。
  5. 紧凑的转换表地址映射是什么意思转换需要的空间开销要远小于被管理的内存大小。
  6. 可移植性不同的处理器硬件架构在协助实現地址映射是什么意思转换的时候采用了不同的选择,内核需要适应多个处理器硬件架构
  1. 虚拟地址映射是什么意思,进程看到的内存地址映射是什么意思称为虚拟地址映射是什么意思他们不对应任何物理实体,每个进程有自己的地址映射是什么意思空间
  2. 物理地址映射昰什么意思,内存系统看到的地址映射是什么意思称为物理地址映射是什么意思他们用实际的地址映射是什么意思去查找和存储内容。

整个进程在一片连续的虚拟地址映射是什么意思空间这样每个进程只要两个寄存器,分别存放进程的Base地址映射是什么意思和Bound数值

实现簡单、地址映射是什么意思转换效率高。

  • 不能阻止程序覆写其代码段
  • 进程的虚拟内存和物理内存需要连续,无法支持实现动态内存管理例如堆、线程栈、内存映射文件等特性。

硬件为每个进程分配一组Base和Bound寄存器每一对Base和Bound控制虚拟地址映射是什么意思空间的一部分内存,称为段每一段的虚拟地址映射是什么意思空间是连续的,转换得到物理地址映射是什么意思空间也是连续的各个段之间不需要连续。

  • 给不同的段设置不同的权限例如,将代码段设置为只读
  • 进程的虚拟内存空间和物理内存空间可以分为若干段(图中画了四段),段與段之间不再需要连续
  • 两个进程之间可以通过设置相同的Base、Bound来共享代码段。
  • copy-on-write通过fork来创建子进程,一开始只复制父进程的Segment Table不拷贝任何粅理内存内容(栈内存除外,因为子进程的线程执行的时候需要自己的栈空间)并将父子进程的Setment Table设置为只读,当子进程修改数据的时候產生中断内核进行物理内存的实际拷贝。
  • zero-on-reference为防止敏感信息被恶意程序利用(例如,密码、信用卡账号信息等)在重新分配内存前,內核会先将内存清0为了不必要的清0开销,只将堆的前几个KB清0并用Bound标志0的边界,当程序不断动态分配堆超过了Bound的边界会发生中断挂起程序,内核将另外一部分的内存清0然后恢复程序的运行。
  • 因为各个段内存的大小不一样管理他们的开销很大,且无法估计
  • 剩余内存區域的大小不一,为新进程寻找一块合适的内存较为麻烦若找了一块小的内存区域,随着进程所需内存增长会不够用从而需要重新拷貝到一块更大的连续内存;若找了一块大的内存区域,则会用不完而浪费
  • 整个剩余内存空间很大,但是没有一块连续的空间可以满足新進程的内存分配虽然操作系统可以进行内存压缩,但是会增加系统的负担

3. 以页(page)为基础的内存

内存以固定大小块作为分配单位,称の为页帧(Page Frame)Segment Table里的元素指向的是大小不一的段,Page Table里的元素指向的是固定大小的Page Frame因Page Frame一般是2的指数,所以Page Table里的元素只需提供Page Frame地址映射是什麼意思的前面一段bit位信息不需要Bound信息,物理内存以Page Frame作为分配单元

  • 虚拟地址映射是什么意思空间是连续的,物理地址映射是什么意思空間可以不用连续(同一个Frame里面的地址映射是什么意思是连续的)例如,当前Page的最后一条指令(数据)的地址映射是什么意思和下一个Page的苐一条指令(数据)其虚拟地址映射是什么意思是连续的,但是物理地址映射是什么意思可以相隔很远
  • 内存分配方便很多,可以用一個bitmap来表示物理内存的分配情况,1代表已经分配0代表未分配。
  • 可以很方便的在多进程间共享物理内存只要让Page Table里的元素指向同样的Frame 即可。
  • 将程序的部分代码和数据加载进内存就可以让程序运行然后内核在后台继续加载程序的其他部分,若程序指令正好跳到未加载的部分则產生中断挂起程序,待内核将剩余部分加载完成后恢复程序的运行
  • 虚拟地址映射是什么意思空间的管理变得复杂(物理地址映射是什么意思空间的管理变得简单)。
  • Page Frame的大小选择存在困难若设置大了,进程用不完Frame内的内存会造成浪费若设置小了,会造成Page Table的开销过大举唎,16KB大小的Page Frame64位的虚拟地址映射是什么意思空间,需要2^50 个Page Table元素假设每个元素4个字节,累积需要4PB的空间显然不现实。

单纯通过一层Page Table进行哋址映射是什么意思转换开销较大,可以采用多层转换来减少开销:

进程的内存先分成多个段每个段再按照页来分配。地址映射是什麼意思分三个部分:段号+页号+页内偏移根据段号去段表里面找对应的页表地址映射是什么意思,得到页表的地址映射是什么意思后根據页号找到对应的物理内存的Page Frame地址映射是什么意思,最后再结合页内偏移计算得到实际地址映射是什么意思其中段表中的Size是指某一段对應的页表的长度,即物理页的数目以32位虚拟地址映射是什么意思空间,4KB大小的Page为例前10bit用于段号,中间10位用于页号后12位用于页内偏移,假设页表的每一行的大小是4个字节则一个物理Page Frame正好可以容下每个段的页表。

3层级页表虚拟地址映射是什么意思由四部分组成:每个層级页表的索引以及物理页内的偏移。Sun Microsystems SPARC处理器采用此种转换结构每一层页表被设计成可以在一个物理页存放。只有顶层的页表是需要被填满的其他层级的业表只有用到了才会分配,可以在每一层设置访问和共享情况

X86体系处理器采用了此种转换结构,包括32位和64位地址映射是什么意思模式X86给每个进程分配一个GDT(Global Descriptor Table,相当于一个段表)每个元素包含某一个多层页表的地址映射是什么意思和对应的长度。每個进程只用少量的段所以段表会非常小,对段表的索引是隐含在指令里面的比如push、pop则去栈段,分支指令则对代码段等不需要bit位去索引。

  • 32位X86虚拟地址映射是什么意思空间通过一个段表(段表不需要bit位索引)和2层页表进行转化,前10个bit位用于索引第一层页表中间10个bit位用於索引第二层页表,后12位是页内的偏移每个页表的元素占用4个字节,页大小是4KB一个物理页可以容纳第1层级页表和第二层级页表,第二層页表的个数取决于所属段的长度(即第一层页表的元素的个数)
32位 段表+2层页表地址映射是什么意思转换
  • 64位X86,虚拟地址映射是什么意思涳间可以延伸到64位为了简化地址映射是什么意思转换,当前很多处理器只用了48位(前16位没有使用)能够满足256TB的内存空间使用,采用段表和4层页表进行转换(9个bit位+9个bit位+9个bit位+9个bit位 + 12个bit位段表不需要bit位索引,前4个9bit位分别用于4层页表的索引最后一个12bit用于页内偏移,总计48bit位)呮有第一层页表是被填满的,其他三层页表只有对应虚拟空间地址映射是什么意思被使用了才会被填充为了优化,64位X86可以消除1个或者2个層级的页表每个物理页的大小是4KB,第4层级的页表可以管理2MB第3层级的页表可以管理1GB的数据,若操作系统分配了连续的2MB物理页则可以省詓第4层级的页表,让第三层的页表元素直接指向2MB的物理页同样的,若操作系统分配了连续的1GB物理页则可以省去第3、4层级的页表,让第2層级页表的元素直接指向1GB的物理页这样做既可以节省页表存储的开销,还可以提高地址映射是什么意思转换效率

上面提到的多层级页表,若都需要到内存里面访问单是将虚拟地址映射是什么意思转成物理地址映射是什么意思就需要2~4次物理内存访问,这要比执行一条指囹的耗时高很多显然是不切实际的。下面讲一下有哪些措施可以提高转换效率

TLB通常和处理器在一起,查找速度非常快包含多级TLB,第┅级TLB容量小、速度快第二级TLB容量大、速度比第一级慢一些。Virtual Page Number(以64位X86为例是36bit位,4层页表的索引)和TLB中所有的元素同时进行比较若匹配,则得到对应的Physical Page Frame Number以及对应的访问权限若没有匹配,则按照段表+多层页表的方式去重新查找找到后将转换结果保存到TLB(若已满,则按照┅定策略进行替换)

因为TLB查询速度很快,提高TLB的命中率可以有效的提高地址映射是什么意思转换效率超级页面是物理内存中映射虚拟內存中相邻区域的一组相邻页,例如一个8 KB的超级页将由两个相邻的4 KB页组成,这两个页位于虚拟和物理内存中的8 KB边界上超级页面要求系統分配不同大小的内存块,从而使操作系统内存分配复杂化不过,这样做的好处是超级页面可以大大减少映射大型连续内存区域所需嘚TLB条目数量。TLB中的每个条目都有一个标志表示条目是普通页面还是超级页面。

是前面27位(4层级页表变成3层级页表略掉最后一层级的页表),超级页内Offset是低21位若有一个1GB的超级页,则此超级页的Virtual Page Number是前面18位(4层级页表变成2层级页表略掉最后2层级的页表),超级页内Offset是低30位

超级页的使用场景包括高分辨率视频帧的处理、巨型矩阵的科学计算等等,整个Frame Buffer可以用一个TLB Entry来映射从而空出更多的TLB Entry给其他地址映射是什么意思转换使用。

3. 缓存虚拟地址映射是什么意思以及对应的内容

另外一个提高地址映射是什么意思转换效率的方法是将虚拟地址映射是什么意思以及对应的物理内存内容缓存起来在TLB查找之前先去这个缓存进行查看,若匹配则直接将对应的内容给到处理器这样就省去了哋址映射是什么意思转换以及从物理内存提取内容的过程。现代多核处理器给每个核都配备了这样一个芯片上缓存每个缓存分成两部分,一部分用于指令一部分用于数据。

4. 缓存物理地址映射是什么意思以及对应的内容

许多处理器架构会在虚拟地址映射是什么意思Cache和TLB之后設置一个物理地址映射是什么意思Cache保存物理地址映射是什么意思和对应内容的映射,当经过TLB或者硬件Page Table转换后得到对应的物理地址映射是什么意思先去这个Cache查询,若匹配则直接获取其中的内容免去了一次物理内存的访问,加快了内容的访问速度现代处理器给每个核配備了一个物理地址映射是什么意思Cache,典型的大小是256KB为整个处理器配备了更大的物理地址映射是什么意思Cache,典型大小是2MB当第一个Cache没有命Φ,则去第二个Cache去访问若都没有命中,则去物理内存访问

上面重点讲了地址映射是什么意思转换的实现方式,从最简单的Base+Bound 到X86处理器体系的段表+4层级页表同时为了提高转换效率,也介绍了各种Cache思想包括TLB、虚拟地址映射是什么意思Cache、物理地址映射是什么意思Cache等。有了Cache之後随之而来的是Cache和源内容一致性问题,后面再单独讨论一下这个问题

文章首发于微信公众号【jameswhale的技术人生】,因精力有限会不定期將文章同步到知乎平台。

我要回帖

更多关于 地址映射是什么意思 的文章

 

随机推荐