为什么linux kernel默认的页面大小是4K,而不是4M或8M?

2023-11-16

相信很多人在看内核内存管理部分的时候,都有这样一个疑问,为什么物理页面的大小选择4K,而不是大一些或者小一些呢?
这个问题没有固定的答案,仁者见仁智者见智,每个人的关注点不一样。所以这篇文章不是说给出一个固定的答案,更多的只是一篇讨论性的文章。
内核的页面大小首先跟CPU有关,不同的架构支持的页面大小也不相同,但有一个共同点,那就是肯定支持4K的页面大小。为什么处理器在设计的时候会选择4K,而不是其他,这个只有熟悉CPU历史的人才能给出答案,本人才疏学浅,回答不上来,有兴趣的自己找一找。当然处理器的设计者在考虑页面大小的时候,也不是凭空就选择了这个大小,除了历史因素,肯定综合了考虑了大页面、小页面的优缺点,所以这里主要列出这些优缺点,通过这些比较来发现内核为什么将默认的页面大小选择为4K。
现在更多争论的是大页面还是维持现在的页面4K大小,所以小页面的情况我们就不考虑了,通过比较前两者也可以得出小页面的情况。支持大页面的人通常认为大页面有以下好处:
1、减小page table占用的内存。
假设内存一定的话,页面大小越大,管理页面占用的内存也越小。现在内核中每个页面假设是4K的话,这4K不是全都可用,还有一部分用作struct page(大约是64bytes),如果是2.6.32的话,每个页还有一个page_cgroup(32bytes),也就是说内存大小的2.3%(96/4096)会被内核固定使用。如果页面大小是4M的话,这个比率大约是0.0006%。假设内存时64G的话,页面大小是4K
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么linux kernel默认的页面大小是4K,而不是4M或8M? 的相关文章

  • 关于linux内核学习的误区以及相关书籍介绍

    第一篇 先说句正经的 其实我没资格写这篇文章 因为自己也就一两个月以来才开始有所领悟的 因此 这里与其说是关于linux内核学习的经验 不如说是自己的教训吧 希望不要扔鸡蛋砸我 常常有人问 我想学习内核 需要什么基础吗 linus torv
  • ext4 delay allocation之ext4_writepages页回写源码剖析

    概述 ext4 write写入pagecache之后 再合适的时机会回写到磁盘 ext4文件系统中是通过ext4 writepages写入磁盘 本来将在源码角度分析该过程 建议先参照ext4 delay allocation数据结构 ngi
  • 2.6内核的通用的编译步骤

    2 6内核的通用的编译步骤 1 下载源码并解压 虽然我们可以将内核源码存放在任何自己找得到的地方 但通常还是会将内核源码下载到 usr src目录并解压 cd usr src wget ftp kernel org pub linux ke
  • local_irq_save和 local_irq_disable

    如果你要禁止所有的中断该怎么办 在2 6内核中 可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理 这两个函数定义在
  • 趣谈操作系统原理,存储管理之页式、段式、段页式存储

    一 概述 非连续分配管理方式允许一个程序分散地装入到不相邻的内存分区 根据分区的大小是否固定分为分页式存储管理方式和分段式存储管理方式 分页存储管理方式中 又根据运行作业时是否要把作业的所有页面都装入内存才能运行分为基本分页式存储管理方式和
  • 深入解析Linux进程调度器-CPU负载

    说明 Kernel版本 4 14 ARM64处理器 Contex A53 双核 使用工具 Source Insight 3 5 Visio 1 概述 CPU负载 cpu load 指的是某个时间点进程对系统产生的压力 来张图来类比下 参考U
  • linux内核分析:进程通讯方式

    信号 一旦有信号产生 我们就有下面这几种 用户进程对信号的处理方式 1 执行默认操作 Linux 对每种信号都规定了默认操作 例如 上面列表中的 Term 就是终止进程的意思 Core 的意思是 Core Dump 也即终止进程后 通过 C
  • Android:在争议中逃离Linux内核的GPL约束

    原文地址 http tech sina com cn s s 2012 05 28 09447177318 shtml 为这个题材起名 我思考了许久 GPL 是著名的开放源代码许可协议 Linux 内核开源项目正是在 GPL 的庇佑之下 十
  • 第十三章 网络命名空间(内核源码实现)--基于Linux3.10

    下载地址 http download csdn net detail shichaog 8620701 有两篇翻译博文 Lxc之二 网络设置 和 linuxnamespace 之使用 LXC文章中关于网络的设置是从用户空间配置的 从该文章可
  • 编译Linux内核时出现“ncurses-devel”错误

    通常在安装完Linux系统后 在编译kernel使用make menuconfig时 可能会出现如下错误 Unable to find the ncurses libraries or the required header files m
  • netpoll浅析

    netpoll只是一种框架和一些接口 只有依赖这个框架和接口实现的netpoll实例 netpoll才能发挥它的功能 类似于kernel中的vfs vfs本身并不会去做具体的文件操作 只是为不同的文件系统提供了一个框架 netpoll不依赖
  • 一文让你彻底了解Linux内核文件系统

    一 文件系统特点 文件系统要有严格的组织形式 使得文件能够以块为单位进行存储 文件系统中也要有索引区 用来方便查找一个文件分成的多个块都存放在了什么位置 如果文件系统中有的文件是热点文件 近期经常被读取和写入 文件系统应该有缓存层 文件应该
  • 学习linux内核的经典书籍介绍

    有关内核的书籍可以用汗牛充栋来形容 不过只有一些经典的神作经住了考验 首先是5本久经考验的神作 个人概括为 2 1 2 第一个2是指2本全面讲解内核的书 中间的1指1本讲解驱动开发的书 后面的2则指2本有关内核具体子系统的书 你是否想到了某
  • linux内核对于指令异常的处理

    1 处理流程 以arm64来介绍一下流程 如果在用户层发生指令异常时 首先进入入口el0 undef arch arm64 kernel entry s el0 undef Undefined instruction enable inte
  • 【xenclient】 使用小结 -- ubuntu的千百bug

    说道多系统 不能不提下ubuntu 以前redhat似乎是linux的领头羊 但在桌面领域 跟windows还是差得太远 在linux最弱的桌面特性上 ubuntu算是第一个以桌面特效全面超越windows的系统了 因此我的系统 除了保留做
  • MPC8314 (e300核) uboot 调试

    历经2个多月 完成了MPC8314最小系统 uboot 及Linux内核和根文件系统的调试 这是我第一次从头开始做小系统和内核的移植工作 虽然调试的比较辛苦 但是收获还是很多的 下面就介绍一下调试的过程和一些原理性的东西 1 MPC8314
  • Linux内核--内存管理

    内存管理单元MMU memory management unit 的主要功能是虚拟地址 virtual memory addresses 到物理地址 physical addresses 的转换 除此之外 它还可以实现内存保护 memory
  • linux设备驱动makefile入门解析

    以下内容仅作参考 能力有限 如有错误还请纠正 对于一个普通的linux设备驱动模块 以下是一个经典的makefile代码 使用下面这个makefile可以 完成大部分驱动的编译 使用时只需要修改一下要编译生成的驱动名称即可 只需修改obj
  • 第九章 tcp拥塞控制--基于Linux3.10

    下载地址 http download csdn net detail shichaog 8620701 Linux提供丰富的拥塞控制算法 这些算法包括Vegas Reno HSCTP High Speed TCP Westwood BIC
  • Linux进程管理:deadline调度器

    一 概述 实时系统是这样的一种计算系统 当事件发生后 它必须在确定的时间范围内做出响应 在实时系统中 产生正确的结果不仅依赖于系统正确的逻辑动作 而且依赖于逻辑动作的时序 换句话说 当系统收到某个请求 会做出相应的动作以响应该请求 想要保证

