Linux的内存管理概述

Linux虚拟内存的实现结构

我们先从整体结构上看一下Linux对虚拟内存的实现结构,如图6.2所示。


图6.2 Linux虚存的实现结构

 

从图中可看到实现虚拟内存的组成模块。 其实现的原代码大部分放在/mm目录下。

1. 内存映射模块(mmap)—负责把磁盘文件的逻辑地址映射到虚拟地址,以及把虚拟地址映射到物理地址。

2.交换模块(swap)—负责控制内存内容的换入和换出,它通过交换机制,使得在物理内存的页面(RAM页)中保留有效的页 ,即从主存中淘汰最近没被访问的页,保存近来访问过的页。

3.核心内存管理模块(core)—负责核心内存管理功能,即对页的分配、回收、释放及请页处理等,这些功能将被别的内核子系统(如文件系统)使用。

 

4. 结构特定的模块—负责给各种硬件平台提供通用接口,这个模块通过执行命令来改变硬件MMU的虚拟地址映射,并在发生页错误时,提供了公用的方法来通知别的内核子系统。这个模块是实现虚拟内存的物理基础。

虚拟内存实现机制间的关系

    Linux虚拟内存的实现需要各种机制的支持,因此,本章我们将对内存的初始化进行描述以后,围绕以下几种实现机制进行介绍:

    ·内存分配和回收机制

    ·地址映射机制

    ·缓存和刷新机制

    ·请页机制

    ·交换机制

    ·内存共享机制

这几种机制的关系如图6.5所示。

 

 

 

 


图6.5 虚存实现机制间

     首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚地址没有对应的物理内存时,就发出了请页要求①;如果有空闲的内存可供分配,就请求分配内存②(于是用到了内存的分配和回收),并把正在使用的物理页记录在页缓存中③(使用了缓存机制)。如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存④⑤。另外在地址映射中要通过TLB(翻译后援存储器)来寻找物理页⑧;交换机制中也要用到交换缓存⑥,并且把物理页内容交换到交换文件中后也要修改页表来映射文件地址⑦。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值