操作系统原理四存储器管理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《操作系统原理四存储器管理课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 原理 存储器 管理 课件
- 资源描述:
-
1、第四章第四章 存储器管理存储器管理 4.1 存储器的层次结构存储器的层次结构 4.2程序的装入和链接程序的装入和链接 4.3连续分配方式连续分配方式4.4基本分页存储管理方式基本分页存储管理方式4.5基本分段存储管理方式基本分段存储管理方式4.6虚拟存储器的基本概念虚拟存储器的基本概念4.7请求分页存储管理方式请求分页存储管理方式4.8页面置换算法页面置换算法4.9请求分段存储管理方式请求分段存储管理方式 4.1 存储器的层次结构存储器的层次结构寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU寄存器主存辅存寄存器、高速缓存、主存储器和磁盘缓存均属于操作系统寄存器、高速缓存、主存储器和磁盘缓存
2、均属于操作系统存储管理存储管理的管辖范的管辖范畴,掉电后它们存储的信息不再存在。畴,掉电后它们存储的信息不再存在。而辅存的使用与管理放在而辅存的使用与管理放在设备和文件管理设备和文件管理中介绍!中介绍!在主存中KBMBGBTB存储器管理:存储器管理:指内存的管理,外存管理在文件部分讲述;指内存的管理,外存管理在文件部分讲述;单道程序系统:单道程序系统:内存被划分成两部分:一部分供内存被划分成两部分:一部分供OSOS使用,使用,一部分供当前正在执行的程序使用。一部分供当前正在执行的程序使用。多道程序系统:多道程序系统:存储器的存储器的用户部分用户部分必须进一步地细分,以必须进一步地细分,以适应多
3、个进程的要求。细分的任务由操作系统动态实适应多个进程的要求。细分的任务由操作系统动态实现,这就是存储器管理。现,这就是存储器管理。存储器管理的目的:存储器管理的目的:一是方便用户使用,二是提高存储器一是方便用户使用,二是提高存储器的利用率的利用率。基本概念补充1、存储器管理功能主存的分配和回收:主存的分配和回收:系统应能记住每个存储区的状态;实施存储器的分配;系统应能记住每个存储区的状态;实施存储器的分配;回收系统或用户释放的存储区。回收系统或用户释放的存储区。地址转换或重定位:地址转换或重定位:实现逻辑地址到物理地址的变换,分为静态重定位和动实现逻辑地址到物理地址的变换,分为静态重定位和动态
4、重定位态重定位主存共享与保护:主存共享与保护:使多道程序能使多道程序能动态动态地地共享主存共享主存,最好能共享主存中的信息;,最好能共享主存中的信息;保证进入主存的各道作业都在自己的存储空间内运行,互不干扰。由硬件和保证进入主存的各道作业都在自己的存储空间内运行,互不干扰。由硬件和软件配合完成。软件配合完成。主存扩充:主存扩充:借助于借助于虚拟存储技术虚拟存储技术,为用户提供比主存空间大的地址空间。,为用户提供比主存空间大的地址空间。内存的每个存储单元都有一个编号,这种编号称为内存的每个存储单元都有一个编号,这种编号称为内存地址内存地址(或称为(或称为物理物理地址,绝对地址地址,绝对地址)。)
5、。内存地址的集合称为内存地址的集合称为内存空间(或物理地址空间)。内存空间(或物理地址空间)。例如,我们常说内存例如,我们常说内存为:为:512MB要求用户用内存地址编程是非常困难的,尤其是在多道程序设计的环境中要求用户用内存地址编程是非常困难的,尤其是在多道程序设计的环境中(不知道)。(不知道)。2 2、地址映射、地址映射(地址重定位地址重定位)用户编程所用的地址称为用户编程所用的地址称为逻辑地址(或程序地址,或虚地址)逻辑地址(或程序地址,或虚地址),由逻由逻辑地址组成的空间称为辑地址组成的空间称为逻辑地址空间(或程序地址空间)逻辑地址空间(或程序地址空间)。我们把用户程序装入内存时,或在
6、程序执行时,对有关指令或数据地我们把用户程序装入内存时,或在程序执行时,对有关指令或数据地址的修改称为址的修改称为从程序地址到内存地址的地址映射,或称为地址重定位。从程序地址到内存地址的地址映射,或称为地址重定位。地址映射地址映射Load A 1200 3456 。1200物理地址空间物理地址空间Load A data1data1 3456源程序(名空间)源程序(名空间)Load A 200 34560100200编译编译连接连接逻辑地址空间逻辑地址空间BR=10001100地址映射的方式静态地址映射:静态地址映射:1 1)程序被装入内存时由操作系统的连接装入程序完成)程序被装入内存时由操作系
7、统的连接装入程序完成程序的逻辑地址到内存地址的转换;程序的逻辑地址到内存地址的转换;2 2)地址转换工作是在程序执行)地址转换工作是在程序执行由装入程序集中一次由装入程序集中一次完成。完成。n假定程序装入内存的首地址为假定程序装入内存的首地址为BRBR,程序地址为,程序地址为VRVR,内存,内存地址为地址为MRMR,则地址映射按下式进行:,则地址映射按下式进行:MR=BR+VRMR=BR+VR把程序装入起始地址为把程序装入起始地址为10001000的内存区的内存区Mov r1,500Mov r1,500123412340 0100100500500600600Mov r1,1500Mov r1
8、,15000 01000100011001100150015001600160012341234作业的地址空间作业的地址空间存储空间存储空间装入程序装入程序静态映射优缺点静态映射优缺点优点:不需要硬件的支持,简单易实现,成本低;优点:不需要硬件的支持,简单易实现,成本低;缺点:程序必须占用连续的内存空间;一旦程序装入缺点:程序必须占用连续的内存空间;一旦程序装入后不能移动;后不能移动;主存利用率低;难以做到程序和数据的主存利用率低;难以做到程序和数据的共享。共享。动态地址映射(重定位)动态地址映射(重定位)动态地址重定位:动态地址重定位:在程序执行的过程中,每次将要访问的指令或数在程序执行的过
9、程中,每次将要访问的指令或数据逻辑地址转换为内存地址。据逻辑地址转换为内存地址。动态映射方法:动态映射方法:装入程序把程序和数据装入程序把程序和数据原样装入原样装入到已分配的存储区到已分配的存储区中,然后把这个存储区的起始地址送入中,然后把这个存储区的起始地址送入重定位寄存器重定位寄存器中。在程序执中。在程序执行时,再将相对地址转换成绝对地址。行时,再将相对地址转换成绝对地址。硬件支持:硬件支持:在动态地址重定位机构中,有一个在动态地址重定位机构中,有一个基地址寄存器基地址寄存器BRBR和一和一个个程序地址寄存器程序地址寄存器VRVR,一个,一个内存地址寄存器内存地址寄存器MRMR。转换过程:
10、转换过程:MR=BR+VRMR=BR+VR把程序装入起始地址为把程序装入起始地址为10001000的内存区的内存区123412340 0100100500500599599作业的地址空间作业的地址空间0 01000100011001100150015001599159912341234存储空间存储空间10001000+重定位寄存器重定位寄存器逻辑地址逻辑地址VRVR物理地址物理地址MRMRMOV r1MOV r1,500500 MOV r1MOV r1,500500 动态地址映射的过程动态地址映射的过程程序装入内存后,它所占用的内存区的程序装入内存后,它所占用的内存区的首地址首地址由系统送入由
11、系统送入基地址寄存器基地址寄存器BRBR中。中。在程序执行的过程中,若要访问内存,将访问的逻辑地址在程序执行的过程中,若要访问内存,将访问的逻辑地址送入送入VRVR中。中。地址转换机构把地址转换机构把VRVR和和BRBR中的内容相加,并将结果送入中的内容相加,并将结果送入MRMR中,中,作为实际访问的地址。作为实际访问的地址。动态重定位优缺点动态重定位优缺点优点:优点:1 1)程序占用的内存空间是动态可变的,当程序从)程序占用的内存空间是动态可变的,当程序从某个存储区移到另一个区域时,只需要修改相应的寄存器某个存储区移到另一个区域时,只需要修改相应的寄存器BRBR的内容即可;的内容即可;2 2
12、)一个程序不一定要求占用一个连续的)一个程序不一定要求占用一个连续的内存空间,可以部分地装入程序运行;内存空间,可以部分地装入程序运行;4 4)便于多个进程)便于多个进程共享同一个程序的代码。共享同一个程序的代码。动态地址重定位的代价:动态地址重定位的代价:1 1)需要硬件的支持;)需要硬件的支持;2 2)实现存)实现存储管理的软件算法较为复杂。储管理的软件算法较为复杂。4.2 程序的装入和链接程序的装入和链接(可能产生)可执行程序文件编译链接装入二进制内存映像程序处理步骤:编译-编译程序,负责检查语法错,涉及名空间。输入:源程序;输出:多个目标模块;链接-链接程序,负责将多个模块相关联,涉及
13、逻辑地址空间。输入:多个目标模块、库函数;输出:装入模块;装入:装入程序,负责内存分配和地址映射,涉及内存空间。输入:装入模块;输出:可执行的二进制内存映像。过程或函数可能分别对应一个模块!库链接程序装入模块装入程序编译程序产生的目标模块第一步第二步第三步内存4.1.2 4.1.2 程序的链接程序的链接 1.1.静态链接方式静态链接方式(Static Linking)(Static Linking)图 4-3 程序链接示意图 模块 ACALL B;Return;0L1模块 BCALL C;Return;0M1模块 CReturn;0N10模块 AJSR“L”Return;L1模块 BJSR“L
14、M”Return;LLM1LMLMN1模块 CReturn;(a)目标模块(b)装入模块链接前,链接前,每个模每个模块都有块都有各自的各自的相对起相对起始地址始地址0 0链接后,链接后,每个模每个模块使用块使用同一个同一个相对起相对起始地址始地址0 0名空间名空间逻辑地址空间逻辑地址空间在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装入模块,又称为链接成一个完整的装入模块,又称为可执行文件可执行文件,以后不再拆开。解决:对相对地解决:对相对地址进行修改;变换外部调用符号址进行修改;变换外部调用符号不要求!不要求!2.2.装入时动态链接装入时动态链接(Load(Loadtim
15、e Dynamic Linking)time Dynamic Linking)基本思想:基本思想:源程序被编译生成的目标模块,是在装入内存时,边装入边连接。源程序被编译生成的目标模块,是在装入内存时,边装入边连接。装入程序根据外部模块调用而逐个装入和连接。装入时动态链接方式有装入程序根据外部模块调用而逐个装入和连接。装入时动态链接方式有以下优点以下优点便于修改和更新:便于修改和更新:各个模块的修改极易编译和连接;各个模块的修改极易编译和连接;便于实现对目标模块的共享:便于实现对目标模块的共享:将内存中的一个模块可以连接到多个程序将内存中的一个模块可以连接到多个程序中。(中。(已在内存的就不必重
16、复装入已在内存的就不必重复装入)要运行的程序都必须在装入时,全部连接调入内存。要运行的程序都必须在装入时,全部连接调入内存。3.3.运行时动态链接运行时动态链接(Run-time Dynamic Linking)(Run-time Dynamic Linking)动态链接方式:动态链接方式:将对某些模块的链接推迟到执行时才实施,将对某些模块的链接推迟到执行时才实施,亦即,在执行过程亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由中,当发现一个被调用模块尚未装入内存时,立即由OSOS去找到该模块并去找到该模块并将之装入内存,把它链接到调用者模块上。特点如下:将之装入内存,把它链接到
17、调用者模块上。特点如下:特点:特点:凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。间。三种链接方式的差别相当于:三种链接方式的差别相当于:静态链接:上车(相当于进入内存)前集合起来静态链接:上车(相当于进入内存)前集合起来装入时链接:上车后集合起来(装入时链接:上车后集合起来(有利于共享已在内存中的部分有利于共享已在内存中的部分)运行时链接:开车后需要时集合起来(运行时链接:开车后需要时集合
18、起来(按需调入按需调入)4.2.1 4.2.1 程序的装入程序的装入1.1.绝对装入方式绝对装入方式(Absolute Loading Mode)(Absolute Loading Mode)程序中所使用的绝对地址,既可在编译或汇编时给出,程序中所使用的绝对地址,既可在编译或汇编时给出,也可也可由程序员直接赋予;由程序员直接赋予;编译程序生成的目标模块其逻辑地址与要装入内存的物理地编译程序生成的目标模块其逻辑地址与要装入内存的物理地址相同;址相同;缺点:单道程序可用,多道程序环境不能用。缺点:单道程序可用,多道程序环境不能用。采用绝对地址装入,目前很少使用采用绝对地址装入,目前很少使用2.2.
19、可重定位装入方式可重定位装入方式(Relocation Loading Mode)(Relocation Loading Mode)图 4-2 作业装入内存时的情况 LOAD 1,2500365LOAD 1,2500365100001100012500150005000250010000作业地址空间内存空间又称静态重定位:地址变换在装入时又称静态重定位:地址变换在装入时一次完成,其后不能移动。一次完成,其后不能移动。逻辑地址(相对地址)逻辑地址(相对地址)物理地址物理地址(绝对地(绝对地址)址)LOAD 1,LOAD 1,12500125003.3.动态运行时装入方式动态运行时装入方式(Den
20、amle Run-time Loading)(Denamle Run-time Loading)动态运行时装方式:动态运行时装方式:装入内存后的所有地址都仍是相对地址;装入内存后的所有地址都仍是相对地址;逻辑地址到物理地址的变换要逻辑地址到物理地址的变换要推迟到程序真正执行时才进行;推迟到程序真正执行时才进行;地址变换发生在程序执行过程中(即动态重定位)地址变换发生在程序执行过程中(即动态重定位)。为使地址转换不影为使地址转换不影响程序执行速度,必须使用硬件支持。响程序执行速度,必须使用硬件支持。链接和装入的关系(一)v静态链接会形成磁盘上的可执行文件,而装入时动态链接和运行时动态链接不会产生
21、磁盘上的可执行文件。v静态链接产生的可执行文件装入时内存是连续分配的,而地址映射既可采用可重定位装入方式(静态重定位)也可以采用动态运行时装入方式(动态重定位)链接和装入间的关系(二)v装入时动态链接方式可以分别给每个装入模块分配一块内存区域,因而装入时各模块不一定连续存放。v装入时的地址映射既可采用可重定位装入方式(静态重定位-链接后运行前一次性修改逻辑地址为物理地址)也可以采用动态运行时装入方式(动态重定位-运行时动态计算出逻辑地址到物理地址的映射)链接和装入间的关系(三)v运行时动态链接方式一般情况下后装入的模块和原先已装入的模块是不连续存放的。v运行时动态链接方式的地址变换不可能运行前
22、一次性映射地址,即不可能采用静态重定位方法,而只能使用动态重定位的方法。链接和装入间的关系(四)链接链接装入装入静态链接静态链接装入时动态链接装入时动态链接运行时动态链接运行时动态链接连续或不连续分配连续均可一般不连续静态重定位或动态重定位均可均可动态重定位链接:考虑格模块如何关联起来装入:考虑装在内存何处,以及如何进行地址变换4.2 4.2 连续分配方式连续分配方式4.2.1 4.2.1 单一连续分配单一连续分配 特征:特征:最简单的一种存储管理方最简单的一种存储管理方式,但只能用于单用户、单任务式,但只能用于单用户、单任务的操作系统中;常把内存分为系的操作系统中;常把内存分为系统区和用户区
23、两部分,系统区仅统区和用户区两部分,系统区仅提供给提供给OSOS使用,通常是放在内使用,通常是放在内存的低址部分;用户区是指除系存的低址部分;用户区是指除系统区以外的全部内存空间,统区以外的全部内存空间,提供提供给用户使用。给用户使用。OS用户区用户区4.2.2 4.2.2 固定分区分配固定分区分配 1.1.划分分区的方法划分分区的方法 分区大小相等,分区大小相等,即使所有的内存分区大小相等。即使所有的内存分区大小相等。缺点:缺缺点:缺乏灵活性,大作业无法运行,小作业浪费空间。乏灵活性,大作业无法运行,小作业浪费空间。分区大小不等,即划分为小、中、大不等的固定分区。分区大小不等,即划分为小、中
24、、大不等的固定分区。优优点:灵活性好。点:灵活性好。分配方法:分配方法:将用户空间划分为若干个固定大小的区域,在每个分将用户空间划分为若干个固定大小的区域,在每个分区中装入一道作业;有几个分区,就有几道并发的作业;有区中装入一道作业;有几个分区,就有几道并发的作业;有空闲分区时,可调入一适当大小的作业;最简单的一种多道空闲分区时,可调入一适当大小的作业;最简单的一种多道程序存储管理方法。程序存储管理方法。2.2.内存分配内存分配 :为了便于内存分配,将分区按照大小排队,并建立一为了便于内存分配,将分区按照大小排队,并建立一个分区表。如图所示。当为作业分配空间时,分配程序按照此表检个分区表。如图
25、所示。当为作业分配空间时,分配程序按照此表检索以合适分区分配;否则,拒绝分配。索以合适分区分配;否则,拒绝分配。缺点:缺点:空间浪费。空间浪费。图 4-4 固定分区使用表 4.2.3 4.2.3 动态分区分配动态分区分配 1.1.分区分配中的数据结构分区分配中的数据结构 (1)空闲分区表。(2)空闲分区链。图 4-5 空闲链结构 前向指针N20N个字节可用后向指针N20分配思想:分配思想:根据进程的实际需要,动态的为进程分配(切分)内根据进程的实际需要,动态的为进程分配(切分)内存空间,及需要多大,分配多大。提高内存的利用率。存空间,及需要多大,分配多大。提高内存的利用率。未分配区表用空闲区链
展开阅读全文