Linux为什么要有大页内存?为什么DPDK要求必须要设置大页内存?这都是由系统架构决定的,系统架构发展到现在,又是在原来的基础上一点点演变的。一开始为了解决一个问题,大家设计了一个很好的方案,随着事物的发展,发现无法满足需求,就在原来的基础上改进,慢慢的变成了现在的样子。不过技术革新一直在进行,包括现在。
物理内存 Physical address
物理内存就是电脑的内存条,上面的每一个方块就是存储芯片,芯片中还有颗粒。访问数据的时候,会使用各种技术,尽可能从多个内存条,每个内存条的多个存储芯片获取数据,这样多通道,并发大,速度更快。
虚拟内存 Linear address (also known as virtual address)
程序运行在操作系统上,不可能直接访问物理内存。一是太复杂,需要自己管理内存,哪些被其他进程占用了,哪些可以用,如果连续空间不够,如何拼接等;二是不安全,用户可以直接访问到其他进程的数据。所以操作系统在后续增加了虚拟内存的概念。
每个进程看到的都是整个可用内存,比如4G,所有进程看到的都是4G,自己进程维护一张表,当进程访问内存时,只能访问到虚拟内存表,由操作系统再映射到具体的物理内存。这样的好处除了解决了上面的问题,还有几个优点:一是系统同一管理,更合理,可以做更多优化,比如同一块数据多个进程读取,只需要在内存保存一份即可,节省了空间(类库的加载);二是程序申请内存,并不一定会使用,或者说不会立马使用,那么系统可以不分配物理内存,当程序真正访问内存时,触发中断,系统再映射到物理内存,节省资源;三是程序访问的都是连续资源,具体内存分配是由系统管理,简化了开发。
标签:大页,访问,内存,Linux,进程,虚拟内存,物理 From: https://www.cnblogs.com/koouleu/p/17437128.html