操作系统存储器管理_第1页
操作系统存储器管理_第2页
操作系统存储器管理_第3页
操作系统存储器管理_第4页
操作系统存储器管理_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Institute of Machine Intelligence, Nankai University操作系统操作系统第四章:存储器管理(内存)第四章:存储器管理(内存)主讲教师:史广顺主讲教师:史广顺2内容提要内容提要v 存储管理概述存储管理概述v 内存管理方案内存管理方案静态内存管理静态内存管理动态内存管理动态内存管理vMinix内存管理原理内存管理原理vMinix内存管理实现内存管理实现3存储管理概述存储管理概述v存储器的作用存储器的作用v为什么需要存储管理?为什么需要存储管理?4内容提要内容提要v 存储管理概述存储管理概述v 内存管理方案内存管理方案静态内存管理静态内存管理动态内存管

2、理动态内存管理vMinix内存管理原理内存管理原理vMinix内存管理实现内存管理实现5内存管理方案内存管理方案v静态内存管理静态内存管理单道程序独占存储器单道程序独占存储器固定分区多道程序共享存储器固定分区多道程序共享存储器v动态内存管理动态内存管理基于交换技术的内存管理基于交换技术的内存管理基于虚拟存储器的内存管理基于虚拟存储器的内存管理6静态内存管理静态内存管理v设计思想设计思想 为应用程序一次分配足够的内存,不需要动为应用程序一次分配足够的内存,不需要动态的内存分配态的内存分配v单道程序独占内存单道程序独占内存v固定分区多道程序共享固定分区多道程序共享重定位与保护重定位与保护7动态内存

3、管理动态内存管理v设计思想设计思想为进程动态分配内存,将进程动态调入内存为进程动态分配内存,将进程动态调入内存v分类分类基于交换技术基于交换技术将进程完整的调入内存,运行一段时间后,调出内存。将进程完整的调入内存,运行一段时间后,调出内存。基于虚拟存储器基于虚拟存储器进程只需要比程序空间小的内存就可以正常运行。进程只需要比程序空间小的内存就可以正常运行。8交互技术的动态内存管理交互技术的动态内存管理v动态分区,多道程序共享动态分区,多道程序共享v内存空洞:未被使用的内存空间内存空洞:未被使用的内存空间v内存分配:需要数量内存分配:需要数量 + 额外扩充额外扩充v管理方法:管理方法:基于位图的内

