1. 首页
  2. 文档大全

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

上传者:5****1 2022-07-10 01:39:00上传 PPT文件 492.51KB
操作系统原理及应用(Linux)(第二版)第4章存储器的管理课件文本_第1页 操作系统原理及应用(Linux)(第二版)第4章存储器的管理课件文本_第2页 操作系统原理及应用(Linux)(第二版)第4章存储器的管理课件文本_第3页

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

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

2、1.1 存储器的层次存储器的层次图4.1所示就是存储器的体系结构。高速缓冲存储器主存储器辅助存储器存储容量递增存取速度递增图4. 1 多级存储器体系示意图第第4章章 存储器管理存储器管理34.1.2 用户程序的处理过程用户程序的处理过程用户程序处理分以下几个阶段:(1)编译。由编译程序将用户源代码编译成若干个目标模块。(2)链接。有链接程序将编译后形成的目标代码以及它们所需的库函数,链接在一起,形成一个装入模块。(3)装入。有装入程序将装入模块装入内存。处理过程示意图见4.2第第4章章 存储器管理存储器管理4编译程序产生的目标模块程序数据库函数链接程序装入模块装入程序图.2 对用户程序的处理步

3、骤第第4章章 存储器管理存储器管理51目标程序装入内存的方式目标程序装入内存的方式 程序只有装入到内存后才能运行。装入方式分绝对装入方式、可重定位装入方式和动态运行时装入方式。(1)绝对装入方式 在编译时,如果知道程序将驻留在内存什么位置,那么编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块中的地址,将程序和数据装入内存。装入模块被装入内存后,不须对程序和数据的地址进行修改,程序中所使用的绝对地址,即可以在编译或汇编中给出,也可以有程序员直接给予。一般不让程序员给予地址,通常情况是在程序中采用符号地址,然后在编译或汇编时,将这些符号地址再转化为绝对地址。第第4章章 存储器管理存储器管

4、理6(2)可重定位装入方式 又称静态重定位。是在程序执行之前,有操作系统的重定位装入程序完成。一般用于多道程序环境中,编译程序不能预知所编译的目标模块在内存什么地方。重定位程序根据装入程序的内存起始地址,直接修改所涉及到的逻辑地址,将内存的起始地址加上逻辑地址得到正确的内存地址。第第4章章 存储器管理存储器管理7100001200013500360Load 1,350015000内存空间020003500360Load 1,35005000作业地址空间图4.3 作业装入内存时的情况第第4章章 存储器管理存储器管理8(3)动态运行时的装入方式)动态运行时的装入方式 又称动态重定位。是在程序执行期

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

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

7、入时进行的链接虽然可以将整个模块装入到内存的任何地方,但装入摸块的结构是静态的。在程序执行期间装入模块是不可改变的,因为无法预知本次要运行哪个模块,只能将所有可能要运行的模块,在装入时全部链接在一起,使得每次执行的模块都相同。这样效率很低,因此采用运行时动态链接。在这种链接方式中,可将某些目标模块的链接,推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,有OS去找该模块,将它装入内存,并把它链接到调用模块上。第第4章章 存储器管理存储器管理120L-1模块ACALL BReturn ;模块BCALL CReturn ;模块CReturn ;0M-1N-10目标模块装入模块

8、0L-1模块AJSR “L”Return ;模块BJSR”L+M” Return模块CReturnLL+M-1L+ML+M+N-1图4.5 程序链接示意图第第4章章 存储器管理存储器管理134.2连续分配存储管理方式连续分配存储管理方式 连续分配是指为一个用户程序分配一个连续的内存空间,连续分配有两种:单道程序的连续分配和多道程序的连续分配。多道程序的连续分配又称为分区分配方式,它包括固定分区、动态分区和动态重定位分区三种。下面就是对各种连续存储管理的研究。第第4章章 存储器管理存储器管理144.2.1 单道程序的连续分配单道程序的连续分配 这是一种最简单的存储方式,只能用于单用户、单任务的操

9、作系统。在这种存储方式中,内存分为两个分区:系统区和用户区。1系统区。 仅供操作系统使用,一般驻留在低址部分,其中包括中断向量。第第4章章 存储器管理存储器管理152用户区 操作系统以外的全部空间。其结构图如图4.6所示。操作系统用户程序0a+1na图4.6所示第第4章章 存储器管理存储器管理16 为了避免用户程序执行时访问了操作系统所占空间,应将用户程序的执行严格控制在用户区域。称之为存储保护,保护措施主要是有硬件实现。硬件提供界地址寄存器和越界检查机构。将操作系统所在空间的下界a存放在界地址寄存器中,用户程序执行时,每访问一次主存,越界检查机构便将访问主存的地址和界地址寄存器的值进行比较,

10、若出界则报地址错。第第4章章 存储器管理存储器管理17界限寄存器重定位寄存器CPU+逻辑地址物理地址地址错内存图4.7 地址映射和地址保护第第4章章 存储器管理存储器管理184.2.2 固定分区分配方式固定分区分配方式 固定分区管理比较简单,本节仅以举例的方式说明其原理。设一个容量为32k的实际内存,分割成如下若干区域,如图所示。操作系统10k小作业4k中等作业区6k大作业区12k 这种分区分配方式在整个系统运行期间是不变的。在这种情况下,当为一个作业分配空间时,应该先判定它分在哪个区域比较合适,然后再进行分配。第第4章章 存储器管理存储器管理194.2.3 动态分区分配动态分区分配动态分区分

11、配需要解决的问题有三个:(1)分区分配中所用的数据结构。(2)分区的分配算法。(3)分区的分配与回收操作。1分区分配中的数据结构。 要实现分区分配,系统必须配置相应的数据结构,用来记录内存的使用情况。为分配提供依据。常用的数据结构有两种:第第4章章 存储器管理存储器管理20(1)空闲分区表其表的结构表所示:序号分区大小(kb)分区始址(k)状态16444可用224132可用340210可用430270可用5第第4章章 存储器管理存储器管理21(2)空闲分区链)空闲分区链 为了实现对空闲分区的分配与链接,在每个分区的起始部分,设置一些用于控制分区分配的信息,以及用于链接各分区的前向指针:在分区尾


文档来源:https://www.renrendoc.com/paper/212694223.html

文档标签:

下载地址