《第4章存储管理(1).ppt》由会员分享,可在线阅读,更多相关《第4章存储管理(1).ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 存储器管理存储器管理 存储器是计算机系统的重要资源存储器是计算机系统的重要资源,虽然虽然存储器的容量迅速增加存储器的容量迅速增加,但软件的需求也同但软件的需求也同样在急剧膨胀样在急剧膨胀,存储器仍然是紧俏资源。存存储器仍然是紧俏资源。存储器管理是操作系统的最重要部分。储器管理是操作系统的最重要部分。4.1 概述概述4.1.1 存储体系存储体系Cache主存主存磁盘磁盘存储器的层次结构存储器的层次结构:高速缓存高速缓存Cache:数百数百K字节、非常快速、昂贵、易变的字节、非常快速、昂贵、易变的内存内存RAM:数数M到数到数M字节、中等速度、中等价格、易变的字节、中等速度、中等价格
2、、易变的 磁盘:磁盘:数数M到数百到数百G字节、低速、价廉、断电仍保存字节、低速、价廉、断电仍保存 存储管理的内容存储管理的内容1.内存空间的管理、分配与回收内存空间的管理、分配与回收 记录内存的使用情况(内存分配回收的依据)记录内存的使用情况(内存分配回收的依据)设置相应的内存分配表设置相应的内存分配表 内存空间划分内存空间划分:等长或不等长等长或不等长 确定分配算法确定分配算法,实施内存分配实施内存分配 回收内存回收内存 分配回收方式分配回收方式:静态分配与动态分配静态分配与动态分配2.存储共享存储共享内存共享:两个或多个进程共用内存中相同区域内存共享:两个或多个进程共用内存中相同区域 目
3、的:节省内存空间,提高内存利用率目的:节省内存空间,提高内存利用率 实现进程通信实现进程通信(数据共享数据共享)共享内容:共享内容:代码共享,要求代码为纯代码代码共享,要求代码为纯代码 数据共享数据共享3.存储保护与安全存储保护与安全 为多个程序共享内存提供保障为多个程序共享内存提供保障,使在内存中的各道使在内存中的各道程序程序,只能访问它自己的区域只能访问它自己的区域,避免各道程序间相互避免各道程序间相互干拢干拢,特别是当一道程序发生错误时特别是当一道程序发生错误时,不致于影响其不致于影响其他程序的运行。通常由硬件完成保护功能,由软件辅他程序的运行。通常由硬件完成保护功能,由软件辅助实现。助
4、实现。(特权指令不能完成存储保护特权指令不能完成存储保护)保护范围保护范围 保护系统程序区不被用户侵犯保护系统程序区不被用户侵犯(有意或无意的有意或无意的)不允许用户程序读写不属于自己地址空间的数据不允许用户程序读写不属于自己地址空间的数据 (系统区地址空间系统区地址空间,其他用户程序的地址空间其他用户程序的地址空间)保护方法保护方法防止地址越界防止地址越界 每个进程都有自己的地址空间每个进程都有自己的地址空间,应防止发生地址应防止发生地址越界越界;当程序要访问某个内存单元时当程序要访问某个内存单元时,由硬件检查是由硬件检查是否越界否越界,如未越界则执行如未越界则执行,否则产生地址越界中断。否
5、则产生地址越界中断。硬件提供一对寄存器硬件提供一对寄存器:(上界寄存器上界寄存器/下界寄存器下界寄存器)4.内存内存“扩充扩充”通过虚拟存储技术实现通过虚拟存储技术实现 用户在编制程序时,不应该受内存容量限制,所用户在编制程序时,不应该受内存容量限制,所以要采用一定技术来以要采用一定技术来扩充扩充内存的容量,使用户得到内存的容量,使用户得到比实际内存容量大的多的内存空间。比实际内存容量大的多的内存空间。具体实现是在硬件支持下,软硬件相互协作,将具体实现是在硬件支持下,软硬件相互协作,将内存和外存结合起来统一使用。通过这种方法把内存内存和外存结合起来统一使用。通过这种方法把内存扩充,使用户在编制
6、程序时不受内存限制。扩充,使用户在编制程序时不受内存限制。用户程序的多级处理过程用户程序的多级处理过程源程序源程序编译程序或汇编程序目标目标模块模块链接程序装入装入模块模块装入程序装入程序装入阶段编译阶段内存中内存中可执行可执行代码代码程序的链接程序的链接 静态链接静态链接:装入前进行链接:装入前进行链接 装入时动态链接装入时动态链接:对编译形成的一组模:对编译形成的一组模块边装入、边链接块边装入、边链接 运行时动态链接运行时动态链接:边运行、边链接:边运行、边链接程序的装入程序的装入 绝对装入方式绝对装入方式:编译程序产生绝对地址的编译程序产生绝对地址的目标代码目标代码 可重定位装入方式可重
7、定位装入方式:目标模块的起始地址目标模块的起始地址从从0开始。根据内存的当前情况,将装入模块开始。根据内存的当前情况,将装入模块装入到内存适当的位置。装入到内存适当的位置。动态运行时装入动态运行时装入:在装入模块装入内存后,在装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对并不立即把装入模块中的相对地址转换为绝对地址,而是把这种转换推迟到程序真正要执行地址,而是把这种转换推迟到程序真正要执行时才进行。时才进行。几个术语几个术语(1)逻辑地址(相对地址,虚地址)逻辑地址(相对地址,虚地址)用户的程序经过汇编或编译后形成目标代码用户的程序经过汇编或编译后形成目标代码,目目标代码通常采用
8、相对地址的形式标代码通常采用相对地址的形式,其首地址为其首地址为0,其余其余指令中的地址都相对于首地址而编址。指令中的地址都相对于首地址而编址。不能用逻辑地址直接在内存中读取信息。不能用逻辑地址直接在内存中读取信息。(2)物理地址(绝对地址,实地址)物理地址(绝对地址,实地址)内存中存储单元的地址内存中存储单元的地址,可直接寻址。可直接寻址。(3)地址映射地址映射 为了保证为了保证 CPU执行指令时可正确访问存储单元执行指令时可正确访问存储单元,需将用户程序中的逻辑地址需将用户程序中的逻辑地址,转换为运行时由机器直转换为运行时由机器直接寻址的物理地址接寻址的物理地址,这一过程称为地址映射这一过
9、程称为地址映射。地址映射地址映射(地址重定位地址重定位,地址变换地址变换)逻辑地址逻辑地址 地址映射地址映射 物理地址物理地址(相对地址相对地址,虚地址虚地址)(绝对地址绝对地址,实地址实地址)地址映射地址映射BA=1000.Load A 200 3456 1100物理地址空间物理地址空间Load A d1d1 3456源程序源程序Load A 200 3456000100200编译连接编译连接逻辑地址空间逻辑地址空间120003456.Load A 200.0100200300.Load A 2003456逻辑地址空间逻辑地址空间110012001300物理地址空间物理地址空间200VR10
10、00BR地址映射的原因地址映射的原因 当程序装入内存时当程序装入内存时,操作系统要为该程序分配一操作系统要为该程序分配一个合适的内存空间个合适的内存空间,由于程序的逻辑地址与分配到内由于程序的逻辑地址与分配到内存物理地址不一致存物理地址不一致,而而CPU执行指令时执行指令时,是按物理地是按物理地址进行的址进行的,所以要进行地址转换。所以要进行地址转换。静态重定位静态重定位 当用户程序被装入内存时,一次性实现逻辑地当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换(一般在装入址到物理地址的转换,以后不再转换(一般在装入内存时由软件完成)。内存时由软件完成)。动态重定位动态重
11、定位 在程序运行过程中要访问数据时再进行地址变在程序运行过程中要访问数据时再进行地址变换换(在逐条指令执行时完成地址映射在逐条指令执行时完成地址映射;为了提高效率为了提高效率,此工作一般由硬件地址映射机制来完成此工作一般由硬件地址映射机制来完成;硬件支持硬件支持,软硬件结合完成软硬件结合完成),硬件上需要一对寄存器的支持。硬件上需要一对寄存器的支持。4.2 各种存储管理方案各种存储管理方案单一用户单一用户(连续区连续区)存储管理:存储管理:单用户系统在一段时间内单用户系统在一段时间内,只有一个进程在内存只有一个进程在内存,故内存分配管理十分简单故内存分配管理十分简单,内存利用率低。内存分为内存
12、利用率低。内存分为两个区域两个区域,一个供操作系统使用一个供操作系统使用,一个供用户使用一个供用户使用。用户程序用户程序RAM中的中的操作系统操作系统0 xFFF0RAM中的中的操作系统操作系统用户程序用户程序0ROM中的设中的设备驱动程序备驱动程序用户程序用户程序RAM中的中的操作系统操作系统04.2.1 分区存储管理方案分区存储管理方案 系统把内存用户区划分为若干分区系统把内存用户区划分为若干分区,分区大小分区大小可以相等可以相等,也可以不等。一个进程占据一个分区。也可以不等。一个进程占据一个分区。固定分区固定分区:预先把可分配的主存储器空间分割成若干个连预先把可分配的主存储器空间分割成若
13、干个连续区域续区域,称为一个分区称为一个分区;每个分区的大小可以相同也每个分区的大小可以相同也可以不同可以不同,但固定不变但固定不变,每个分区装一个进程。每个分区装一个进程。存储分配:存储分配:如果有一个空闲区如果有一个空闲区,则分配给进程。则分配给进程。内存管理:内存管理:设置内存分配表设置内存分配表内存分配内存分配:查找分配表查找分配表,找到合适的分区找到合适的分区;回收回收:简简单单缺点:缺点:内存利用率不高内存利用率不高分区号分区号起始地址起始地址长度长度状态状态进程名进程名分区分区4分区分区3分区分区2分区分区1操作系统操作系统700K400K100K0200K4.2.2 可变分区可
14、变分区1、基本思想基本思想 内存不是预先划分好的,而是当程序装入时,内存不是预先划分好的,而是当程序装入时,根据进程的需求和内存空间的使用情况来决定根据进程的需求和内存空间的使用情况来决定是否分配。若有足够的空间,则按需要分割一是否分配。若有足够的空间,则按需要分割一部分分区给该进程;否则令其等待主存空间部分分区给该进程;否则令其等待主存空间可变式分区的使用情况,其中,阴影部分为空闲区可变式分区的使用情况,其中,阴影部分为空闲区Pa(120k)操作系统(a)Pa(120k)操作系统(b)Pb(30k)Pc(100k)1M140k0操作系统(c)Pb(30k)Pc(100k)270k170kPd
15、(80k)操作系统(d)Pc(100k)70kPd(80k)操作系统(e)Pc(100k)10kPe(60k)20k 始址 长度 占用标志 20k 80k Pd 110k 60k Pe 170k 100k Pc 空 始址 长度 占用 100k 10k 有效 270k 730k 有效 空 (a)已分配区表 (b)未分配区表 可变分区分区说明表可变分区分区说明表2、内存管理的数据结构、内存管理的数据结构1)分区说明表由两张表格组成分区说明表由两张表格组成2)空闲区链空闲区链 将分区分配信息附加在分区中将分区分配信息附加在分区中,记录存贮空间的记录存贮空间的使用情况。将表格信息放在每个分区的首尾两个
16、字中使用情况。将表格信息放在每个分区的首尾两个字中,利用表格自己管理自己。表格存放如下一些信息:利用表格自己管理自己。表格存放如下一些信息:(1)状态信息状态信息:“0”表示该区空闲表示该区空闲,“1”表示已分表示已分配。配。(2)该区的大小该区的大小(以字或块为单位以字或块为单位)。(3)指针指针信息信息:构成空闲区链。构成空闲区链。状态位 分区大小(N+2)前向指针大小为N的已分配区或空闲区状态位 分区大小(N+2)后向指针三种内存分配算法:三种内存分配算法:首先适配算法首先适配算法:(特点特点:简单、快速分配简单、快速分配)当接到内存申请时当接到内存申请时,查空闲块表查空闲块表,找到第一
17、个不找到第一个不小于请求的空块小于请求的空块,将其分割并分配。将其分割并分配。最佳适配算法最佳适配算法:(特点特点:用最小空间满足要求用最小空间满足要求)接到内存申请时接到内存申请时,在空闲块表中找到一个不小于在空闲块表中找到一个不小于请求的最小空块进行分配。请求的最小空块进行分配。最坏适配算法最坏适配算法:(特点特点:分割后空闲块仍较大分割后空闲块仍较大)接到内存申请时接到内存申请时,在空闲块表中找到一个不小于在空闲块表中找到一个不小于请求的最大空块进行分配。请求的最大空块进行分配。最佳适配算法的实现最佳适配算法的实现:存储区(空白区)的数据结构:空白区按其容量大小存储区(空白区)的数据结构
18、:空白区按其容量大小递增连接起来递增连接起来 即:即:X1 X2 X3.Xn设请求分配的容量为设请求分配的容量为S,则从则从X1开始比较,直至开始比较,直至S Xi,然后,从然后,从Xi中减去中减去S,如有剩余,则将空白区如有剩余,则将空白区插入适当位置,否则(插入适当位置,否则(SSn),),则分配失败。则分配失败。剩余空白区的处理:如果剩余空白区的处理:如果Xi-S G(参数参数),则,则Xi全部全部给作业,否则,给作业,否则,Xi-S插入适当位置。插入适当位置。看起来最佳,实际怎么样?看起来最佳,实际怎么样?碎片问题:碎片问题:经过一段时间的分配回收后经过一段时间的分配回收后,内存中存在
19、很多很内存中存在很多很小的空闲块。它们每一个都很小小的空闲块。它们每一个都很小,不足以满足分配要不足以满足分配要求求,但其总和满足分配要求但其总和满足分配要求;这些空闲块被称为碎片。这些空闲块被称为碎片。造成存储资源的浪费造成存储资源的浪费碎片问题的解决:碎片问题的解决:紧凑技术紧凑技术:(紧缩技术紧缩技术,浮动技术浮动技术,搬家技术搬家技术)通过在内存移动程序通过在内存移动程序,将所有小的空闲区域合并将所有小的空闲区域合并为大的空闲区域。问题为大的空闲区域。问题:开销大开销大,移动时机。移动时机。动态重定位分区分配动态重定位分区分配 紧凑紧凑动态重定位动态重定位动态重定位分区分配动态重定位分
20、区分配4.3 对换技术 对换技术是在多道环境下扩充内存采用的对换技术是在多道环境下扩充内存采用的方法方法,用以解决在较小的存储空间中运行较大用以解决在较小的存储空间中运行较大程序时遇到的矛盾。程序时遇到的矛盾。对换技术被广泛用于小型分时系统中对换技术被广泛用于小型分时系统中,对对换技术的发展导致了虚存技术的出现换技术的发展导致了虚存技术的出现 当内存空间紧张时当内存空间紧张时,系统将内存中某些进系统将内存中某些进程暂时移到外存程暂时移到外存,把外存中某些进程换进内存把外存中某些进程换进内存,占据前者所占用的区域占据前者所占用的区域,这种技术是进程在内这种技术是进程在内存与外存之间的动态调度存与
21、外存之间的动态调度;多用于分时系统中多用于分时系统中。对换的单位:对换的单位:分段对换分段对换页面对换页面对换进程对换进程对换对换空间的管理对换空间的管理1.外存的划分外存的划分:文件区和对换区文件区和对换区2.对换区的管理对换区的管理:连续分配还是离散分配连续分配还是离散分配?3.内存管理方式是否适合对换区的管理内存管理方式是否适合对换区的管理?4.5.3进程的换出和换入1.换出进程的选择:换出进程的选择:处于阻塞状态、处于阻塞状态、优先级最低且驻留时间最长优先级最低且驻留时间最长2.进程的换入进程的换入 选择换入进程(选择换入进程(“就绪就绪”且待在磁盘久)且待在磁盘久)申请内存申请内存成功则换入;成功则换入;失败则将某些进程换出腾出空间再换入失败则将某些进程换出腾出空间再换入作业课后作业:课后作业:1、2、5、6补充:描述补充:描述Windows下的动态链接库下的动态链接库从网上下载内存管理工具并使用从网上下载内存管理工具并使用上机:内存管理的三种分配算法上机:内存管理的三种分配算法
限制150内