本文转载自:http://blog.csdn.net/coding__madman/article/details/51298718

版权声明:本文为博主原创文章,未经博主允许不得转载。

还是那张熟悉的老图:Linux内核子系统简介(由七个部分组成)

Linux内存管理模型:

1. 内存管子系统职能:

1>  管理虚拟地址与物理地址的映射

2>  管理物理内存的分配

2. 地址映射管理

1> 虚拟地址空间分布:

linux采用的是一种虚拟地址的管理方式,对于一个32位的处理器对于的内存空间为4G,其中0到3G是用户空间,       从3G到4G是内核空间,而内核空间从下图中可以看出被分为了四个部分:直接映射区,vmalloc区,永久映射             区,以及固定映射区

2> 虚拟地址转化为物理地址:

一个32位的虚拟地址是如何转化为物理地址的:看下图所代表的意义,第一步首先取虚拟地址的高十位作为一个         偏移,CR3寄存器作为一个基地址。相加后就可以从页目录中得到一个地址,这个地址会指向一个页表,页表的基         地址加上中间的十位就可以得到物理页的基地址,然后再加上页内的偏移,也就是低12位,就得到了实际的物理          地址!

896M以上的内存叫做高端内存,896M一下的内存叫做低端内存!

3. 物理内存分配

Linux内核内存管理子系统分析【转】的更多相关文章

  1. Linux内核内存管理算法Buddy和Slab: /proc/meminfo、/proc/buddyinfo、/proc/slabinfo

    slabtop cat /proc/slabinfo # name <active_objs> <num_objs> <objsize> <objpersla ...

  2. Linux内核内存管理架构

    内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射.页面分配.页面回收.页面交换.冷热页面.紧急页面.页面碎片管理.页面缓存.页面统计等,而且对性能也有很高的要 ...

  3. linux内核 内存管理

    以下内容汇总自网络. 在早期的计算机中,程序是直接运行在物理内存上的.换句话说,就是程序在运行的过程中访问的都是物理地址. 如果这个系统只运行一个程序,那么只要这个程序所需的内存不要超过该机器的物理内 ...

  4. Linux内核内存管理

    <Linux内核设计与实现>读书笔记(十二)- 内存管理   内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决). 所有内核 ...

  5. linux内核--内存管理(二)

    一.进程与内存     所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内 ...

  6. linux内核内存管理(zone_dma zone_normal zone_highmem)

    Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数 ...

  7. Linux内核内存管理-内存访问与缺页中断【转】

    转自:https://yq.aliyun.com/articles/5865 摘要: 简单描述了x86 32位体系结构下Linux内核的用户进程和内核线程的线性地址空间和物理内存的联系,分析了高端内存 ...

  8. Linux内核——内存管理

    内存管理 页 内核把物理页作为内存管理的基本单位.内存管理单元(MMU,管理内存并把虚拟地址转换为物理地址)通常以页为单位进行处理.MMU以页大小为单位来管理系统中的页表. 从虚拟内存的角度看,页就是 ...

  9. linux 内核 内存管理 slub算法 (一) 原理

    http://blog.csdn.net/lukuen/article/details/6935068

随机推荐

  1. 1022. Digital Library (30)

    A Digital Library contains millions of books, stored according to their titles, authors, key words o ...

  2. [LintCode] Gray Code 格雷码

    The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...

  3. [LintCode] Paint Fence 粉刷篱笆

    There is a fence with n posts, each post can be painted with one of the k colors.You have to paint a ...

  4. jquery中对动态生成的标签响应click事件(二)…与ajax交互使用

    <%@ page language="java" contentType="text/html; charset=GB18030" pageEncodin ...

  5. 打开FileGeoDatabase中要素类

    private IFeatureClass OpenFileGdbFtCls(string fn) { IFeatureClass pftcls = null; IWorkspaceFactory w ...

  6. 使用JDBC批量保存数据(JdbcDaoSupport,JdbcTemplete)

    最近做的一个项目中用到了Hibernate的,然后数据库批量插入数据的时候就使用到了hibernate的批处理,但是效率比较低,看网上说还有一些限制,要禁止二级缓存,还要多一个batch_size的配 ...

  7. modifiedvalues 主程序测试

    ##~ #-------------------------------------------------class InputFrame(wx.Frame):def __init__(self,t ...

  8. ServletContext读取Web应用中的资源文件

    package cn.itcast; import java.io.FileInputStream; import java.io.IOException; import java.io.InputS ...

  9. Android SDK路径不能含有空格

    错误, android sdk location shoud not contain whitespace,as this can cause problems with thte ndk tools

  10. JDBC 基本操作

    1. 简介 JDBC(Java DataBase Connectivity) 是有一些接口和类构成的API JDBC是J2SE的一部分, 又java.sql: javax.sql包组成.   应用程序 ...