操作系统原理及应用(linux)(第二版)第4章存储器的管理课件文本

上传人:今*** 文档编号:106863429 上传时间:2019-10-16 格式:PPT 页数:114 大小:492.50KB
返回 下载 相关 举报
操作系统原理及应用(linux)(第二版)第4章存储器的管理课件文本_第1页
第1页 / 共114页
操作系统原理及应用(linux)(第二版)第4章存储器的管理课件文本_第2页
第2页 / 共114页
操作系统原理及应用(linux)(第二版)第4章存储器的管理课件文本_第3页
第3页 / 共114页
操作系统原理及应用(linux)(第二版)第4章存储器的管理课件文本_第4页
第4页 / 共114页
操作系统原理及应用(linux)(第二版)第4章存储器的管理课件文本_第5页
第5页 / 共114页
点击查看更多>>
资源描述

《操作系统原理及应用(linux)(第二版)第4章存储器的管理课件文本》由会员分享,可在线阅读,更多相关《操作系统原理及应用(linux)(第二版)第4章存储器的管理课件文本(114页珍藏版)》请在金锄头文库上搜索。

1、第4章 存储器管理,本章学习目标 本章主要讲解了存储器管理的基本方式,剖析了Linux 操作系统对内存的管理模式。通过对本章学习,读者应该达到以下学习目标: 重点掌握本章的基本概念,分页式存储管理技术和分段式存储管理技术,虚拟存储器的概念。 理解段页式存储管理技术,虚存中的置换算法。 了解Linux操作系统的存储管理技术。,第4章 存储器管理,1,教学内容,4.1 存储器管理概述 4.2 连续分配存储管理方式 4.3 分页存储管理方式 4.4 分段存储管理方式 4.5 虚拟存储器的基本概念 4.6 请求分页 4.7 请求分段存储管理 4.8 LINUX系统的内存管理方法 本章小结,2,4.1

2、存储器管理概述,4.1.1 存储器的层次 图4.1所示就是存储器的体系结构。,第4章 存储器管理,3,4.1.2 用户程序的处理过程,用户程序处理分以下几个阶段: (1)编译。由编译程序将用户源代码编译成若干个目标模块。 (2)链接。有链接程序将编译后形成的目标代码以及它们所需的库函数,链接在一起,形成一个装入模块。 (3)装入。有装入程序将装入模块装入内存。 处理过程示意图见4.2,第4章 存储器管理,4,第4章 存储器管理,5,1目标程序装入内存的方式,程序只有装入到内存后才能运行。装入方式分绝对装入方式、可重定位装入方式和动态运行时装入方式。 (1)绝对装入方式 在编译时,如果知道程序将

3、驻留在内存什么位置,那么编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块中的地址,将程序和数据装入内存。装入模块被装入内存后,不须对程序和数据的地址进行修改,程序中所使用的绝对地址,即可以在编译或汇编中给出,也可以有程序员直接给予。一般不让程序员给予地址,通常情况是在程序中采用符号地址,然后在编译或汇编时,将这些符号地址再转化为绝对地址。,第4章 存储器管理,6,(2)可重定位装入方式 又称静态重定位。是在程序执行之前,有操作系统的重定位装入程序完成。一般用于多道程序环境中,编译程序不能预知所编译的目标模块在内存什么地方。重定位程序根据装入程序的内存起始地址,直接修改所涉及到的逻辑地

4、址,将内存的起始地址加上逻辑地址得到正确的内存地址。,第4章 存储器管理,7,第4章 存储器管理,8,(3)动态运行时的装入方式,又称动态重定位。是在程序执行期间进行的。一般说来,这种转换有专门的硬件机构来完成,通常采用一个重定位寄存器 ,每次进行存储访问时,对取出的逻辑地址加上重定位寄存器的内容,形成正确的内存地址。如图4.4所示.,第4章 存储器管理,9,第4章 存储器管理,10,2目标程序链接,链接程序的功能,是将经过编译或汇编后得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。实现链接的方法有三种:静态链接、装入时动态链接和运行时动态链接。 (1)静态链接 设编译后得

5、到的三个目标模块A、B、C,它们的长度分别为L、M和N。 程序链接示意图如图4.5所示。需要完成的工作是对相对地址进行修改,同时变换外部调用符号,将每个CALL语句改为跳转到某个相对地址,从而形成一个完整的装入模块,又称可执行文件。通常不再拆开,运行时可直接装入内存。这种事先进行链接,以后不再拆开的方式称为静态链接。,第4章 存储器管理,11,(2)装入时动态链接 用户源程序经编译后得到目标模块,是在装入内存时边装入边链接的。即在装入一个目标模块时,若发生一个外部模块调用时,将引起装入程序去找相应的外部目标模块,并将它装入内存。 (3)运行时动态链接 装入时进行的链接虽然可以将整个模块装入到内

