其他分享
首页 > 其他分享> > 第4章 存储器管理

第4章 存储器管理

作者:互联网

第4章 存储器管理

0. 操作系统的主要功能

在这里插入图片描述

4.1 存储器的层次结构

  1. 程序需放入内存并创建进程才能运行。
  2. 计算机系统的多级存储体系,主要包括主存储器和辅助存储器。
  3. 主存和辅存的访问机制不同:
  1. 进程可以使用一条load或store指令对可执行存储器进行访问。
  2. 辅存的访问则需要通过I/O设备实现。一般相差3个数量级甚至更多。

4.2 程序的装入和链接

  1. 源程序转变为可执行程序的步骤:
  1. 编译:编译程序把源程序编译成若干个目标模块(Object Module).
  2. 链接:链接程序把所有目标模块和它们需要的库函数链接在一起,形成一个完整的可装入模块(Load Module)。
  3. 装入:装入程序把可装入模块装入内存,当把CPU分配给它时就可以投入运行。
    在这里插入图片描述

4.2.1 地址空间概念

  1. 逻辑地址(相对地址):

用户程序经过编译、链接后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0,其余地址都相对于首地址而编址。

  1. 物理地址(绝对地址):

内存中物理单元地址,每一存储单元都有唯一地址的编码方式。

问题:无法知道进程装入内存的物理地址,如何保证程序正确运行?

  1. 地址重定位:将程序装入到与其地址空间不一致的物理空间,所引起的一系列地址变换过程。也称为:地址转换、地址映射;
  2. 保证CPU执行指令时可正确访问内存单元,需要将用户程序中的逻辑地址转换为运行时可由机器直接寻址的物理地址。
  3. 逻辑地址与物理地址的绑定可在三个阶段进行:
  1. 编译时期;
  2. 装入时期;
  3. 执行时期。

4.2.2 程序的装入

  1. 将一个装入模块装入内存时,主要有三种方式。
    在这里插入图片描述
    (1) 绝对装入方式(Absolute Loading Mode)
  1. 单道程序环境,已知程序驻留在内存的位置,链接产生绝对地址的目标代码。在运行之前,一次性地将装入模块装入到内存中事先指定的位置,不需要重定位。
  2. 特点:特点:不适合于多道程序环境。

(2) 可重定位装入方式——静态重定位

  1. 在装入一个作业时,把作业中的指令地址全部转换为绝对地址,在作业执行过程中就无须再进行地址转换工作。
  2. 物理地址=逻辑地址+程序存放的内存起始地址.
  3. 地址变换是在进程装入时一次性完成,以后不再改变,称为静态重定位。
  4. 静态地址重定位优点:
    1)简单易实现,不需要增加任何硬件设备,可通过软件全部实现;
  5. 静态重定位缺点:
    1)程序装入内存后,不能移动。在运行期间不允许程序在内存中移动,即无法实现内存重新分配,因此内存的利用率不高。
    2)要求程序的存储空间是连续的。不能把程序存储到若干个不连续的区域中。如果内存空间无法满足程序大小,无法运行。
    3)不利于程序共享。如果几个用户要使用同一个程序,就必须在各自的内存空间中存放该程序的副本,浪费了内存资源。

(3)动态运行时的装入方式——动态重定位

  1. 动态地址重地位是在程序执行过程中,在CPU访问内存之前,将要访问的程序或数据地址转换成内存地址。地址重定位机构需要寄存器BR和VR支持。BR:程序所装入内存区域首地址。
  2. 绝对地址=基址寄存器(BR)+程序逻辑地址寄存器(VR)
    在这里插入图片描述
  3. 动态地址重定位优点:
    1)便于程序移动或换入换出。目标程序装入内存时无需任何修改,所以装入后再移动不会影响其正确运行。程序在执行期间可以换入和换出内存。
    2)不必给程序分配连续的内存空间。可以较好低利用较小的内存块,这便于存储器用紧缩来解决存储器的碎片问题。
  4. 动态重定位的缺点:
    1)需要硬件支持;
    2)实现存储管理的软件算法比较复杂。

