linux 用户/内核空间分配原理,修改方法

32位Linux系统为例,4GB的地址空间通常被分为:

  • 3GB 用户空间
  • 1GB 内核空间

这种分配方式被称为3/1分割(3G/1G split)。

修改分配大小

Linux内核提供了一个启动参数 mem 来调整这个分割。例如:

  • 使用 mem=3G 会将用户空间限制在3GB
  • 使用 mem=2G 会将用户空间限制在2GB,给内核空间更多内存

修改这个参数,你需要编辑bootloader的配置文件(如GRUB的配置),并在内核启动参数中添加相应的 mem 选项。

3/1分割的原因

The 3GB/1GB split in 32-bit Linux systems is based on several considerations:1. User Space Needs: Most applications run in user space and benefit from having a larger address space available.2. Kernel Space Efficiency: 1GB is usually sufficient for kernel operations in most scenarios.3. Balance: This split provides a balance between user and kernel needs for a wide range of use cases.4. Historical Compatibility: Many applications were designed with the assumption of having close to 3GB of addressable space.5. Performance: This split allows for efficient kernel entry/exit without requiring a complete TLB (Translation Lookaside Buffer) flush.6. Direct Memory Access (DMA): The 1GB kernel space allows for easier management of DMA operations, especially for devices that can only address 32-bit memory spaces.However, this split isn't always optimal:- For systems with large amounts of RAM and running memory-intensive kernel operations (e.g., database servers), a larger kernel space might be beneficial.
- For systems primarily running large user-space applications, a larger user space could be advantageous.This is why Linux allows for adjusting this split through boot parameters, enabling system administrators to optimize memory allocation based on specific use cases.

malloc最大可以申请的堆内存大小

shell中输入 ulimit -v可以查询malloc可以申请的最大内存大小。
大多数系统会将单个进程的最大内存限制设置得比3GB小,通常在2GB左右,以保留一些地址空间用于其他目的。原因如下:

  • 3GB是整个用户空间的大小,但并非所有这些空间都可用于单个进程。
  • 一些地址空间被用于加载共享库、栈、环境变量等。
  • 实际可用的内存还受到系统总内存和其他运行进程的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQUID - 形状条件下的基于分子片段的3D分子生成等变模型 评测

SQUID 是一个形状条件下基于片段的3D分子生成模型,给一个3D参考分子,SQUID 可以根据参考分子的形状,基于片段库,生成与参考分子形状非常相似的分子。 SQUID 模型来自于 ICLR 2023 文章(2022年10月6日提交)&…

vue+watermark-dom实现页面水印效果

前言 页面水印大家应该都不陌生,它可以用于验证数字媒体的来源和完整性,还可以用于版权保护和信息识别,这些信息可以在不影响媒体质量的情况下嵌入,‌并在需要时进行提取。‌本文将通过 vue 结合 watermark-dom 库,教大…

OpenCV 像素操作—证件照换底色详细原理 C++纯手写实现

文章目录 总体步骤1.RGB转HSV2.找出要换的底色3.取反,黑白颠倒4.将原图像的非背景部分复制到新背景上 完整代码1.C纯手写版2.官方API版本 总体步骤 1.RGB转HSV 为什么一定要转为HSV 颜色空间? 将图像从BGR颜色空间转换为HSV颜色空间是因为HSV颜色空间更…

redis+spring面试题

redis使用场景 缓存热点数据分布式锁存储token存储短信验证码计数器全局唯一数排行榜限流购物车关注粉丝 缓存失效 缓存穿透 缓存空结果布龙过滤器 缓存击穿 全局锁设置永不过期 缓存雪崩 设置高可用集群设置不同的过期时间本地二级缓存,限流加降级 数据一致性…

nginx基本原理

进程模型 当nginx启动之后,会有一个master进程和多个worker进程。默认是一个worker进程。 master进程的作用:接收来自外界信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程在异常情况下退出后&am…

C#实现数据采集系统-实现功能介绍

系统介绍 我们这里主要使用C#( .Net 6)来实现一个数据采集系统,从0到1搭建数据采集系统,从系统分析,功能拆解,到一一实现 数据采集 数据采集是企业信息化和数字化转型过程中的关键环节,它涉及到从生产设备、传感器…

jupyter_contrib_nbextensions安装失败问题

目录 1.文件路径长度问题 2.jupyter不出现Nbextensions选项 1.文件路径长度问题 问题: could not create build\bdist.win-amd64\wheel\.\jupyter_contrib_nbextensions\nbextensions\contrib_nbextensions_help_item\contrib_nbextensions_help_item.yaml: No su…

