首页 > 系统相关 >Linux为什么要有大页内存

Linux为什么要有大页内存

时间:2023-05-27 18:34:43浏览次数:47  
标签:大页 访问 内存 Linux 进程 虚拟内存 物理

Linux为什么要有大页内存?为什么DPDK要求必须要设置大页内存?这都是由系统架构决定的,系统架构发展到现在,又是在原来的基础上一点点演变的。一开始为了解决一个问题,大家设计了一个很好的方案,随着事物的发展,发现无法满足需求,就在原来的基础上改进,慢慢的变成了现在的样子。不过技术革新一直在进行,包括现在。

物理内存 Physical address

物理内存就是电脑的内存条,上面的每一个方块就是存储芯片,芯片中还有颗粒。访问数据的时候,会使用各种技术,尽可能从多个内存条,每个内存条的多个存储芯片获取数据,这样多通道,并发大,速度更快。

虚拟内存 Linear address (also known as virtual address)

程序运行在操作系统上,不可能直接访问物理内存。一是太复杂,需要自己管理内存,哪些被其他进程占用了,哪些可以用,如果连续空间不够,如何拼接等;二是不安全,用户可以直接访问到其他进程的数据。所以操作系统在后续增加了虚拟内存的概念。

每个进程看到的都是整个可用内存,比如4G,所有进程看到的都是4G,自己进程维护一张表,当进程访问内存时,只能访问到虚拟内存表,由操作系统再映射到具体的物理内存。这样的好处除了解决了上面的问题,还有几个优点:一是系统同一管理,更合理,可以做更多优化,比如同一块数据多个进程读取,只需要在内存保存一份即可,节省了空间(类库的加载);二是程序申请内存,并不一定会使用,或者说不会立马使用,那么系统可以不分配物理内存,当程序真正访问内存时,触发中断,系统再映射到物理内存,节省资源;三是程序访问的都是连续资源,具体内存分配是由系统管理,简化了开发。

标签:大页,访问,内存,Linux,进程,虚拟内存,物理
From: https://www.cnblogs.com/koouleu/p/17437128.html

相关文章

  • Oracle Linux 8.8 发布 - Oracle 提供支持 RHEL 兼容发行版
    OracleLinux8.8发布-Oracle提供支持RHEL兼容发行版OracleLinuxwithUnbreakableEnterpriseKernel(UEK)&RedHatcompatiblekernel(RHCK)请访问原文链接:https://sysin.org/blog/oracle-linux-8/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgOracle......
  • Oracle Linux 9.2 发布 - Oracle 提供支持 RHEL 兼容发行版
    OracleLinux9.2发布-Oracle提供支持RHEL兼容发行版OracleLinuxwithUnbreakableEnterpriseKernel(UEK)&RedHatcompatiblekernel(RHCK)请访问原文链接:https://sysin.org/blog/oracle-linux-9/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgOracle......
  • 记录一个命令 可以在linux很方便的安装一些软件
    小鱼的一键安装系列wgethttp://fishros.com/install-Ofishros&&.fishros一键安装:ROS(支持ROS和ROS2,树莓派Jetson)贡献@小鱼一键安装:VsCode(支持amd64和arm64)贡献@小鱼一键安装:github桌面版(小鱼常用的github客户端)贡献@小鱼一键安装:nodejs开发环境(通过nod......
  • Linux篇三
    linux常用指令指令运行级别运行级别说明:0:关机1:单用户【找回丢失密码】2:多用户状态没有网络服务3:多用户状态有网络服务4:系统未使用保留给用户5:图形界面6:系统重启常用运行级别是3和5,也可以指定默认运行级别,后面演示**实例:**init0就是关机在centos7以前,letc/inittab文件......
  • 使用vscode远程连接Linux环境写C程序
    1. 下载安装vscode2. 在扩展商店搜索chinese安装中文语言包, 相当于汉化vscode, 应该需要重启生效3. 安装配置插件RemoteSSH4. 连接远程主机, 在资源管理器中可以管理文件5. 试着创建一个文件, 以.c作为扩展名, 会自动下载插件c/c++扩展包6. 写好的C程序, 可以......
  • Linux基础(六)
    推荐步骤:管理Linux操作系统,添加新的硬盘40G创建三个分区,第一个分区和第二个分区大小5G,第一个分区格式化XFS文件系统,第二个分区为EXT4文件系统,将两个文件系统分别手动挂载到/db1和/sdb2目录上,查看挂载的分区在添加磁盘创建第三个分区大小5G,将第三个分区转换为swap分区,进行格式化扩展......
  • 记一次redis数据库RDB内存事故排查处理
    事故表现:redis状态正常,但客户端不能使用,定位日志结论,redis内存申请不通过,导致中断用户操作解决办法1.解锁相关配置(不能解决根本问题,根本原因来源于开发使用姿势不对)两种解决办法一.打开系统层始终同意分配内存(不建议)编辑文件/etc/sysctl.conf添加vm.overcommit_memory=1内核参......
  • Lupin的linux学习路(ubuntu)
    Lupin的linux的学习路(Ubuntu)安装Ubuntu双系统制做一个系统引导u盘(到Ubuntu官网下载镜像,使用rufus镜像写入软件将镜像写入到u盘中,写入成功后,引导u盘制做完成)。在Windows系统中分出200G的空余磁盘空间安装Ubuntu系统。电脑关机,插上引导u盘,进入电脑引导选项,进入Ubuntu安......
  • java面试(9)内存泄露
    1:Java中也存在栈内存泄露的情况?  在Java中,栈内存主要用于存储方法调用和本地变量。与堆内存不同,栈内存的分配和释放是由编译器和虚拟机自动处理的,通常不需要手动释放。  然而,如果在编写代码时出现一些问题,可能会导致栈内存泄露。以下是一些可能引起栈内存泄露的常见情......
  • Linux 大页内存 Huge Pages 虚拟内存
    Linux为什么要有大页内存?为什么DPDK要求必须要设置大页内存?这都是由系统架构决定的,系统架构发展到现在,又是在原来的基础上一点点演变的。一开始为了解决一个问题,大家设计了一个很好的方案,随着事物的发展,发现无法满足需求,就在原来的基础上改进,慢慢的变成了现在的样子。不过技术革新......