您好,欢迎访问三七文档
12020/1/29第3章存储管理计算机系统中的存储器可以分为两种:内存储器和辅助存储器。前者可被CPU直接访问,后者不能。辅助存储器与CPU之间只能够在输入输出控制系统的管理下,进行信息交换。既然内存储器可被CPU直接访问,因此它是计算机系统中的一种极为重要的资源。在操作系统中,把管理内存储器的部分称为“存储管理”。能否合理地使用内存,会在很大程度上影响到整个计算机系统的性能。退出22020/1/29本章将要介绍两个重要概念一是“地址重定位”。在多道程序设计环境下,用户无法事先约定各自占用内存的哪个区域,也不知道自己的程序会放在内存的什么位置,但程序地址如果不反映其真实的存储位置,就不可能得到正确的执行。所以在存储管理中,必须解决地址的重定位问题。二是“虚拟存储”。曾经有人说过:“存储器有多大,程序就会有多大”。因此,在计算机系统中,虽然内存的容量随着硬件的发展得到了很大的扩充,但仍然无法满足实际的需要,必须打破“程序只有全部在内存,才能得以运行”的限制。为此,通过“虚拟存储”这一技术手段,可以达到不用真正扩充内存而“扩充”内存的目的。32020/1/29第3章存储管理3.1主存管理概述3.2连续分配存贮管理3.3覆盖技术与交换技术3.4分页存储管理3.5分段存储管理3.6段页式存储管理42020/1/293.1存储器管理概述3.1.1存储器管理的主要任务3.1.2存储器管理的主要功能3.1.3程序的装入与链接3.1.4存储管理方式52020/1/293.1.1存储器管理的主要任务存储管理的主要任务是尽可能方便用户和提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。62020/1/293.1.2主存管理的功能3.1.2.1地址映射3.1.2.2主存分配与回收3.1.2.3存储保护3.1.2.4主存扩充(虚拟内存)72020/1/293.1.2.1地址映射(地址重定位)内存的每个存储单元都有一个编号,这种编号称为内存地址(或称为物理地址,绝对地址)。内存地址的集合称为内存空间(或物理地址空间)。82020/1/29要求用户用内存地址编程是非常困难的,尤其是在多道程序设计的环境中。用户编程所用的地址称为逻辑地址(或程序地址,或虚地址),由逻辑地址组成的空间称为逻辑地址空间(或程序地址空间)。92020/1/29地址映射LoadA2003456。。1200物理地址空间LoadAdata1data13456源程序LoadA20034560100200编译连接逻辑地址空间BA=1000102020/1/29地址映射的方式我们把用户程序装入内存时对有关指令的地址部分的修改定义为从程序地址到内存地址的地址映射,或称为地址重定位。地址映射的方式:1、静态地址映射2、动态地址映射112020/1/291、静态地址映射程序被装入内存时由操作系统的连接装入程序完成程序的逻辑地址到内存地址的转换。122020/1/29映射方法假定程序装入内存的首地址为BR,程序地址为VR,内存地址为MR,则地址映射按下式进行:MR=BR+VR。例如,程序装入内存的首地址为1000,则装配程序就按MR=1000+VR对程序中所有地址部分进行修改,修改后指令LoadA,200就变为LoadA,1200132020/1/29优缺点优点:不需要硬件的支持。缺点:程序必须占用连续的内存空间;一旦程序装入后不能移动。142020/1/292、动态地址映射动态地址重定位是在程序执行的过程中,每次访问内存之前,将要访问的程序地址转换为内存地址。一般来说这种转换是由专门的硬件机构来完成的。152020/1/29映射方法最简单的硬件机构是重定位寄存器。在地址重定位机构中,有一个基地址寄存器BR和一个程序地址寄存器VR,一个内存地址寄存器MR。162020/1/2903456......LOADA200......0100200300.........LOADA2003456110012001300200VR+1000BR172020/1/29地址映射的具体过程程序装入内存后,它所占用的内存区的首地址由系统送入基地址寄存器BR中。在程序执行的过程中,若要访问内存,将访问的逻辑地址送入VR中。地址转换机构把VR和BR中的内容相加,并将结果送入MR中,作为实际访问的地址。182020/1/29动态地址映射的优缺点优点:程序占用的内存空间是动态可变的,当程序从某个存储区移到另一个区域时,只需要修改相应的寄存器BR的内容即可。一个程序不一定要求占用一个连续的内存空间。可以部分地装入程序运行。便于多个进程共享同一个程序的代码。动态地址重定位的代价:需要硬件的支持。实现存储管理的软件算法较为复杂。192020/1/293.1.2.2主存分配与回收要完成内存的分配和回收工作,要求设计者选择和确定以下几种策略和结构:调入策略放置策略置换策略分配结构202020/1/29调入策略用户程序在何时调入内存的策略。目前有请调和预调两种212020/1/29放置策略用户程序调入内存时,确定将其放置在何处的策略。222020/1/29置换策略当需要将某个用户程序调入内存而内存空间又不够时,就要确定哪个或哪些程序可以从内存中移走。232020/1/29分配结构分配结构是用来登记内存使用情况的数据结构。如空闲区表、空闲区队列等。242020/1/29引起内存分配和回收的原因进程的开始的结束。进程运行的过程中,它所占用的内存也可能发生变化。如栈的变化。进程映像在内存和外存之间传递。由于内存有限,系统中不可能容纳所有进程,有些进程的映像可以存放在外存,当要运行这些进程时,必须把它们调入内存。系统为了充分利用内存空间,有时可能对内存空间进行调整。252020/1/293.1.2.3存储保护保证在内存中的多道程序只能在给定的存储区域内活动并互不产生干扰。包括:防止地址越界防止越权(对共享区有访问权)262020/1/29存储保护的硬件支持界地址寄存器(界限寄存器)存储键272020/1/29界地址寄存器(界限寄存器)界地址寄存器被广泛使用的一种存储保护技术机制比较简单,易于实现282020/1/29实现方法在CPU中设置一对下限寄存器和上限寄存器存放用户作业在主存中的下限和上限地址也可将一个寄存器作为基址寄存器,另一寄存器作为限长寄存器(指示存储区长度)每当CPU要访问主存,硬件自动将被访问的主存地址与界限寄存器的内容进行比较,以判断是否越界如果未越界,则按此地址访问主存,否则将产生程序中断——越界中断(存储保护中断)292020/1/29图示302020/1/293.1.2.4主存扩充(虚拟内存)为了使程序员在编程时不受内存的结构和容量的限制,系统为用户构造一种存储器,其结构可能与内存结构不同,容量可能远远超过内存的实际容量。这种面向编程的存储器称为虚拟存储器。由虚存构成的存储空间称为虚存空间。或称虚地址空间。312020/1/29实现虚拟内存的基本原理将程序正在使用的部分内容放在内存,而暂时不用的部分放在外存,在需要时由系统调入内存,并将不需要(或暂不需要)的部分调出内存。由于程序在执行时,在一段时间内一般仅使用它的程序的一部分(或一小部分),所以程序仅有部分装入内存完全能够正确执行。要由操作系统结合相关硬件来完成上述工件,这样计算机好象为用户提供了一个容量远大于内存的存储器322020/1/293.1.3程序的装入与链接3.1.3.1.源程序的执行过程3.1.3.2.程序的链接3.1.3.3.程序的装入332020/1/293.1.3.1.源程序的执行过程通常要经过编译、链接和装入几个步骤,其控制示意如图5-1所示(p134)。(1)编译。由编译程序将用户源代码编译成若干个目标模块。(2)链接。由链接程序将编译后形成的目标模块以及它们所需要的库函数,链接在一起,形成一个装入模块。(3)装入。由装入程序将装入模块装入主存的过程。342020/1/293.1.3.2.程序的链接链接程序的功能是将经过编译或汇编后所得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。实现链接的方法有三种静态链接:事先进行链接,以后不再拆开的链接方式对相对地址进行修改变换外部调用符号352020/1/293.1.3.2.程序的链接装入时动态链接:用户源程序经编译后所得到的目标模块,是在装入主存时,边装入边链接的。改变相对地址的方式如方法一便于修改和更新便于实现目标共享362020/1/293.1.3.2.程序的链接运行时动态链接:可将某些目标模块的链接,推迟到执行时才进行。灵活动态邦定要付出代价372020/1/293.1.3.3.程序的装入程序的装入就是把程序装入内存空间。采用三种方式(1)绝对装入方式:是由装入程序根据装入模块中的地址,将程序和数据装入主存。(2)可重定位方式:是由装入程序根据主存当前的实际使用情况,将装入模块装入到主存适当的地方。(3)动态运行时装入方式:动态运行时的装入程序,在把装入模块装入主存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序要真正执行时才进行。382020/1/293.1.3.3.程序的装入绝对装入方式:是由装入程序根据装入模块中的地址,将程序和数据装入主存若知道程序在主存的位置,编译程序将产生绝对地址目标模块绝对地址一般由编译程序给出程序被装入内存后地址不允许改变只适于单道环境392020/1/293.1.3.3.程序的装入可重定位方式:是由装入程序根据主存当前的实际使用情况,将装入模块装入到主存适当的地方。即是静态重定位适于多道环境但不允许程序在内存中移动402020/1/293.1.3.3.程序的装入动态运行时装入方式:动态运行时的装入程序,在把装入模块装入主存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序要真正执行时才进行。适于多道环境允许程序移动,如交换动态重定位需要特殊硬件支持412020/1/293.1.4存储管理方式单用户连续存储管理方式固定分区存储管理方式可变分区存储管理方式页式存储管理方式段式存储管理方式段页式存储管理方式虚拟存储管理方式422020/1/293.2连续存储管理方式3.2.1单用户连续存储管理方式3.2.2固定分区存储管理方式3.2.3可变分区存储管理方式3.2.4动态重定位分区分配3.2.5IBM-PC中存储管理方式432020/1/293.2.1单用户连续存储管理方式3.2.1.1基本原理3.2.1.2主存空间的分配与回收3.2.1.3地址转换与存储保护3.2.1.4管理特点442020/1/293.2.1.1基本原理这是最早出现的一种存储管理方式。内存分为:系统区和用户区(下页图)在主存中仅驻留一道程序,整个用户区为一用户独占。当用户作业空间大于用户区时,该作业不能装入。这种分配方式仅能用于单用户、单任务的操作系统中,不能用于多用户系统和单用户多任务系统中。452020/1/29462020/1/293.2.1.2主存空间的分配与回收1.主存空间的分配其分配过程是:首先,从作业队列中取出队首作业;判断作业的大小是否大于用户区的大小,若大于则作业不能装入,否则,可以把作业装入用户区。它一次只能装入一个作业。2.主存空间的回收作业一旦进入主存,就要等到它结束后才能释放主存,再装入第二个作业即可。472020/1/293.2.1.3地址转换与存储保护1.地址转换2.存储保护482020/1/291.地址转换它采用静态分配方式。处理器设置两个寄存器:界限寄存器和重定位寄存器。界限寄存器用来存放主存用户区的长度,重定位寄存器用来存放用户区的起始地址。地址转换过程是:CPU获得的逻辑地址首
本文标题:OS03存储管理
链接地址:https://www.777doc.com/doc-3364174 .html