存储管理基本功能

  1. 存储分配和回收:是存储管理的主要内容,用来确定其算法和相应的数据结构。
  2. 地址变换(地址重定位):程序加载时的重定位技术,及进程运行时硬件和软件的地址变换技术和机构。
  3. 存储共享和保护:将代码和数据共享,设定对地址空间的访问权限(读、写、执行)。
  4. 存储器扩充:覆盖技术、交换技术、虚拟存储。
    在这里插入图片描述

4.3 连续分配存储管理方式

存储管理主要方案:

  1. 连续分配:
  1. 单一连续分区分配方式;
  2. 固定分区分配方式
  3. 动态分区分配方式
  1. 离散分配
  1. 分页分配方式
  2. 分段分配方式
  3. 段页分配方式

分区式存储管理----为用户程序分配一段连续的存储空间。

4.3.1 单一连续分区分配

  1. 实现原理
  1. 适用于单用户、单任务操作系统。
  2. 内存分为系统区和用户区,系统区给OS使用,放在低址部分。
  3. 用户程序通常由装入程序从用户区的低地址开始装入,装入一个程序后,内存中剩余区域则无法再利用。
  1. 分配与回收
  1. 待装入程序与用户区进行大小比较;
  2. 空间够用,则为它分配内存空间;否则分配失败;
  3. 回收操作:程序运行结束后,回收。
  1. 优缺点

管理简单,开销小,安全性高;
不一定需要内存保护(如MS-DOS); 不支持多任务;程序的地址空间受限制。

4.3.2 固定分区分配

  1. 实现原理

将用户空间划分成若干个固定大小的区域,每个区域称为一个分 区,可装入一个程序。分区划分完成后,在系统的整个运行期间保持不变,程序运行完释放。IBM 360的MFT操作系统使用该方式。分区的数目和每个分区的大小由OS决定。

  1. 划分分区方法

在这里插入图片描述

  1. 分区大小相等:缺乏灵活性。
  2. 分区大小不等:多个较小分区、适量中分区和少量大分区。装入程序可以根据程序大小将它装入到适当的分区。
  1. 内存空间的分配
  1. 数据结构——分区分配表
  2. 将分区按其大小进行排队,记录分区使用情况
  3. 包括:分区号、起始地址、大小、状态
  4. 状态:0表示空闲区,未分配
    在这里插入图片描述
  1. 固定分区的优缺点
  1. 通过分区分配表来实现内存分配与回收,这种方式简单易行。
  2. 可采用静态重定位。
  3. 程序大小受分区大小的限制,当分区较大而程序较小时,容易形成内部碎片,而造成内存空间的浪费。
  4. 由于分区总数固定,限制了并发执行程序的数量。

4.3.3 动态分区分配

  1. 实现原理

在程序装入内存前并不建立分区,内存分区是根据程序对内存空间的需要而动态建立的。分区的划分时间、大小及其位置都是动态的。

  1. 数据结构

包括:已分配分区表、空闲分区表或空闲分区链。

  1. 已分配分区表用于登记内存空间中已经分配的分区,每个表项记录一个已分配分区。
  2. 空闲分区表记录内存中所有空闲分区,每个表项记录一个空闲分区。
    在这里插入图片描述
    在这里插入图片描述
  1. 四种分区分配算法

最先适应算法、最佳适应算法
最差适应算法、循环最先适应算法

  1. 系统应利用某种分配算法,从空闲分区表中查找分区。设请求的分区大小为u.size表中每个空闲分区的大
    小可表示为m.size。
    在这里插入图片描述
    在这里插入图片描述
  1. 内存回收算法
  1. 回收内存-四种情况
    在这里插入图片描述
  2. 图a.回收区与上空闲分区F1相邻接,应将回收区与F1合并,不必为回收分区分配新表项,只需修改分区F1的大小。
  3. 图b.回收分区与下个空闲分区F2相邻接,可将两分区合并,形成新的空闲分区,回收区的首址作为新空闲区首址,修改大小。
  4. 图c.回收区同时与前后两个分区邻接,将三个分区合并,使用F1的表项,取消F2的表项。
  5. 其它:单独建立一个新表项,插入到空闲表中。