随机推荐

  • 关于RAM溢出的解决方法 keil 5 L6220E:RW_IRAM1

    keil 5 L6220E RW IRAM1 在做bootloader时候遇到了这样的报错 xxxx xxxx axf Error L6220E Execution region RW IRAM1 size 60420 bytes exce
  • 数据库设计基本步骤 / 数据库设计原则

    基本步骤 按照规范设计的方法 同时考虑数据库及其应用系统开发的全过程 可以将数据库设计分为以下 6 个阶段 需求分析阶段 需求分析是数据库设计的第一步 也是整个设计过程的基础 本阶段的主要任务是对现实世界要处理的对象 公司 部门及企业 进行
  • MBED移植日记:gpio_api移植(基于STM32F107RC)

    本文是继MBED串口API移植的又一篇系列文章 前阵子忙着赶项目 移植完了却没来得及写成文章来分享 今天来补上 一来可以温故知新 二来也可以献出自己的一点微薄之力 写的不好 移植的也不一定好 请大家多多指教 本文的gpio api模块与mb
  • WPF 更改数据源时通知表格 更改List通知DataGrid

    用到集合ObservableCollection 此集合微软的解释为 动态收集数据并通知到显示的控件 无论数据是刷新 删除 增加 更新 新建Model 注意看里面的大小写 using System using System Collecti
  • Elelment-ui(登录页面开发详细方法)

    1 使用浏览器进到element ui官网 登页面开发 登录代码如下
  • 释万行上师:罕见的修行真相揭秘【全】

    辟谷 的问题 当修到一定程度 胃气充满了以后 就不需要食物了 有的是短期不吃 也有的长期不吃 我们五脏六腑的元气 都是通过胃产生的 大家都知道 我们从嘴里吃进的食物 首先是贮存到了胃里面 通过胃的研磨 胃液的消化 再输送到小肠 营养在小肠被
  • 领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!

    目录 如何用 python ddt excel 实现接口自动化测试 一 准备工作 1 安装 python 环境 2 安装相关库 二 设计测试 1 编写 excel 文件 2 封装 excel 操作 3 封装 requests 请求 三 执行
  • java.lang.reflect.InvocationTargetException什么意思

    一般就是转换的问题 在SQL用别的list lt gt 接收的时候会报错
  • Financial Crisis【点双连通分量】

    题目链接 HDU 3749 你以为学了Tarjan会写几个边双就真的理解什么是双连通分量了吗 我原来真的不懂什么叫做点双BCC 不过这都没有关系 解决了这个问题之后 我终于知道了什么叫做点双连通分量了 这是一个绝对绝对经典的问题 首先讲一下
  • 时间序列分析 - ARMA/ARIMA参数估计及模型预测

    整体处理流程如下 平稳化处理 根据ADF单位根检验看序列是否平稳 对于非平稳序列可以进行差分 对数等等 对于得到的平稳序列需要检测是否为白噪声 如果是就没有必要再分析了 白噪声检验 1 由于白噪声序列期望为0 方差固定 因此会在y 0上下小
  • 菜鸟的java学习-------第一篇初识java

    初识Java 前言 做了快三年的C 了 对于C 没什么可说的 这门语言的效率比其他语言高上许多 但是这门语言及其难学 及其难以维护 开发成本很大 比如说java三个月能做成的项目 C 可能就要半年 甚至更长时间 基于C 的难开发 难维护的语
  • 解决Onedrive经常无法访问的问题

    在国内经常因为各种原因访问不了OneDrive的访问 可以通过下面的方式解决 添加两个DNS记录到hosts文件 C Windows System32 drivers etc 134 170 108 26 onedrive live com
  • PyTorch学习日志_20201031_线性模型

    日期 2020 10 31 主题 PyTorch入门 内容 学习如何构建线性模型解决问题 问题 学习时长 x 与考试成绩 y 的关系 学习时长 x 考试成绩 y 1 2 2 4 3 6 4 思路 具体代码如下 import numpy as
  • Qt控制台输入输出

    Qt控制台输入输出 在 pro 工程文件 中添加 CONFIG console include
  • 类模板与友元函数

    写在前面 学习黑马C 视频总结的知识点 一 类模板中全局函数类内实现 template
  • 关于差分信号

    对差分信 VDS 号而言 对其影响最大的因素是它们的对地阻抗是否一致 也就是对地平衡度 它们之间相对的阻抗影响并不特别重要 之间分布电容大了只会衰落信号强度 不会引入噪声和干扰 也就是对信噪比不会产生很大影响 差分信号只是使用两根信号线传输
  • File.Exists判断错误

    C File Exists判断错误 1 今天制作软件安装测试的时候发现一个问题 File Exists判断文件是否存在 明明这个文件是存在的 但是返回的确实false 跟踪代码发现还是这样 很是诡异 仔细看了一下接口说明才知道 如果没有权限
  • java中 ‘\b‘ 回退符的使用

    退格符 b b是退格符的意思 将光标回退一个字符的位置 可以结合空白字符使用达到类似删除的效果 1 回退符 b 后面没有内容 的情况 原样输出 回退符 b后面 没有内容 则原样输出 System out println x b x 回退符后
  • FPN(Feature Pyramid Networks)网络学习

    1 FPN在MASK R CNN中 从上图可以看到 FPN在MASK R CNN中主要是应用于Featue Maps的输出 但是FPN却不是MASK R CNN所独有的 FPN是一个独立的网络 即有无FPN都可以输出Feature Maps
  • 为什么linux kernel默认的页面大小是4K,而不是4M或8M?

    相信很多人在看内核内存管理部分的时候 都有这样一个疑问 为什么物理页面的大小选择4K 而不是大一些或者小一些呢 这个问题没有固定的答案 仁者见仁智者见智 每个人的关注点不一样 所以这篇文章不是说给出一个固定的答案 更多的只是一篇讨论性的文章