面试中常被问到的(14)虚存管理和虚拟地址空间

Posted AllenSquirrel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试中常被问到的(14)虚存管理和虚拟地址空间相关的知识,希望对你有一定的参考价值。

虚拟内存技术使得每一个进程在运行过程中,始终都是显式独自占用当前系统内存资源,事实上,所有进程共享同一个物理内存,每一个进程只把自己目前需要的虚拟内存空间映射在物理内存上,此过程内核并不会立即把虚拟内存对应位置的程序数据和代码拷贝到物理内存中,只是建立一种虚拟映射关系,程序运行时通过此映射关系动态拷贝数据。

malloc也是内核为其分配虚拟内存,为这块虚拟内存对应的页表项做相应设置,当进程真正访问到此数据时,才可触发缺页异常

  • 虚存优点:

(1)虚拟内存技术扩大了各自进程的地址空间

(2)每个进程运行在各自的虚拟地址空间,互相不干扰对方。虚拟内存为特定的内存地址提供写保护。可以防止代码或数据被恶意篡改

(3)公平分配内存,采用虚拟内存之后,每个进程相对于具有相同大小的虚存空间

(4)进程通信,可以采用虚存共享的方式

(5)不同进程使用相同代码时,只需要在物理内存上存一份,各自进程将其虚拟内存映射过去即可,比如库函数,头文件的调用等,可以节省物理内存空间

(6)内存中可以保留多个进程,当一个进程等待在等待数据读入内存的过程中,可以将cpu资源交给另外一个进程使用,提高并发性(时间片轮转)

(7)需要分配连续存储空间时,只需要在虚拟内存空间上分配连续空间,而不需要在实际物理内存上开辟同样连续的空间,可以组织物理内存上内存碎片使用,实现离散式存储

  • 虚存缺点:

(1)虚拟内存的管理需要建立数据结构,数据结构需要额外内存空间

(2)虚拟地址到物理地址的转换,增加了指令的执行时间

(3)页面的换入换出需要通过磁盘IO来完成,增加耗时

(4)如果页表中只有一部分数据,会浪费内存

  • 虚拟内存管理方式:

分段式存储(段号+段内偏移)

分页式存储(页号+页内偏移)

段页式存储(先分段再分页)

以上是关于面试中常被问到的(14)虚存管理和虚拟地址空间的主要内容,如果未能解决你的问题,请参考以下文章

面试中常被问到的(12)函数调用执行过程

面试中常被问到的(17)多线程及多进程优缺点

Linux运维面试中常被问到的两个shell脚本

Linux运维面试中常被问到的两个shell脚本

面试中常被问到(12)进程与线程的区别

面试中常被问到的(21)TCP/UDP如何保持可靠性