4、存管理基于位图的内存管理(图图45)基于链表的内存管理基于链表的内存管理管理思路管理思路搜索方法搜索方法9虚拟存储的动态内存管理虚拟存储的动态内存管理v目的:保持容量大于内存的程序能够正目的:保持容量大于内存的程序能够正常运行。常运行。v虚地址的概念与操作:虚地址的概念与操作:MMU单元单元v页与页框的概念页与页框的概念v分页技术与分段技术分页技术与分段技术分页技术:一维虚拟存储管理分页技术:一维虚拟存储管理分段技术:二维虚拟存储管理分段技术:二维虚拟存储管理10分页技术分页技术v页表管理:将页表管理:将Page映射为映射为Framev处理流程(图处理流程(图49)如何处理缺页故障?如何处理缺

5、页故障?v关键问题:关键问题:页表空间页表空间地址映射的速度地址映射的速度v解决办法解决办法多级页表(图多级页表(图410)TLB逆向页表:将逆向页表:将Frame映射为映射为Page11分段技术分段技术v二维虚拟存储管理:针对程序逻辑实体二维虚拟存储管理:针对程序逻辑实体v与分页技术的差别与分页技术的差别页是定长的,段是不定长的页是定长的,段是不定长的页针对物理内存,段针对逻辑程序页针对物理内存,段针对逻辑程序分页好比为分页好比为HTML,分段好比为,分段好比为XMLv优点:优点:提高动态内存管理的效率提高动态内存管理的效率方便的实现程序链接,编译效率更高方便的实现程序链接,编译效率更高方便

6、实现内存共享方便实现内存共享方便实现数据与进程的保护方便实现数据与进程的保护12缺页故障的处理页面替换缺页故障的处理页面替换v页表项的设计(图页表项的设计(图411)v最优页面替换算法最优页面替换算法vNRU(最近未被使用)算法(最近未被使用)算法vLRU(最久未被使用)算法(最久未被使用)算法软件模拟:软件模拟:NFU,老化算法,老化算法vFIFO算法算法v第二次机会页面替换算法第二次机会页面替换算法v时钟替换算法时钟替换算法13分段与分页技术结合分段与分页技术结合Pentiumv设计目标:设计目标:满足不同操作系统的内存管理策略满足不同操作系统的内存管理策略支持纯分页、纯分段、段页式管理支

7、持纯分页、纯分段、段页式管理兼容兼容286处理器处理器v实现描述实现描述LDT与与GDT段的选择符与描述符段的选择符与描述符线性地址计算线性地址计算14分页与分段的设计问题分页与分段的设计问题v内零头与外零头内零头与外零头v分页系统的工作集模型分页系统的工作集模型v分页系统的局部与全局分配策略分页系统的局部与全局分配策略15内容提要内容提要v 存储管理概述存储管理概述v 内存管理方案内存管理方案静态内存管理静态内存管理动态内存管理动态内存管理vMinix内存管理原理内存管理原理vMinix内存管理实现内存管理实现16Minix内存管理原理内存管理原理v如何如何Review代码代码了解数据结构了

8、解数据结构明确处理流程明确处理流程广度优先与深度优先阅读代码广度优先与深度优先阅读代码17Minix内存管理原理内存管理原理v核心思想:核心思想:动态分区思想的多道共享内存方动态分区思想的多道共享内存方式,进程占有内存直至运行结束式,进程占有内存直至运行结束v实现策略:实现策略:内存管理与系统内核相互分开内存管理与系统内核相互分开v主要功能:主要功能:进程生成、内存分配、程序调用进程生成、内存分配、程序调用v实现手段:实现手段:消息驱动的处理机制消息驱动的处理机制v基础结构:基础结构:进程表和内存空洞表进程表和内存空洞表v缺陷:缺陷:内零头(以块为单位)和外零头(动内零头(以块为单位)和外零头

9、(动态分区造成)态分区造成)18Minix内存管理原理内存管理原理v内存分配内存分配引发内存分配:引发内存分配:fork与与Exec内存分配布局内存分配布局I、D空间相结合。空间相结合。I、D空间相互独立。空间相互独立。程序如何调入内存?程序如何调入内存?如何实现数据段的动态增长?如何实现数据段的动态增长?19Minix内存管理原理内存管理原理v内存释放内存释放释放机制:记录进程占用内存空间,并将释放机制:记录进程占用内存空间,并将其插入内存空洞表。其插入内存空洞表。释放方式:释放方式:I、D空间相互结合的进程空间相互结合的进程I、D空间相互独立的进程空间相互独立的进程20Minix内存管理原

10、理内存管理原理v信号处理机制信号处理机制信号是进程间通信的一种方式信号是进程间通信的一种方式信号处理机制涉及系统的多个方面信号处理机制涉及系统的多个方面信号处理的三个阶段信号处理的三个阶段准备阶段准备阶段响应阶段响应阶段恢复阶段恢复阶段内存管理提供的支持内存管理提供的支持21内容提要内容提要v 存储管理概述存储管理概述v 内存管理方案内存管理方案静态内存管理静态内存管理动态内存管理动态内存管理vMinix内存管理原理内存管理原理vMinix内存管理实现内存管理实现22Minix内存管理实现内存管理实现23Minix内存管理功能定义内存管理功能定义v基本的内存分配基本的内存分配/释放释放/整理功

11、能整理功能v进程生成与终止管理(进程生成与终止管理(fork/wait/exit)v程序调用的管理(程序调用的管理(exec)v信号机制的管理信号机制的管理24Minix内存管理相关数据结构内存管理相关数据结构v块定义(块定义(Click):):包括针对不同包括针对不同CPU芯片所定义的块大小,芯片所定义的块大小,位于位于2957行(行(include/minix/const.h)中。)中。v全局变量全局变量mem:由系统由系统Kernel定义,位于定义,位于5024行行(src/kernel/glo.h)中。)中。vmem_map:内存管理结构的定义,位于内存管理结构的定义,位于3188行行

12、(include/minix/type.h)中。)中。vmproc:内存管理进程表的定义,位于内存管理进程表的定义,位于16226行行(src/mm/mproc.h)中。)中。vhole:内存管理空洞表的定义,位于内存管理空洞表的定义,位于18823行行(src/mm/alloc.c)中。)中。25内存管理基本功能函数内存管理基本功能函数vmem_initKernel 实现的实现的mem_init函数函数MM实现的实现的mem_init函数函数v内存空洞链表的管理内存空洞链表的管理hole:记录内存空洞的基本数据结构:记录内存空洞的基本数据结构hole_head:指向空洞链表头的指针:指向空洞

13、链表头的指针free_slot:记录第一个可用的空洞结构:记录第一个可用的空洞结构26内存管理基本功能函数内存管理基本功能函数27内存管理基本功能函数内存管理基本功能函数vmem_initvfree_memvalloc_memvdel_slot和和merge 28内存管理主程序内存管理主程序v内存管理模块(内存管理模块(MM)必要的初始化)必要的初始化(mm_init)。v消息循环的处理机制:获得消息消息循环的处理机制:获得消息(get_work)、执行相应、执行相应操作操作(call_vec)、响应消息、响应消息(reply)。vmm_init的执行流程。的执行流程。信号管理的初始化:设置那些形成系统陷入的信号。信号管理的初始化:设置那些形成系统陷入的信号。获取获取Kernel的内存信息,从而确定用户可用内存的起始位置。的内存信息,从而确定用户可用内存的起始位置。初始化进程表,从系统进程表中获得所有系统进程的内存信息,进一初始

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论