linux复习 第四章 内存管理 考试要点整合.docx
- 文档编号:30266955
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:9
- 大小:198.35KB
linux复习 第四章 内存管理 考试要点整合.docx
《linux复习 第四章 内存管理 考试要点整合.docx》由会员分享,可在线阅读,更多相关《linux复习 第四章 内存管理 考试要点整合.docx(9页珍藏版)》请在冰豆网上搜索。
linux复习第四章内存管理考试要点整合
第四章内存管理
1、内存管理的组成(5个内存管理器)
·物理内存管理器:
负责物理内存的分配、释放和回收,以页为单位实施管理。
·内核内存管理器:
负责内核中小内存的分配和回收,采用slab算法。
·虚拟内存管理器:
在物理内存管理器的基础上,通过页目录、页表及交换机制,为每个进程提供4GB的虚拟地址空间。
·内核虚拟内存管理器:
负责内核中大内存的分配和回收。
·用户空间内存管理器:
负责用户态虚拟内存的分配和回收。
2、物理内存管理器:
(1)基本内存单位:
页(存储文件数据、充当buffer),大小为4KB,每一个物理页在mem_map数组数组中对应一个mem_map_t结构。
(2)mem_map_t结构:
描述一个物理页的信息。
(3)物理内存的分配:
●基本思想:
伙伴算法
•一次分配的内存大小:
1个页块;
•将页块加入free_area[]中时:
合并伙伴页块。
●释放过程:
实现函数__get_free_pages:
•判断所请求的页块大小是否能够被满足,若不能满足,则函数返回0;
•判断当前空闲内存是否充足,充足则直接分配,不足则先回收再分配;
·按照伙伴算法从free_area[]中分配空闲页块。
(4)物理内存的释放:
●基本思想:
伙伴算法
•一次分配的内存大小:
1个页块;
•若没有大小相符的页块:
要分割伙伴。
●释放过程:
实现函数free_pages:
·根据要释放的页块首地址addr算出页块编号;
•判断是否为保留页、是否正在被使用;
•若可释放,则将该页块加入free_area数组。
(5)物理内存回收的主要途径:
·Cache链表(找出一个无用slab最多的cache,将它的空闲slab回收)
•mem_map数组(选择其中已经分配出去但可以废弃的物理页)
•共享内存(每次交换出去一个共享页)
•进程队列(将进程的某些页交换到外存)
•dentry_unused链表(记录目前系统不再使用的目录项)
3、内核内存管理器
(1)特点:
不参与交换、使用时间短、响应速度快、尺寸较小。
(2)数据结构:
·一个cache管理一组slab,每个slab管理一组大小相等的内存块,每个内存块都可用作一种数据结构。
·一个slab是来自物理内存管理器的一到多个物理页,这些物理页被分成一组固定大小的块,称为slab对象。
●Cache结构所在的链表信息:
·Cache环形链表;
·Slab双向链表;
·第一个有空闲对象的Slab;
●Slab管理的对象的信息(slab对象只能是2n个字节,大于等于32B、小于等于128KB)
·各对象的位置;
•各对象管理结构的位置;
•第一个空闲对象;
(3)内核内存管理器通过slab与物理内存管理器交互。
当一个cache的所有slab中都没有空闲的内存块时,内核内存管理器会从物理内存中申请新页,将其划分成小块,从而构成一个新的slab;当一个slab中的所有块都变成空闲时,将其归还给物理内存管理器。
(4)内核内存的分配(每次只能分配1个slab对象):
•确定要分配的对象所在cache;
•找到有空闲对象的slab或创建Slab;
•将该Slab中的第一个空闲对象分配出去;
·返回该对象的首地址。
(5)内核内存的释放(以slab对象为单位释放):
•根据对象首地址找到它所属cache结构和slab结构;
•找到该对象的kmem_bufctl_s结构;
•将该对象加入所属Slab的空闲对象链表中;
•判断是否需调整cache结构中的Slab链表:
(6)内核内存的回收(以slab对象为单位回收):
•按时钟算法顺序搜索cache链表;
每次搜索10个cache;
从中选出空闲Slab最多的cache;
•调整下次搜索的开始位置指针clock_searchp;
•将该cache中所有空闲的slab从链表上摘下来;
将其占用的内存归还给物理内存管理器。
4、虚拟内存管理器
(1)虚拟内存抽象模型
●数据结构:
·虚拟内存区域结构:
进程4GB的虚拟地址空间划分成小的虚拟内存区域(一段具有相同属性的、连续的虚拟地址空间),4KB≤1个虚拟内存区域≤4GB。
vm_area_struct结构:
描述1个虚拟内存区域
·内存管理结构
为每个进程建立一个内存管理结构mm_struct:
记录进程的虚拟内存信息。
●四个关键技术
(1)访问控制:
•vma结构中的vm_page_prot域:
记录了缺省情况下对该区域的所有页的保护权限设置;
•真正对页起保护作用的是定义在各个页表项中的访问控制信息。
(2)按需分页:
•直到访问时才加载虚拟页的技术称为按需分页;
•利用按需分页技术实现内存映射:
即将文件的内容映射到进程的虚拟内存,进程读文件时,只建立vma结构。
(3)交换:
·对要回收的物理页的处理(页面换出技术):
来自文件且未改动过:
直接废弃;
脏页(被改变过的页):
写回映射文件或交换设备。
·缺页处理程序(页面换入技术):
从文件或交换设备中读入相应内容
文件映射页和交换设备页的换出、换入方法:
●页面的类型:
•内存映射页:
页中的信息来自文件
Ø共享映射页:
多个进程共享的内存映射页(;
Ø私有映射页:
不能被共享的内存映射页。
•非内存映射页:
页中的信息不是来自于外存(换出时暂存到外存的某个地方)。
●交换设备:
暂存换出页面的文件或设备。
页面换出:
•共享映射页:
写回映射文件
•私有映射页/非内存映射页:
写入交换设备
页面换入:
缺页异常处理程序
二次机会淘汰算法:
将要换出内存的页从进程的虚拟地址空间中写出,但不会立刻将其从页缓存中释放,从而使得物理内存回收程序不能立即回收该页
(4)高速缓存:
•BufferCache数据缓存:
Ø包含了块设备驱动程序使用的数据缓冲区,其中包括刚从块设备读出的数据或将要写到块设备的数据;
Ø(在块设备I/O操作之前,先查BufferCache,如果可以再其中找到,就不需要再从物理块设备上读取,从而减少I/O操作的次数,)加快设备访问的速度。
•PageCache页缓存:
Ø缓存的是从磁盘读入的映射文件页;
Ø对映射文件的访问首先要检查页缓存,如果能在其中找到需要的页,就不再需要磁盘操作,从而可以加快映射的速度。
•SwapCache交换缓存:
Ø缓存那些从上次写到交换设备后,没有再次被修改的页。
Ø(将页换出时,系统首先查交换缓存,该页如在其中,直接废弃;将页换入时,系统也先查交换缓存,如能找到,直接使用),减少许多I/O操作。
•HardwareCache硬件缓存:
ØTLB(页快表):
缓存系统中最近使用过的页表项;
Ø当转换虚拟地址时,首先在TLB中寻找匹配的页表项。
如果找到了,用它直接将虚拟地址转换到物理地址;如找不到再直接访问页表。
可加快地址转换速度。
(2)对虚拟内存的管理
●进程的虚拟地址空间的变化情况:
•进程创建:
创建其虚拟内存,从父进程拷贝(虚拟内存拷贝)。
•进程开始运行:
需要装入自己的执行映像,重建新的虚拟地址空间(虚拟内存重建)。
•进程运行过程中(虚拟页的换出/换入):
Ø缺页异常:
将需要的页读入内存。
Ø内存紧张:
将进程暂时不用的页换出内存(虚拟内存回收)。
•进程结束:
释放其所有虚拟地址空间(虚拟内存释放)
●虚拟内存管理—拷贝
·方法
Øvfork:
完全共享父进程的虚拟内存(直到子进程调用exec或退出);
ØCopyonWrite(写时拷贝):
仅拷贝mm_struct、vma结构、页目录和页表;不拷贝页面内容(父/子进程要修改某个页时才拷贝)。
·拷贝函数:
copy_mm:
若进程创建标志中设置了CLONE_VM标志,则父子进程共用同一个虚拟地址空间;否则,拷贝父进程的mm_struct结构。
●虚拟内存管理—重建
·将可执行映像文件划分成不同的区域(函数exec和系统调用old_mmap);
·对每一个区域调用do_mmap建立其vma的结构。
●虚拟内存管理—回收
•将进程占用的某些内存上的信息暂且交换到外存中,释放该内存,并归还给物理内存管理器。
·虚拟内存回收函数:
swap_out
Ø执行一次,最多只回收一个物理页。
Ø重复调用该函数,可回收多个物理页
●虚拟内存管理—释放
·部分释放—do_munmap函数
Ø找到所涉及到的所有vma,从vma队列中摘下来;
Ø逐个处理这些vma:
·全部释放—exit_mmap函数
Ø找到该进程的vma队列;
Ø清除mm_struct结构中与vma有关的信息;
Ø顺序释放每个vma及其物理页;
Ø释放进程的页表。
5、内核虚拟内存管理器
●作用:
·当内核需要大内存时,空闲内存总量可以满足,但连续的空闲内存不能满足。
·解决方法:
借鉴虚拟内存管理器的思想,在虚拟地址空间分配一块连续的虚拟内存,但对应的物理内存不连续。
●内核内存管理器分配内存的基本原则:
·分配的最大内存为128KB;
·分配的内存是连续的。
●基本思路:
在虚拟地址空间分配一块连续的虚拟内存区域,为其中每个虚拟页申请物理页。
●管辖的虚拟内存范围:
虚拟内存内核部分的高端空间(high_memory+VMALLOC_OFFSET以上)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux复习 第四章 内存管理 考试要点整合 linux 复习 第四 内存 管理 考试 要点 整合