Linux进程地址空间结构解析-第十讲进程管理

进程地址空间的结构挺绕的,mm_structmmap这些东西,新手看着会头大。你要是搞过Linux内核开发,肯定碰过task_struct,它里面那个mm字段,指的就是整个进程的内存布局器。mmap就更关键了,串起了所有线性内存区,逻辑清晰,用起来也挺高效的。

进程地址空间的这部分内容,说实话不算难,就是资料零散。比如Linux 进程地址空间的创建过程这篇就讲得比较细,讲了从可执行文件加载到mmap建立映射的流程。你如果想配合mmap调试用,可以再看看mmap2mm 工具包,还挺好用的,尤其是在内存碎片或者共享映射时。

哦对了,还有些资源虽然不是直接讲Linux的,比如Wince 的用户地址空间管理,但也能帮你建立整体概念,是搞嵌入式的朋友。你要是玩过设备驱动,对内存映射那套机制应该不陌生。

如果你是搞内核或者性能的,建议深入看看mm_struct的源码结构。别被结构体搞怕,其实字段都实用,比如start_codeend_code这些,在做进程内存监控的时候有用。

小提醒:别忘了task_struct里的active_mm,线程切换时它会临时挂靠到没有独立mm的内核线程上。看似边角料,实则关键点,别忽视了。

ppt 文件大小:368KB