Linux进程地址空间结构解析-第十讲进程管理
进程地址空间的结构挺绕的,mm_struct
和mmap
这些东西,新手看着会头大。你要是搞过Linux
内核开发,肯定碰过task_struct
,它里面那个mm
字段,指的就是整个进程的内存布局器。mmap
就更关键了,串起了所有线性内存区,逻辑清晰,用起来也挺高效的。
进程地址空间的这部分内容,说实话不算难,就是资料零散。比如Linux 进程地址空间的创建过程这篇就讲得比较细,讲了从可执行文件加载到mmap
建立映射的流程。你如果想配合mmap
调试用,可以再看看mmap2mm 工具包,还挺好用的,尤其是在内存碎片或者共享映射时。
哦对了,还有些资源虽然不是直接讲Linux
的,比如Wince 的用户地址空间管理,但也能帮你建立整体概念,是搞嵌入式的朋友。你要是玩过设备驱动,对内存映射那套机制应该不陌生。
如果你是搞内核或者性能的,建议深入看看mm_struct
的源码结构。别被结构体搞怕,其实字段都实用,比如start_code
、end_code
这些,在做进程内存监控的时候有用。
小提醒:别忘了task_struct
里的active_mm
,线程切换时它会临时挂靠到没有独立mm
的内核线程上。看似边角料,实则关键点,别忽视了。
368KB
文件大小:
评论区