4.3.4 基于顺序搜索的动态分区分配

  1. 顺序搜索:是指依次搜索空闲分区链上的空闲分区,寻找一个其大小能满足要求的分区。

  2. 掌握四种分区分配算法:
    在这里插入图片描述

(1) 首次适应算法(first fit, FF)

  1. 算法思想:以空闲分区链为例,空闲分区按地址递增次序链接。
  1. 从链首开始查找,找到第一个大小能满足的空闲分区为止;
  2. 若不能找到,返回失败;
  3. 若找到,则把找到的分区一分为二,一块分配给相应申请者,另一块仍作为空闲分区插入到空闲分区链表中。
  1. 首次适应算法的优缺点
  1. 在低地址部分,空闲区会被反复细分,容易导致很小的碎片出现,小碎片可能得不到利用,造成浪费。
  2. 在高地址部分,较大的空闲分区容易保存下来。

例子:
在这里插入图片描述
在这里插入图片描述
(2) 循环首次适应算法(next fit, NF)

  1. 算法思想
  1. 各空闲区按地址递增次序组成循环链表。
  2. 每次扫描链表,不是从头开始,而是从上次分配的分区后面开始扫描。
  1. 特点
  1. 比首次适应算法具有更高的分配速度。
  2. 一段时间后,大空闲块不易保留。

(3) 最佳适应算法(best fit, BF)

  1. 算法思想
  1. 空闲分区按容量递增排列。
  2. 从链首开始查找,找到第一个符合要求的空闲分区;把找到的分区一分为二,一块分配给相应的申请者,另一块仍作为空闲分区。
  1. 最佳适应算法的优缺点:
  1. 分配的空闲分区大小与申请的大小最为接近;
  2. 但易产生较小的碎片,难以利用;
  3. 较大的空闲分区可被保留。
    例子
    在这里插入图片描述

(4) 最差适应算法

  1. 算法思想
  1. 空闲分区按容量递减排列。
  2. 从链首开始查找,直至找到第一个符合要求的分区。
  1. 最坏适应算法的缺点
  1. 系统中难以保留大空闲分区,对后继的大作业运行不利。

4.3.5 伙伴系统

  1. 一种经典的内存分配方案
  2. 主要思想:将内存按2的幂进行划分,做成若干个空闲快链表;查找该链表找到能满足进程需求的最佳匹配块。
  3. 算法:
  1. 首先将整个可用空间看作一块: 2 u 2^{u} 2u
  2. 假设进程申请的空间大小为s,如果满足 2 U − 1 2^{U-1} 2U−1<s<= s U s^{U} sU,则分配整个块;
  3. 否则,将块划分为两个大小相等的伙伴,大小为 2 U − 1 2^{U-1} 2U−1;
  4. 一直划分下去,直到产生大于或等于s的最小块。
  5. 合并时,与其伙伴分区合并。
  6. 每次分配时,尽量分配比较合适的空闲块,让系统保持大的空闲块。

4.3.6 动态可重定位分区分配

(1)拼接(紧凑)

  1. 通过移动内存中作业的位置,然后把原来多个分散的空闲小分区拼接成一个大分区的方法,称为“拼接”或“紧凑”。
  2. 需要解决的问题:地址变化!
    在这里插入图片描述

(2)动态重定位

  1. 程序指令要真正执行时进行重定位,必须有硬件地址变换机构的支持。
  2. 重定位寄存器,用它来存放程序(数据)在内存中的起始地址。
  3. 程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。

(3) 动态重定位分区分配算法
动态重定位分区分配算法与动态分区分配算法基本上相同,差别仅在于:在这种分配算法中,增加了紧凑的功能。
在这里插入图片描述

4.4 对换

也称为交换技术.

对换定义:将内存中的暂时还不能被运行的进程换出到外存上,让出内存空间,再把已具备运行条件的进程或程序换入内存,改善内存紧张问题。