【艺术向】【素描创作记录】《如何为你的红颜知己创作一幅画像(之二)》

写在前面 之前分析过类似的创作过程,见博客【艺术向】【素描创作记录】《如何为你的红颜知己创作一幅画像》 本人业余时间修习素描多年,在此撰文记录《如何为你的红颜知己创作一幅画像(之二)》,博得对方好感&#xff…

Tracy 小笔记:微信小程序 mpx 雷达图的实现

使用文档: https://www.kancloud.cn/xchhhh/wx-chart/399337 https://github.com/xiaolin3303/wx-charts https://gitee.com/mirrors/wx-charts/#wx-charts 参数说明: https://github.com/xiaolin3303/wx-charts/issues/56 下载 dist 里的 wx-charts-…

替代JSON

确实存在多种数据存储格式,每种格式都有其特定的优势和适用场景。如果你正在寻找一种更易于人类阅读和编辑的数据格式,以下是一些替代 JSON 的选项: YAML (YAML Aint Markup Language): YAML 是一种直观的数据序列化格式,旨在使人…

C++常见问题

一、C入门基础 1.1、函数重载 函数重载允许在同一作用域内定义多个同名函数,只要这个函数的参数列表(即参数的数量,类型或者顺序不同) 如何支持:程序经过编译后,编译器会对程序中的函数按一定规则进行重…

设计模式-Git-其他

目录 设计模式? 创建型模式 单例模式? 啥情况需要单例模式 实现单例模式的关键点? 常见的单例模式实现? 01、饿汉式如何实现单例? 02、懒汉式如何实现单例? 03、双重检查锁定如何实现单例&#xff…

封装MAVSDK为JAR包并导出给其它Android工程用完整示例

效果: 未解锁状态 已执行解锁指令 已执行起飞指令 飞行中 已执行降落指令 已执行返航指令 实现步骤: 1.准备PX4容器并启动:

ip地址是电脑还是网线决定的

在数字化时代的浪潮中,网络已经成为了我们日常生活和工作不可或缺的一部分。当我们谈论网络时,IP地址无疑是一个核心的概念。然而,关于IP地址的分配和决定因素,很多人可能存在误解。有些人认为IP地址是由电脑决定的,而…

JMeter数据库连接操作及断言

一、数据库操作 应用场景: 接口自动化数据校验:用于验证接口返回的数据与数据库中的数据是否一致。特殊业务:处理一些与数据库相关的特殊业务逻辑。性能测试:测试数据库的性能,如查询、更新等操作的响应时间。 连接数…

springboot nacos的各种注解、手动操作监听配置变化(监听指定DataId/监听任何变化)

文章目录 springboot nacos监听配置变化(监听指定DataId/监听任何变化)监听任何配置变化Nacos注解NacosConfigurationPropertiesNacosValueNacosConfigListenerNacosInjectedNacosConfigServiceNacosNamingService springboot nacos监听配置变化&#xf…

QT--事件(丰富操作,高级功能)

一、事件 1.事件与信号的区别 事件来自外部,是随机发生的。信号来自内部,是主动发生的。有点像外中断和内中断的区别。事件:适用于处理系统级别的输入和状态变化,种类繁多,能够应对复杂的交互需求。信号/槽&#xff…

二分查找 | 绝对差值和

题目&#xff1a;1818. 绝对差值和 给你两个正整数数组 nums1 和 nums2 &#xff0c;数组的长度都是 n 。 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|&#xff08;0 < i < n&#xff09;的 总和&#xff08;下标从 0 开始&#xff09;。 你…

中国 X86 CPU 技术源自何方

注&#xff1a; 原文发布于 2017 年&#xff0c;两篇合二为一。未与作者沟通&#xff0c;侵权&#xff0c;立删。 导语&#xff1a; Intel 对 X86 的授权有着极为严格的限制&#xff0c;那么上海兆芯的 X86 芯片技术到底从何而来&#xff1f;ZX-C 目前的短板在哪里&#xff1f;…

pytorch 46 将ASpanFormer模型导出onnx运行

ASpanFormer是一个2022年8月份发布的算法,其主要步骤与LoFTR模型类似,因此无法导出为onnx模型。根据ASpanFormer论文中的数据与效果图,可以确定AsPanFormer是可以作为一个比SP+SG更为有效的方案,其在标准数据集上的效果优于SP+SG,在速度上远超SP+SG,与LoFTR接近;在预测点…