12|内存划分:如何借助边界值划分内存?
闪客
你好,我是闪客。
书接上回,上一讲,我们回顾了一下 main.c 函数之前我们做的全部工作,给进入 main 函数做了充分的准备。
这一讲,我们将看到一个初步的内存管理方案,并通过一个巧妙的数据结构将全部内存井井有条地管理起来。
为什么要给内存划分边界
让我们从 main 函数的第一行代码开始读。
首先,ROOT_DEV 为系统的根文件设备号,drive_info 为之前 setup.s 程序获取并存储在内存 0x90000 处的设备信息,我们先不管这俩变量,等之后用到了再说。
我们看后面这一“坨”很影响整体画风的代码。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
内存划分:如何借助边界值划分内存? 本文介绍了一种初步的内存管理方案,通过计算边界值将内存划分为主内存、缓冲区和内核程序。文章首先讨论了为何需要给内存划分边界,然后详细解释了内存划分的具体实现。通过分析代码和数据结构,阐述了主内存的管理方式,重点介绍了mem_map结构的作用。最后,展望了内存申请与释放的操作,强调了与mem_map结构的关联。整体而言,本文通过简洁的代码分析和清晰的图示,为读者提供了对内存划分及管理的深入理解。
该试读文章来自《Linux0.11 源码趣读》,如需阅读全部文章,
请先通过赠一得一解锁课程
请先通过赠一得一解锁课程
赠一得一
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 小北看了两遍,大概看懂了,最大支持16M内存,排除1M以内的内核代码区,因此mem_map管理剩余15M大小内存区,按照4K分页,前1M缓冲区设置为100(UESD),不知道理解是否正确2023-03-31归属地:陕西2
- ileruzamem_map凭什么是跟1M以上的地址一一对应的?2023-02-26归属地:广东11
- liiiiiii打卡2023-02-21归属地:广东
- 浩仔是程序员打卡2023-02-15归属地:广东
收起评论