为什么要引入对换?

  1. 进程无法运行。因等待某事件被阻塞运行。
  2. 内存不够。作业在外存上等待调入内存,但因内存空间不足,这些作业无法进入内存运行。
  3. 外存(磁盘)——内存

4.4.1 对换的类型

根据每次对换时所对换的数量,可将对换分为两类:

(1) 整体对换(进程对换):以进程为单位对换——分时系统中;
(2) 页面(分段)对换:以页面或段为单位对换——虚拟存储系统;
在这里插入图片描述

4.4.2 对换空间的管理

交换区管理:具有对换功能的操作系统,通常将外存分为文件区和对换区。
对换区管理:类似于动态分区分配;
数据结构:已分配表,空闲分区表/链。
在这里插入图片描述

4.5 分页存储管理方式

  1. 连续分配方式会形成很多“碎片”,解决方法——紧凑
  2. 改进方法:不连续存储方法(离散分配)
    在这里插入图片描述

4.5.1 分页存储管理的基本方法

  1. 页面和物理块
  1. 页面:进程的逻辑地址空间被划分成若干页,从0开始为每个页编号;
  2. 物理块(页框):将内存空间分成与页面大小相同的若干个存储块,从 0开始为每个块编号;
  3. 分配原则:以块为单位分配内存,将进程中的若干个页分别装入到多个可以不连续的物理块中。
  4. 页太大:页内碎片大;页太小:页表可能很长,换入/出效率低,1KB-8KB
  1. 分页中的地址结构

在这里插入图片描述
一维逻辑地址与页号和页内地址的关系是:一维逻辑地址=页号×页长+页内地址
要求:掌握地址的转换,由逻辑地址计算页号和页内地址。
例:逻辑地址为十进制4098,求页号和页内地址。页大小为1KB.
一般性,若给定一个逻辑地址A,页面大小L;则:
页内地址d=A mod L
页号P = int(A/L)

  1. 数据结构-页表
  1. 用来映射页号与内存物理块号之间的对应关系。
  2. 一个进程对应一张页表;进程的每一页对应一个页表项;
  3. 通过页表,找到每页在内存中的物理位置。
    在这里插入图片描述

4.5.2 地址变换机构

地址变换机构实现从逻辑地址到物理地址的转换。地址变换频繁,使用硬件机构完成。

  1. 基本的地址变换机构

当程序装入内存未运行时,页表起始地址和页表长度等信息被保存到为该进程的PCB中,页表存放在内存中;
该进程运行时,其PCB中的页表始址和页表长度便被装入页表控制寄存器中。
在这里插入图片描述

  1. 具有快表的地址变换机构
  1. 问题:CPU每访问一个数据,要两次访问内存,导致计算机速度降低。
    ①访问页表,从中找到物理块号,形成物理地址。②读取数据。
  2. 快表:具有并行查寻能力的联想存储器,也称为高速缓冲寄存器。 保存当前运行进程最常用的页号和其对应的物理块号。
    在这里插入图片描述
  1. 当CPU给出需要访问的逻辑地址后,地址转换机构根据所得到的页号在快表中查找其对应的物理块号;
  2. 若要访问的页号其页表项已在快表中,则直接从快表中获得该页所对应的物理块号,完成物理地址的转换;
  3. 若在快表中没有找到与页号对应的页表项,则通过内存中的页表查找,并获得相应的物理块号来完成物理地址的转换,同时将所获得的页表项存入快表。
  4. 引入快表后,访问速率由下降一倍变为仅下降10%.

4.5.3 访问内存的有效时间-EAT

  1. 内存的有效访问时间 (Effective Access Time,EAT)
  2. 从进程发出指定逻辑地址的访问请求,经过地址变换,到在内存中找到对应的实际物理地址单元并取出数据,所需要花费的总时间。
  3. 假设访问一次内存的时间为t,在基本分页存储管理方式中,有效访问时间:EAT = t + t = 2t
  4. 在引入快表的分页存储管理方式中,存在着命中率的问题。
  5. 命中率:在快表中成功查找到所需页面的比率
  6. EAT计算公式:EAT=а×λ+(t+λ)(1-а)+t=2t+λ-t×а
  7. λ表示查找快表所需要的时间,а表示命中率,t表示访问一次内存所需要的时间。
  8. 据统计,从快表中找到所需页面的概率可达90%以上。

