Linux内核源码分析--内存管理(一、分页机制)

        Linux系统中分为几大模块:进程调度、内存管理、进程通信、文件系统、网络模块;各个模块之间都有一定的联系,就像蜘蛛网一样,所以这也是为什么Linux内核那么难理解,因为不知道从哪里开始着手去学习。很多人会跟着系统上电启动 BIOS-->bootsect-->setup-->head-->main-->.....来学习,但是最后会发现当你在看main的时候你必须知道其他模块大概工作情况,要不然根本不知道为什么要这么做(也许其中的C代码和汇编你都能看懂,但真正含义其不知道)。注意下:下面的blog中涉及到的操作系统都是选择0.11版的Linux系统


前言

        所幸的是我最开始入手选择了内存管理,而内存管理和其他模块联系就相对小一些(没看完其他模块,但感觉和其他模块联系不是很大),只有页面中断和进程那两个模块有些关系。好了,现在开始介绍下内存管理模块了(其实也是梳理下我的知识点)。

        最开始的地方是在head汇编中,如果看boot中那三个汇编的应该记得(那三个汇编还是比较重要的)。首先是分页机制,在CR0的第31位(PG位)置1表示开启分页机制,顺便也介绍下其他几个控制寄存器:CR1保留,没用;CR2 用来记录页面异常时线性地址(不懂没关系,后面会介绍);CR3 当前CPU使用的页目录表的地址(有此可见系统中不仅仅只有一个页目录表,但是在某一时刻有效的页目录表只有一个);当然有关页面操作的前提是CR0的第31位必须打开,也就是必须是在分页机制开启的时候那几个控制寄存器才有效。

        分页机制最最基础的就是把内存空间以4kb为单位分成多个页


系统内存总分布

       在Linux系统中全部内存分布情况为:


        在set

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值