Linux 0.11内核源码中内存管理是如何实现的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3208个文字,预计阅读时间需要13分钟。
内存管理 + Linux内核使用场景页面格式:内存管理方式。+ 内存池 + 物理页:物理空闲内存被划分为固定大小(4K)的页。+ 内存池:所有空闲物理页组成内存池,以页为单位进行分配和回收。+ 位数图:通过位图表示内存池中每个页的使用状态。
内存管理Linux内核使用段页式内存管理方式。
- 内存池
物理页:物理空闲内存被划分为固定大小(4k)的页
内存池:所有空闲物理页组成内存池,以页为单位进行分配回收。并通过位图记录了每个物理页是否空闲,位图下标对应物理页号。
- 分页内存管理
虚拟页:进程虚地址空间被划分为固定大小(4k)的页
分页内存管理:通过页目录和页表维护进程虚拟页号到物理页号的映射。设置好页目录、页表之后,虚拟地址到物理地址之间的转换通过内存管理单元(MMU)自动完成转换。若访问的虚拟页没有实际分配物理页,则放生缺页中断,内核会为其分配物理页。
- 分段内存管理
分段:进程虚地址空间被划分为多个逻辑段,代码段、数据段、栈段等,每个段有一个段号。进程代码不直接使用虚拟地址,而是段号+段内偏移的二维逻辑地址。
分段内存管理:通过段表维护每个段的信息,段表项包括段基址和段限长。设置好段表之后,段号+段内偏移二维逻辑地址到虚拟线性地址的转换由MMU单元自动完成。
- 相关代码文件
page.s:仅包含内存缺页中断处理程序
memory.c:内存管理的核心文件,用于内存池的初始化操作、页目录和页表的管理和内核其他部分对内存的申请处理过程。
本文共计3208个文字,预计阅读时间需要13分钟。
内存管理 + Linux内核使用场景页面格式:内存管理方式。+ 内存池 + 物理页:物理空闲内存被划分为固定大小(4K)的页。+ 内存池:所有空闲物理页组成内存池,以页为单位进行分配和回收。+ 位数图:通过位图表示内存池中每个页的使用状态。
内存管理Linux内核使用段页式内存管理方式。
- 内存池
物理页:物理空闲内存被划分为固定大小(4k)的页
内存池:所有空闲物理页组成内存池,以页为单位进行分配回收。并通过位图记录了每个物理页是否空闲,位图下标对应物理页号。
- 分页内存管理
虚拟页:进程虚地址空间被划分为固定大小(4k)的页
分页内存管理:通过页目录和页表维护进程虚拟页号到物理页号的映射。设置好页目录、页表之后,虚拟地址到物理地址之间的转换通过内存管理单元(MMU)自动完成转换。若访问的虚拟页没有实际分配物理页,则放生缺页中断,内核会为其分配物理页。
- 分段内存管理
分段:进程虚地址空间被划分为多个逻辑段,代码段、数据段、栈段等,每个段有一个段号。进程代码不直接使用虚拟地址,而是段号+段内偏移的二维逻辑地址。
分段内存管理:通过段表维护每个段的信息,段表项包括段基址和段限长。设置好段表之后,段号+段内偏移二维逻辑地址到虚拟线性地址的转换由MMU单元自动完成。
- 相关代码文件
page.s:仅包含内存缺页中断处理程序
memory.c:内存管理的核心文件,用于内存池的初始化操作、页目录和页表的管理和内核其他部分对内存的申请处理过程。