4.5.4 两级页表和多级页表

对 2 32 2^{32} 232B的逻辑地址空间,设页的大小为4KB,页表项达1M个页表非常大!每个进程的页表要占用连续的内存空间,这显然是不现实的。
解决方法:将页表再进行分页,离散地将各个页表分页存放在物理块中。为离散的页表再建立一张页表。

  1. 两级页表------对页表进行分页;
  1. 页表分页:把页表分页后形成的各个页,分别存储在内存中不一定相邻的物理块中(离散方式);
  2. 外层页表(Outer Page Table):用来管理页表分页,以页表分页为单位建立的更高一级的索引;
  3. 外层页表项:记录了对应页表分页在内存中所存放的物理块号。引入外层页表后,进程的逻辑地址通过外层页号、内层页号、页内地址来描述。

二级页表及其关系:
在这里插入图片描述
在这里插入图片描述

具有两级页表的地址转换过程:
在这里插入图片描述

4.6 分段存储管理方式

主要内容:

程序的分段结构
分段式存储管理的基本原理
段的共享
段页式存储管理方式

进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从0开始编制。
内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。
在这里插入图片描述

4.6.1 分段系统的基本原理

  1. 程序分段
  1. 程序有若干逻辑段组成,每个段有自己的名字和长度,程序的逻辑地址有段名(段号)和段内偏移量组成,每个段的逻辑地址从0开始编址。
  2. 分段存储管理以段为单位进行存储分配;
  3. 为作业的每一段分配一个连续的主存空间,各段之间不一定连续。
  4. 操作系统需为每个作业建立一张段表,登记每个段的段号、该段所在内存始址和段长度。
  1. 段表
  1. 系统为每个程序建立一张段表,实现将二维逻辑地址转换为一维物理地址。程序的每个段在段表中占有一个表项,记录了该段的段号、该段在内存中的起始地址以及该段的长度等。
    在这里插入图片描述
  1. 地址转换与地址保护
  1. 先通过段表控制寄存器中存放的段表始址找到段表,然后再从段表中找到对应的表项,完成逻辑段与内存物理分区的映射。
    在这里插入图片描述

分页和分段的主要区别:

  1. 分页的用户进程地址空间是一维的;
  2. 分段的用户地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。
  3. 分页的主要目的是为了实现离散分配,提高内存利用率,分页仅仅是系统管理上的需要,完全是系统行为,对用户是不可见的。
  4. 分段的目的是更好地满足用户需求,一个段通常包含着一组属于一个逻辑模块的信息,分段对用户是可见的,用户编程时需要显式地给出段名。
  5. 页的大小固定且由系统决定。
  6. 段的长度不固定,决定于用户编写的程序。

4.6.2 信息共享

  1. 分页系统中对程序和数据的共享

有一个多用户系统,可同时接纳40个用户,他们都执行文本编辑程序。Editor程序有160KB的代码和40KB的数据区。不共享:(160+40)40=8000KB,共享程序段:160+4040=1760KB
假设:页面大小为4KB,160K占40个页面;40KB占10个页面。
在这里插入图片描述

  1. 分段系统中程序和数据的共享
  1. 分段系统以段为基本单位的,不管该段有多大,只需为该段设置一个段表项即可,因此实现共享非常容易。
  2. 以共享editor为例,只需在进程1和进程2的段表中,为文本编辑程序设置一个段表项,让段表项中的基址指向editor程序在内存的起始地址。分段系统中共享editor的示意图如下。
    在这里插入图片描述

4.6.3 段页式存储管理

  1. 分页可以提高内存利用率
  2. 分段可以很好的满足用户的需求
  3. 段页式存储管理的基本思想:将每个段进一步分成若干个页面,每个页面装入一个内存块,同一段的不同页面可以分到内存的不连续同块中。
  1. 基本原理

