1、操作系统管理的空间可大致分为内存空间、外存空间。
内存空间可被处理器直接访问。操作系统的进程运行在内存空间中,操作系统本身也运行在内存空间中。
2、内存管理工作:物理内存管理部分、虚拟内存管理部分。
物理内存管理部分:管理系统中的物理内存空间,负责物理内存的分配、释放、回收。 主要任务是:快速、合理、高效地分配与回收物理内存资源以尽力提高其利用率。
虚拟内存管理部分:管理进程的虚拟内存空间,负责虚拟内存的创建、撤销、换入、换出、虚拟地址到物理地址的转换。 主要任务:为进程模拟出尽可能大的内存空间并实现它们间的隔离与保护。
3、与内核不同,每个进程都需要一块容量足够大的独立的虚拟内存,用于暂存他的程序、数据、堆栈。
内存管理的另一核心工作是:利用有限的物理内存和外存设备W为系统中每个进程都模拟出一块连续的虚拟内存,并实现各虚拟机之间的隔离与保护。
Linux 中负责进程内存管理工作的是:虚拟内存管理器、用户内存管理器。
用户内存管理器运行在用户空间中不属于内核的组成部分。
内存管理系统组成结构
Linux 将内存管理工作交给了几个既相互独立又相互关联的管理其分别负责:
1、Linux 的物理内存管理子系统运行在内核空间,仅为内核提供服务。
内核需要的物理内存通常是连续的,内核用线性地址访问物理内存。
内核对物理内存的需求:小规模(几个字节)、中规模(几个物理上连续的页)、大规模(多个逻辑上连续的页)
2、物理内存管理子系统划分为:伙伴内存管理器、对象内存管理器、逻辑内存管理器。
(1)伙伴内存管理器:是物理内存的真正管理者,以页块为单位,快速、高效,且不会产生外部碎片。
(2)对象内存管理器:建立在伙伴内存管理器之上,是一种细粒度的物理内存管理器,以满足内核对小内存的需求。
(3)逻辑内存管理器:专门为内核提供逻辑上连续、物理上可不连续的大内存服务。
3、系统初始化期间,Linux还提供了一个
初始内存管理器 Bootmem,向内核提供物理内存服务。伙伴内存管理器启动之后, Bootmem 就交出管理权,停止工作。