详解linux内核内存管理子系统
计算机技术是当今数字世界的基座,从简单的幼儿玩具到规模巨大的云计算中心,它都是计算机不同形式的体现。现有计算机技术的硬件架构,内存模块是其中之一核心环节,程序须载入内存才能被CPU随机访问执行,因此, 研究明白操作系统之内存管理子系统之来龙去脉对我们帮忙理解计算机运行之原理十分有用,关于内存管理的介绍网上可以搜到很多,但我个人觉得都讲的比较只言片语,没有系统的把内存相关来龙去脉说清楚,本系列文章我将与各位读者一起系统的分析从bootloader到linux内核伙伴系统及slab系统整个过程中内存管理子系统是如何一步一步建立的,由于个人能力及时间限制,可能文章中有错误的地方,希望大家在阅读时给予指正,谢谢!
一、CPU在物理上是如何与memory交互的?
比如CPU取得一个读写某个内存地址的指令,CPU会把所要访问的内存地址放到系统地址总线上,并把读操作通过系统控制总线(这里暂不考虑MMU,后边文章咱们再专门讨论MMU)传送给memory硬件模块,而后memory硬件模块会把相应内存地址中的数据通过系统数据总线返送给CPU,这就是硬件上CPU与memory大致交互过程