各段之间按分段存储管理,每个段的内部则按分页存储管理。例如:作业有三个段:主程序段、子程序段和数据段;页面大小为4 KB。
在这里插入图片描述
段页式系统中,其地址结构由段号、段内页号及页内地址三部分所组成。
逻辑地址到物理地址的变换,系统中需要同时配置段表和页表。
段表的内容与分段系统略有不同,它不再是内存始址和段长,而是页表始址和页表长度。
在这里插入图片描述

  1. 地址变换过程

在这里插入图片描述

地址转换过程:

  1. 系统将逻辑地址中的段号S与段表控制寄存器中的段长进行比较;段号>段长,则越界中断;
  2. 若未越界,则根据段表寄存器中的段表始址和段号,求出该段所对应的段表项在段表中的位置;
  3. 找到该段表项后从中获得该段的页表在内存中存放的起始地址;
  4. 获得该页的页表项位置,并从该页表项中获得该页所存放的内存物理块号;
  5. 将物理块号和页内地址拼接(由物理块号替换逻辑地址中的段内页号)形成要访问的物理地址。

存储管理主要方案:

  1. 连续分配方式会形成很多“碎片”,解决方法——紧凑
  2. 改进的方法:不连续存储方法(离散分配)
    在这里插入图片描述

总结:

  1. 分区存储管理方案:是一种连续存储管理方案,但需要一次性全部装入内存。
  2. 页式存储管理方案:是一种不连续存储管理方案,也需要一次性全部装入内存。
  3. 段式存储管理方案:是一种不连续存储管理方案,段和段之间可以不连续,但需要一次性全部装入内存。
  4. 段页式存储管理方案:是一种不连续存储方案,需要一次性全部装入内存。
  5. 交换和覆盖技术:是存储扩充的技术。

练习及参考答案

