您好,欢迎访问三七文档
第4章基本存储管理4.1存储管理预备知识4.1.1用户程序的四个处理阶段4.1.2地址重定位4.1.3程序的链接4.1.4存储管理的功能4.2分区存储管理4.2.1固定分区存储管理4.2.2可变分区存储管理4.2.3其他管理技术:覆盖、交换、伙伴系统4.3分页式存储管理4.3.1分页式存储管理的基本思想4.3.2分页式存储管理的地址转换4.3.3页帧的分配与回收4.4分段式和段页式存储管理4.4.1分段式存储管理4.4.2段页式存储管理4.1存储管理预备知识4.1.1用户程序的四个处理阶段编辑阶段1.编辑阶段用户源程序翻译阶段目标程序代码其他代码库代码链接编辑阶段可执行程序代码装入阶段程序地址空间磁盘用汇编语言或某高级语言编写程序,是产生用户程序的编辑阶段,该阶段的结果是得到“源程序”文件。翻译阶段2.为了程序的运行,先应使用汇编程序或编译程序对源程序进行翻译处理,产生出称为“目标程序”的二进制程序代码,这属于翻译阶段。链接编辑阶段3.把目标程序代码链接装配到一起,成为一个统一的程序整体。经过链接编辑阶段,得到用户程序相对于“0”编址的一个完整的二进制目标程序代码。装入阶段4.装入阶段的任务,是根据内存的使用情况,为进入内存的程序分配存储区,对程序中的地址进行调整。返回目录4.1.2地址重定位1.用户程序的两种地址和空间内存单元的地址称为“绝对地址”或“物理地址”。从任何一个绝对地址开始的一段连续的内存空间,被称为“物理地址空间”,或“绝对地址空间”。.用户程序的逻辑地址空间0k内存装入用户程序的物理地址空间aa+k逻辑地址物理地址程序通过链接编辑,产生出相对于“0”计算的地址空间,这个地址空间称为是用户程序的“相对地址空间”,或“逻辑地址空间”,其地址称为“相对地址”或“逻辑地址”。系统所接受的,就是这种相对于“0”编址的用户程序。4.1.2地址重定位.用户程序的逻辑地址空间0k内存装入用户程序的物理地址空间aa+k逻辑地址物理地址在多道程序设计环境下,用户无法事先指定要占用内存的哪个区域,也不知道自己的程序将会被放在内存的什么地方。.这样的程序是不可能直接投入运行的,因为程序中的地址没有能够反映出它所在存储区的真正存储位置。2.地址的重定位程序被装入到分配给它的内存储区时,必须对每条指令里所涉及到的逻辑地址进行修改,使它们能够正确地反映出所在的存储位置。这种把逻辑地址转换成物理地址的过程,称为地址的“重定位”。.用户程序A的相对地址空间xxxxxx01001KB2KB3KB3000call100内存xxxxxx20KB20KB+10021KB22KB23KB20KB+3000call100操作系统0X内存xxxxxx20KB20KB+10021KB22KB23KB20KB+3000call20580操作系统0内存xxxxxx22KB22KB+10023KB24KB25KB22KB+3000call226280操作系统20KB(a)(b)(c)(d)即在程序装入内存之前,程序指令中的地址就已经是绝对地址,已经正确地反映了它将要进入的存储区位置。3.地址定位的三种方式.绝对定位方式(1)优点是程序中的逻辑地址与实际内存的物理地址相同,不再需要对指令中的地址进行任何重定位,装入到指定的内存位置就可以运行了。缺点是编程人员要熟悉内存使用情况,要小心对待指令中的地址,不能出差错;程序在内存不能移动,只能固定在该存储区内;对程序所作的微小修改,都可能牵扯到程序整体的变动;不适用多道程序设计环境。3.地址定位的三种方式.静态重定位方式(2)重定位装入程序:功能是:根据当前内存使用情况,为欲装入的二进制目标程序分配所需存储区;根据所分配的存储区,对程序中的指令地址进行重定位;将重定位后的二进制目标程序装入到指定的存储区中。.由于地址重定位在程序执行前完成,因此称为“静态重定位”,或“静态地址绑定”。特点是:重定位由软件实现,无须硬件支持;在程序运行前完成地址重定位工作;地址重新计算和修改是在程序装入时集中完成;物理地址空间里的目标程序与原逻辑地址空间里的目标程序已不相同;位于物理地址空间里的用户程序不能在内存中移动,除非重新进行地址定位;适用于多道程序设计环境。若将地址定位的时间推迟到程序执行时进行,那么称其为地址的“动态重定位”方式。.动态重定位方式(3).对程序实行动态重定位需要硬件支持:一个地址转换机构。它由地址转换线路和一个“定位寄存器”(也称“基址寄存器”)组成。当调度到程序运行时,就把它所在物理空间的起始地址加载到定位寄存器中。CPU每执行一条指令,就把指令中的相对地址与定位寄存器中的值相“加”,得到绝对地址。然后按这绝对地址去执行指令,访问所需要的存储位置。xxxxxx22KB22KB+10023KB24KB25KB22KB+3000call1000操作系统20KB用户程序A的相对地址空间xxxxxx01001KB2KB3KB3000call10022KB定位寄存器1002262822528内存返回目录静态重定位在装入时一次性集中把程序指令中所有地址全部加以重定位;动态重定位则是每执行一条指令时,才其地址加以重定位。静态重定位在程序运行之前完成地址转换;动态重定位则是将地址转换的时刻推迟到指令执行时进行。.静态重定位和动态重定位的比较(4)静态重定位由软件完成地址转换;动态重定位由硬件地址转换机构完成。静态重定位时原来的指令地址被修改了;实行动态重定位,不对指令本身做修改。返回目录4.1.3程序的链接1.链接的含义.链接编辑是程序运行前经历的阶段,目的是把单独翻译出来的一个个目标程序代码,链接编辑产生出一个统一的目标程序代码,然后提交给装入程序。程序段A调用B:返回返回返回程序段B程序段C调用C:外部引用外部引用长度L长度M长度N相对地址0L-1返回返回返回LL+M-1L+ML+M+N-1JSRLJSRL+M程序段A程序段B程序段C链接编辑0L-10M-10N-1目标程序代码中,可能会出现对其他程序段的调用,称为“外部引用”。..在把程序段链接成一个统一的大相对地址空间0~L+M+N-1后,就知道程序段B在这个空间里的入口地址是L,程序段C的入口地址是L+M。应把原先用符号表示的外部引用“调用B”等修改成诸如“JSRL”的转移指令。这就是“链接编辑”的含义所在。可把对程序段的链接编辑工作推迟到程序执行时进行:遇到外部引用时,才对所涉及的程序段进行链接编辑工作,才将这段程序纳入到统一的地址空间中。由于这样的链接编辑工作是在程序运行时根据需要进行的,因此称为“动态链接”。静态链接,是指整个链接编辑工作发生在程序运行之前,由链接编辑程序将一个个程序段的相对地址空间链接成为一个大的、统一的相对地址空间。由于这样的工作是在程序运行之前,因此称为是“静态链接”。2.静态链接和动态链接..在程序执行过程中,有些程序段不一定会用到。比如,考虑到程序执行过程中可能出现错误,于是编写了有关出错处理的程序段。如果程序执行中没有出错,那么静态链接时为链接出错处理程序段所付出的花销就白费了。.根据实施链接编辑的不同时刻,可把链接分为静态链接和动态链接两种。返回目录.4.1.4存储管理的功能内存的分配与回收.存储保护和共享.地址定位.存储扩充返回目录用户区分为“使用区”和“空闲区”两部分,如图(b)所示。使用区是用户作业程序真正占用的连续存储区域;空闲区是分配给了用户、但未被用户使用的区域,称为“内部碎片”。4.2分区存储管理4.2.1固定分区存储管理1.单一分区存储管理.单一分区存储管理的系统,任何时刻只有一个用户程序驻留内存。因此内存为两个部分:供操作系统使用的系统区和供用户程序使用的用户区。作业3作业2作业1内存0ab操作系统用户区内存0ab操作系统使用区空闲区用户区c(a)(b).单一分区存储管理系统的特点:(1)总是把一个连续的用户区分配给一个用户使用,如图(a)中的a~b区域。(2)(3)这种系统只适用于单用户的情况。(4)进入内存的作业,独享系统中的所有资源,包括内存中的整个用户区。(5)由于整个用户区都分配给了一个用户,因此作业程序进入用户区后,没有移动的必要。所以采用这种存储管理策略,对用户程序实行静态重定位。用户区分为“使用区”和“空闲区”两部分,4.2分区存储管理4.2.1固定分区存储管理1.单一分区存储管理.单一分区存储管理的系统,任何时刻只有一个用户程序驻留内存。因此内存为两个部分:供操作系统使用的系统区和供用户程序使用的用户区。作业3作业2作业1内存0ab操作系统用户区内存0ab操作系统使用区空闲区用户区c(a)(b).单一分区存储管理系统的特点:(1)总是把一个连续的用户区分配给一个用户使用(2)(3)这种系统只适用于单用户的情况。(4)进入内存的作业,独享系统中的所有资源,包括内存中的整个用户区。(5)对用户程序实行静态重定位。内存0ab操作系统使用区空闲区ca界限寄存器为有效阻止用户程序指令中的地址闯入操作系统所占用的区域,在CPU中会设置一个用于存储保护的专用寄存器.界限寄存器中,总是存放内存用户区的起始地址。CPU在核心态下工作时,允许访问内存中的任何地址;CPU在用户态下工作时,对内存的每一次访问,都要在硬件的控制下,与界限寄存器中的内容进行比较。一旦发现所访问的地址小于界限寄存器中的地址,产生“地址越界”中断,阻止这次访问的进行,从而将作业限制在规定的存储区域内运行,确保操作系统中的信息不受外来的破坏。界限寄存器每次只能有一个作业进入内存,故不适用于多道程序设计,整个系统的工作效率不高,资源利用率低下;.单一分区存储管理的缺点.(1)(2)“内碎片”问题:分配给用户,但未被使用的区域。只要作业比用户区小,那么在用户区里就会形成碎片,如果用户作业很小,那么这种浪费是巨大的;(3)若用户作业的相对地址空间比用户区大,那么该作业就无法投入运行,因为大作业无法在小内存上运行。2.固定分区存储管理.系统初启时将内存划分成n个分区(尺寸大小可以不等),系统运行过程中,分区的个数及尺寸保持不变,每个分区里只装入一个作业运行。操作系统0100KB200KB400KB700KB800KB第1分区第2分区第3分区第4分区多个队列操作系统第1分区第2分区第3分区第4分区单个队列(a)(b)2.固定分区存储管理...为管理内存中的各分区,操作系统设置一张名为“分区分配表”的表格,它随时记录各分区的信息及当前的使用情况。分区分配表中至少应该有每个分区的起始地址、长度,以及一个使用标志。当某分区的使用标志为“0”时,表示该分区当前是空闲的,可以分配;当某分区的使用标志不为“0”时,表示该分区已经分配给了一个作业使用,里面存放的是这个作业的名称。.在固定分区存储管理中,每个分区只允许装入一个作业,作业在运行期间不会移动。因此,这时应该对程序实行静态重定位。.存储保护:防止用户程序对操作系统形成的侵扰,也要防止用户程序与用户程序之间形成的侵扰.两个专用寄存器起名为“基址寄存器”和“界限寄存器”。调度程序调度某个作业运行时,就把该作业所在分区的起始地址装入基址寄存器,把分区长度装入界限寄存器。内存操作系统第1分区(作业1)第2分区(作业2)第3分区(作业3)0abcdab-a基址寄存器界限寄存器CPU返回目录固定分区存储管理的特点:.(1)它是最简单的、具有“多道”色彩的存储管理方案。(2)作业程序将一次性地全部被装入到分配给它的连续分区里。(3)实行静态重定位,在分区内的程序不能随意移动,否则运行就会出错。(4)每个分区都有可能产生内部碎片,引起内存资源的浪费。(5)如果到达作业的尺寸比任何一个分区的长度都大,那么它就无法运行。返回目录4.2.2可变分区存储管理可变分区存储管理的基本思想1.可变分区存储管理的基本思想是:作业要求装入内存时,若内存有足够的连续存储空间供使用,那就依作业相对地址空间的大小,划分出一个分区分配给它。..作业C10KB作业B20KB作业A15KB内存操作系统空闲区(a)内存操作系统空
本文标题:4存储管理课件.
链接地址:https://www.777doc.com/doc-2925691 .html