6、存的任何地方,但装入摸块的结构是静态的。在程序执行期间装入模块是不可改变的,因为无法预知本次要运行哪个模块,只能将所有可能要运行的模块,在装入时全部链接在一起,使得每次执行的模块都相同。这样效率很低,因此采用运行时动态链接。在这种链接方式中,可将某些目标模块的链接,推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,有OS去找该模块,将它装入内存,并把它链接到调用模块上。,第4章 存储器管理,12,第4章 存储器管理,13,4.2连续分配存储管理方式,连续分配是指为一个用户程序分配一个连续的内存空间,连续分配有两种:单道程序的连续分配和多道程序的连续分配。多道程序的连续分配

7、又称为分区分配方式,它包括固定分区、动态分区和动态重定位分区三种。下面就是对各种连续存储管理的研究。,第4章 存储器管理,14,4.2.1 单道程序的连续分配,这是一种最简单的存储方式,只能用于单用户、单任务的操作系统。在这种存储方式中,内存分为两个分区:系统区和用户区。 1系统区。 仅供操作系统使用,一般驻留在低址部分,其中包括中断向量。,第4章 存储器管理,15,2用户区 操作系统以外的全部空间。其结构图如图4.6所示。,第4章 存储器管理,16,为了避免用户程序执行时访问了操作系统所占空间,应将用户程序的执行严格控制在用户区域。称之为存储保护,保护措施主要是有硬件实现。硬件提供界地址寄存

8、器和越界检查机构。将操作系统所在空间的下界a存放在界地址寄存器中,用户程序执行时,每访问一次主存,越界检查机构便将访问主存的地址和界地址寄存器的值进行比较,若出界则报地址错。,第4章 存储器管理,17,第4章 存储器管理,18,4.2.2 固定分区分配方式,固定分区管理比较简单,本节仅以举例的方式说明其原理。设一个容量为32k的实际内存,分割成如下若干区域,如图所示。,这种分区分配方式在整个系统运行期间是不变的。在这种情况下,当为一个作业分配空间时,应该先判定它分在哪个区域比较合适,然后再进行分配。,第4章 存储器管理,19,4.2.3 动态分区分配,动态分区分配需要解决的问题有三个: (1)

9、分区分配中所用的数据结构。 (2)分区的分配算法。 (3)分区的分配与回收操作。 1分区分配中的数据结构。 要实现分区分配,系统必须配置相应的数据结构,用来记录内存的使用情况。为分配提供依据。常用的数据结构有两种:,第4章 存储器管理,20,(1)空闲分区表 其表的结构表所示:,第4章 存储器管理,21,(2)空闲分区链,为了实现对空闲分区的分配与链接,在每个分区的起始部分,设置一些用于控制分区分配的信息,以及用于链接各分区的前向指针:在分区尾部则设置一后向指针;然后形成一个双向链。其结构如图4.8所示。,如图4.8 空闲链结构,第4章 存储器管理,22,二、分区分配算法,为把一个新作业装入内

10、存,须按照一定的分配算法,从空闲区表或空闲分区链中,选一个分区分配给该作业,目前常用以下三种分配算法: 1首次适应算法 此算法可以在上述两种数据结构上实施,但通常要求自由块按始地址从小到大的顺序排序。当须分配空间时,总是从头开始查找,直到找到一个符合要求的自由块。,第4章 存储器管理,23,2最佳适应法 可以在上述两种数据结构上实施,但要求按自由块从小到大的顺序排序。分配从头开始查找,即从小端到大端的方向查找。直到找到第一个满足要求的自由块。显然,所能找到的自由块能满足要求的最小块。 3最坏适应算法 数据结构和排序方法如上。当分配空间时不 是从小往大查,而是从大往小查,因此,所找到的自由块是所

11、有自由块中最大者。,第4章 存储器管理,24,三、分区分配和回收,在动态分区存储管理方式中,主要操作是分配和回收内存。 1分配内存 首先,系统利用某钟算法,从空闲区表中找到所需的分区。设请求的分区的大小为u.size,表中每个分区的大小可表为m.size。若m.size-u.sizesize (size是事先规定的不再切割的剩余分区的大小),说明多余部分太小,可不再切割,将整个分区分给请求者;否则,从该分区中划分出与请求的大小相等的内存空间分配出去,余下的部分仍留在空闲分区链或空闲分区表中。最后,将分配的首地址返回给调用者。,第4章 存储器管理,25,2回收内存,回收分区的主要工作是:首先检查