一、 选择题

  1. 把作业空间中使用的逻辑地址变为内存中物理地址称为( B)
    A 加载
    B 重定位
    C 物理化
    D 逻辑化

  2. 内存保护需要由( C)完成,以保证进程空间不被非法访问
    A 操作系统
    B 硬件机构
    C 操作系统和硬件机构合作
    D 操作系统或者硬件机构独立完成

  3. 在分段管理中,( A )。
    A. 以段为单位分配,每段是一个连续存储区
    B. 段与段之间必定不连续
    C. 段与段之间必定连续
    D. 每段是等长的

  4. 当程序经过编译或者汇编以后,形成了一种由机器指令组成的集合,被称为(B)
    A. 源程序
    B. 目标程序
    C. 可执行程序
    D. 非执行程序

  5. 把逻辑地址转变为内存的物理地址的过程称做(D)
    A. 编译
    B. 连接
    C. 运行
    D. 重定位

  6. 在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减2的情况是(D)
    A. 无上邻空闲区,也无下邻空闲区
    B.有上邻空闲区,但无下邻空闲区
    C. 有下邻空闲区,但无上邻空闲区
    D. 有上邻空闲区,也有下邻空闲区

  7. 动态重定位是在作业的(A )过程中进行的。
    A. 执行
    B. 编译
    C. 装入
    D. 修改

  8. 可变分区存储管理采用的地址转换公式是( C )。
    A. 绝对地址=界限寄存器值+逻辑地址
    B. 绝对地址=下限寄存器值+逻辑地址
    C. 绝对地址=基址寄存器值+逻辑地址
    D. 绝对地址=块号×块长+页内地址

  9. 分区管理要求对每一个作业都分配( A )的内存单元。
    A. 地址连续
    B. 若干地址不连续
    C. 若干连续的帧
    D.若干不连续的帧

  10. 多进程在主存中彼此互不干扰的环境下运行,操作系统是通过(B)来实现的。
    A. 内存分配
    B. 内存保护
    C.内存扩充
    D.地址映射

  11. 可由CPU调用执行的程序所对应的地址空间为(D)
    A. 符号名空间
    B.虚拟地址空间
    C.相对地址空间
    D.物理地址空间

  12. 碎片是指( D )
    A. 存储分配完后所剩的空闲区
    B. 没有被使用的存储区
    C.不能被使用的存储区
    D.未被使用,而又暂时不能使用的存储区

  13. 支持程序紧凑的地址转换机制是( D )
    A. 页式地址转换
    B.段式地址转换
    C.静态重定位
    D.动态重定位

  14. 提高主存的利用率主要通过(A )实现。
    A.主存分配
    B.主存保护
    C.主存扩充
    D.地址转换

  15. 下面的存储管理方案中,(A)方式可以采用静态重定位。
    A. 固定分区
    B.可变分区
    C.页式
    D.段式

  16. 在分区存储管理中,下面的(C )最有可能使得高地址空间变成为大的空闲区。
    A.最坏适应法
    B.最佳适应法
    C.首次适应法
    D.循环首次适应法

  17. 可变分区管理方式按作业需求量分配主存分区,所以( D )。
    A分区的长度是固定的
    B.分区的个数是确定的
    C.分区的长度和个数都是确定的
    D.分区的长度不是预先固定的,分区的个数也不是确定的

  18. 位示图可用于( C)
    A.页式虚拟管理中页面置换
    B.可变式分区存储管理中空闲区的分配和回收
    C.页式存储管理中内存空闲块的分配和回收

  19. (B )是指将作业不需要或暂时不需要的部分移到外存,让出内存空间以调入其他所需数据。
    A.覆盖技术
    B.交换技术
    C.虚拟技术
    D.物理技术

  20. 通常所说的"存储保护"的基本含义是(C )
    A.防止存储器硬件受损
    B.防止程序在内存丢失
    C.防止程序间相互越界访问
    D.防止程序被人偷看

  21. 段页存储管理中,系统中( D )。
    A. 每个作业一个段表,一个页表
    B.每个作业的每个段一个段表一个页表
    C.每个作业一个页表,每个段一个段表
    D.每个作业一个段表,每个段一个页表

  22. 固定分区中各分区的大小是(B )。
    A.相同的
    B.相同或者不同,但预先固定
    C.根据作业要求确定
    D.随作业个数而定

二、 判断题

  1. 静态重定位是程序在装入内存时完成地址变换。(对)
  2. 静态重定位时,逻辑地址和物理地址是相同的。(错)
  3. 固定内存分配会产生内碎片。(对)
  4. 用户程序使用的地址称为逻辑地址;程序执行时CPU按照 物理地址访问主存.(对)
  5. 固定分区存储管理的各分区的大小可变化,这种管理方式不适合多道程序设计系统.(错)
  6. 页式存储管理把主存分成大小相等的块,把逻辑地址分成页,并且两者的大小必须相等。(对)
  7. 可变分区存储器可以对作业分配不连续的内存单元。(错·)
  8. 利用对换技术扩充内存时,设计时必须考虑的问题是:如何减少信息交换量,降低交换所用的时间。(对)
  9. 在现代操作系统中,不允许用户干预内存的分配.(对)
  10. 页式存储管理中,一个作业可以占用不连续的内存空间,而段式存储管理中,一个作业则是占用连续的内存空间.(错的,说反了)
  11. 在页式管理中,页式虚地址与内存物理地址的映射是由页表和硬件地址变换机构完成的.(对)
  12. 采用最坏适应分配算法,空闲区表中的第一个登记项所对应的空闲区的大小总是最大的。(对)
  13. 页式存储管理中,为了提高内存的利用效率,允许同时使用不同大小的页面.(错)

三、简答题

  1. 有程序序列,程序A要求18KB,程序B要求25KB,程序C要求30KB,初始内存分配情况如图所示(其中阴影为分配区)。问首次适应算法、最佳适应算法、最差适应算法中,哪种能满足该程序序列的分配?

