linux内存管理
Posted Seven_noon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux内存管理相关的知识,希望对你有一定的参考价值。
- 虚拟内存
为了有效的管理内存,linux提出了虚拟内存的概念。虚拟内存是硬件异常、主存、硬件地址翻译、磁盘、和内核软件的完美交互。
虚拟内存提供了三个重要的能力:
1、将内存看作是磁盘的告诉缓存
2、使得进程具一致的地址空间(线性地址)
3、使得进程的地址空间相互独立
- 虚拟内存的实现机制
内核会为每个进程维护一个单独的任务结构(PCB / task_struct),其中有一个条目指向mm_struct,它描述了虚拟内存的当前状态。其中有两个字段pgd和mmap,pgd指向一级页表的基址,mmap指向一个虚拟内存区域结构的链表。
也就说每个进程都会有一个独立的页表,系统可以通过MMU将虚拟地址映射位物理地址。MMU通过虚拟地址的虚拟页号可以查询到存储在主存上的当前进程的页表条目,然后就可以获取物理页号,通过与页内偏移的结合就可获取物理地址。
特点:
1、虚拟地址是连续的,相应的物理地址可能不是
2、可能有多级页表,只有下一级页表被分配才会创建下一级页表,从而节约内存
3、页表查询分为命中和不命中,命中完全由硬件处理,不命中时内核会参与工作,包括选取一个牺牲页,更改页表。
以上是关于linux内存管理的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核 内存管理内存管理架构 ③ ( Linux 内核中的内存管理模块 | 页分配器 | 不连续页分配器 | 内存控制组 | 硬件设备内存管理 | MMU | 页表缓存 | 高速缓存 )
Linux 内核 内存管理内存管理架构 ① ( 内存管理架构组成 | 用户空间 | 内核空间 | MMU 硬件 | Linux 内核架构层次 | Linux 系统调用接口 )
Linux 内核 内存管理内存管理架构 ③ ( Linux 内核中的内存管理模块 | 页分配器 | 不连续页分配器 | 内存控制组 | 硬件设备内存管理 | MMU | 页表缓存 | 高速缓存 )