12、是否有临接的空闲区,如有则合并,使之成为一个连续的空闲区,而不是许多零散的小的部分;之后,修改有关的分区描述信息。一个回收分区邻接空闲区的情况有四种:如图4.9所示。第一种情况是回收分区r上邻的一个空闲区,此时应合并成为一个连续的空闲区,其始址为r上邻的空闲区始址,而大小为二者之和。第二种情况与r下面的空闲区相邻。直接合并。第三种情况是与上下空闲区相邻。将三个区域合并成一个连续的空闲区。第四种情况不和任何空闲区相邻,应建立一个新的空闲区,并加到自由主存队列中。,第4章 存储器管理,26,图4.9内存回收时的情况,第4章 存储器管理,27,4.2.4 可重定位分区,1紧凑 在连续分配方式中,必须

13、把一个系统程序或用户程序,装入到连续的内存空间中,如果在系统中若干个小的分区,其总容量大于要装入的程序,但由于它们不相连接,使该程序不能装入内存。例如图4.9(a)所示.,紧凑后如图4.9(b)所示。,第4章 存储器管理,28,第4章 存储器管理,29,2动态重定位,在该方式中,将程序中的相对地址转换为物理地址的工作被推迟到程序指令真正要执行时进行。因此,允许作业在运行过程中移动的技术,必须获得硬件地址变换机构的支持。即在系统增加一个重定位寄存器,用它来装入程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中地址相加而形成的。,第4章 存储器管理,30,第4章 存

14、储器管理,31,3动态重定位分区分配算法,动态重定位分区分配算法,与动态分区分配算法基本相同;差别仅在于:在这种分配算法中,增加了“紧凑”功能,通常是找不到足够大的空闲区来满足用户的需要,进行“紧凑”。然后寻找合适的内存空间。,第4章 存储器管理,32,4.3 分页存储管理方式,4.3.1页式系统应解决的问题 采用“紧凑”技术解决按区分配中存在的碎片问题,是以花费CPU时间为代价换来的。为了寻找解决碎片问题的新途径,人们很容易想到让程序不连续存放,例如,有一个作业要求投入运行,其程序的地址空间是3KB,而主存当前只有两个各为1KB和2KB的空闲区。显然各空闲区的大小比该程序的地址空间小,而总和

15、却相同。这样就考虑将程序分开存放。放在不相邻的两个区域中。这正是分页的思想。在分页存储管理中,主存被分成一系列的块,程序的地址空间被分成一系列的页面。然后将页面存放在主存块中。为了便于实现动态地址变,一般主存的块和页面大小相等并为2的幂次。,第4章 存储器管理,33,4.3.2分页存储管理的基本方法,一、页面和物理块 在分页存储管理中,将一个进程的逻辑地址空间分成若干个相等的片。称为页面或页。相应的,内存空间也分成与页相同的大小的若干个存储块,或称为物理块或页框。为它们从0开始依次编号。如图4.11所示。为进程分配内存时,以块为单位将进程中若干页分别装入不相接的块中。由于进程的最后一页经常装不

16、满一块,而形成不可利用的碎片称为“页内碎片”。 二、页表 在分页系统中,允许进程的每一页离散地存储在内存的任一物理块中,但系统应能保证进程的正确运行。即能在内存中找到每个页面所对应的物理块。为此系统又为每个进程建立一张页面映象表,简称页表。在进程地址空间的所有页内(0n),依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块。见图的中间部分。可见页表的作用实现了从页号到物理块号的地址映象。即使在简单的分页系统中,也常在页表的表项中设置一存取控制字。用于对存储块中内容进行保护。,第4章 存储器管理,34,图4-11页表,第4章 存储器管理,35,三、虚地址结构,如何利用页表进行地址变换,这和计算机所采用的地址结构有关。而地址结构又与所选择的页面尺寸有关。比如,当CPU给出的虚地址长度为32位,页面的大小为4kb时,在分区系统中的地址格式如图4.12所示。页号页内偏移量 如图4-12虚地址结构,第4章 存储器管理,36,四、页式地址变换,下面图4.12所示作业2程序中的一条指令的执行过程,来说明页式系统中的地址变换过程。程序的地址空间中第10

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号