解:
结合系统中初始内存的分配情况,建立的首次适应算法、最佳适应算法和最差适应算法的空闲区链分别如图:
在这里插入图片描述

  1. 例:有一页式系统,其页表存放在主存中:
    ①如果对主存的一次存取需要1.5 μs,试问实现一次页面访问的存取时间是多少?
    ②如果系统有快表,平均命中率为85%,当页表项在快表中时,其查找时间忽略为0, 试问此时的存取时间是多少?

解:页表存放在主存中,则要实现一次页面访问需两次访问主存一次是访问页表,确定所存取页面的物理地址;第二次才根据该地址存取页面数据。
页表在主存的存取访问时间=1.52=3(μs)
增加快表后的存取访问时间=0.85
0+(1-0.85)*1.5 +1.5=1.725(μs)

  1. 采用分页存储管理的系统中,一程序有4个页并被分别装入到内存的第3、4、6、8号物理块中,已知页和物理块的大小均为1024B,该程序在CPU上运行并执行到如下的一条传送指令: MOV AX, [2100] 请用地址转换图计算MOV指令中操作数2100的物理地址?

解:页的大小为1024B,可知页内地址为0~9位
逻辑地址2100的页号=int(2100/1024)=2
页内地址=2100-2×1024=52
页号2对应的物理块号为6,即物理地址=6×1024+52=6196;
在这里插入图片描述

  1. 例:在一个分段存储管理系统中,其段表如左表所示,试求右表中逻辑地址所对应的物理地址(十进制)。
    在这里插入图片描述

解:(1)640 (2)2360 (3)产生越界中断
(4)1750 (5)产生越界中断 (6)产生越界中断

  1. 什么是重定位?重定位的方式有哪两种?比较他们的不同。

解:重定位是把程序中相对地址变换为绝对地址。对程序进行重定位的技术目前按重定位的时机区分为两种:静态重定位和动态重定位。 静态重定位是要把程序中所有与地址有关的项在程序运行前(确切地说是在程序装入主存时)修改好,它是在程序装入主存时由装入程序进行重定位。动态重定位不是在程序装入过程中进行,在处理器每次访问主存时,由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。

  1. 计算机存储管理应实现哪些功能?

解:1.内存区域的分配和管理:通过建表、查表、改 表和回收登录内存使用情况,系统或用户申请内存时按选定分配算法确定分区等。
2.内存的扩充技术:使用虛存或自动覆盖技朮提供比实际内存更大的空间。
3.内存保护技术:各道作业只在自巳所属区域中运行,不破坏别的作业以及不被破坏。

  1. 请详细说明分区式存储器管理方案三种放置策略的思想、特点及其自由主存队列的排列方式。

解:在分区式存储器管理方案中有三种基本的放置策略:首次适应法、最佳适应法和最坏适应法。

  1. 首次适应法,总是从低地址开始查找,将作业放入找到的第一个能满足作业要求的空白分区,其自由主存队列应按起始地址从小到大排序。
  2. 最佳适应法,总是将作业放入最接近作业要求的空白分区,其自由主存队列应按分区大小从小到大排序。
  3. 最坏适应法,总是将作业放入最大的空白分区,其自由主存队列应按分区大小从大到小排序。
  1. 在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096字节,现有一逻辑地址为2F6A(H),且第0,1,2页依次存放在物理块5,10,11中,问相应的物理地址为多少?

解:页式存储管理的逻辑地址分为两部分:页号和页内地址。页面大小为4096字节,可知内页地址占12位,页号部分占4位。2F6AH所对应的二进制表示形式为0010 1111 0110 1010。页号为2,查页表,得到物理块号是11(十进制),即物理块地址为:1011,拼接块内地址1011 1111 0110 1010,即BF6AH。

  1. 某段表内容如下:
段号段首地址段长度
0120k40k
1760k30k
2480k20k
3370k20k

若有逻辑地址为(2,1024),实际物理地址是多少?

解:逻辑地址(2,1024)表示段号为2,即段首地址为480K,1024为单元号,则实际物理地址为480K+1024=481K。

标签:存储管理,管理,分区,存储器,地址,页表,空闲,内存
来源: https://blog.csdn.net/AuroraLLL/article/details/122268134