内存管理(linux内核)

  • 内核把物理页作为内存管理的基本单位。尽管处理器的最小可寻址单位通常为字(甚至字节),但是,内存管理单元(MMU,管理内存并把虚拟地址转换为物理地址的硬件)通常以页为单位进行处理。
  • MMU以页(page)大小为单位来管理系统中的页表
  • 从虚拟内存角度来看,页就是最小单位

注意:体系结构不同,支持的页大小也不尽相同,还有些体系结构甚至支持几种不同的页大小。不过大多数32位体系结构支持4KB(4 * 1024字节=4096字节)的页,而64位体系结构一般会支持8KB的页。<如果按照4KB(即4096字节)为一个单位来计算,那么:1GiB = 1,073,741,824 字节 / 4096 字节/KB = 262,144 KB>

  • linux内核中page结构体与物理页相关,而并非与虚拟页相关。这种数据结构目的在于描述物理内存本身。系统中每一个物理页都要分配这样一个结构体

普及:在计算机操作系统中,尤其是内存管理领域,“脏页”(Dirty Page)是指**已被修改但尚未写回磁盘的内存页面。**当应用程序对内存中的数据进行修改时,这些修改通常首先发生在内存中,而不是直接在硬盘的文件系统上。操作系统为了提高效率,会暂时将这部分已修改但还未同步到硬盘的数据所在的内存页标记为“脏页”。在适当的时间点(如系统空闲、内存不足需要置换页面或者进程退出时),操作系统会把脏页的内容回写到对应的硬盘存储位置,确保数据的一致性和持久性。这个过程被称为“刷脏”或“脏页flush”。

虚拟内存和物理内存的关系

在这里插入图片描述

  • 由于硬件限制,内核并不能对所有的页一视同仁。有些也位于内存中特定的物理地址上,所以不能将其用于一些特定的任务。由于这种限制,内核才会把页划分为不同的区(zone)。内核使用区来对具有相似特性的页进行分组。

限制条件:
① 一些硬件只能用某些特定的内存地址来执行DMA(直接内存访问)
② 一些体系结构的内存的物理寻址范围比虚拟寻址范围大的多。这样,就有一些内存不能永远映射到内核空间上(寻址在计算机科学中是一个核心概念,它涉及到如何在内存或存储设备中定位和访问特定的数据或指令。简单来说,**寻址就是确定一个数据单元(如字节、字、双字等)在存储器中的具体位置。**在计算机系统中,每个存储单元都有一个唯一的地址标识符,这个地址就像一个标签或者门牌号,帮助CPU找到需要处理的数据或指令。寻址过程通常包括:生成地址:CPU通过算术逻辑单元(ALU)或者其他硬件机制计算出目标数据的地址。地址解码:将生成的地址转换为实际的物理地址,以便在内存或硬盘上定位数据。数据读写:根据得到的地址从内存读取数据到CPU进行处理,或者将CPU处理后的结果写回内存。寻址方式有直接寻址、间接寻址、相对寻址、基址寻址、变址寻址等多种方式,它们是操作系统和硬件协同工作,实现程序运行和数据存取的基础。
注意:区的划分没有任何物理意义,这只是内核为了管理页采取的一种逻辑上的分组。

  • zone是一个很大的结构体,但是系统只有三个区,因此只有三个这样的结构。

相对比较笼统,也就是基本把页这个数据结构搞明白,这个内存管理相对就迎刃而解。
最重要的是,内核中有很多接口需要学会使用,这个可以直接下载linux内核源码进行阅读即可。
下载地址

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值