OPN

内存管理

3.1内存管理概述

内存管理的功能

  1. 内存的分配与回收
  2. 内存的保护与共享
  3. 实现地址转换
  4. 内存的扩充

地址转换(重定位)

静态重定位:作业装入内存时,由装入程序实现逻辑地址到物理地址的转换,地址转换在作业执行前一次完成。

动态重定位:CPU在访问程序和数据前才实现逻辑地址到物理地址的转换,将逻辑地址和定位寄存器中的值相加得到物理地址,在程序执行过程中动态进行。

二者对比:静态重定位实现简单、不需要硬件;但必须为程序分配连续空间、执行过程中不能移动;动态重定位更灵活,可以实现程序在内存中的移动,便于实现内存的动态扩充和共享,但需要硬件支持、管理复杂。

覆盖与交换

覆盖:按照程序自身的逻辑结构,让不同时运行的程序段共享同一块内存区域。

交换:将暂时不运行的进程或程序段从内存移到外存交换区,当内存空间富余时再进入内存。

对比:

  1. 覆盖对用户不透明,编程时需要划分模块间的覆盖关系,增加复杂度
  2. 从外存装入覆盖文件,是用时间换取空间
  3. 交换发生在进程或作业之间,覆盖发生在同一进程或作业内
  4. 覆盖只能覆盖与覆盖段无关的程序段

3.2分区内存管理

单一连续内存管理

简单地将内存划分为系统区和用户区,任何情况下内存中最多只有一道程序。

优点:简单、开销小;缺点:内存、CPU、外部设备利用率低,不能进行内存扩充。

固定分区内存管理

划分成大小固定的连续区域,每个分区只能装入一个作业;分区大小可相等可不等。

缺点:内存利用率不高、内部碎片严重,容纳程序的大小有限;

可变分区内存管理

分配算法

  1. 最先适应分配算法

    每次都从最开始查找,将第一个满足长度要求的分配给作业使用;

  2. 循环首次适应分配算法

    从上次为作业分区后的位置开始查找...

  3. 最优适应分配算法

    将空闲分区由小到大排序,选择满足条件的最小的分区

  4. 最坏适应分配算法

    反之

  5. 快速适应分配算法

    空闲分区按长度归类,为每种长度设立单独的双向空闲分区链表;根据作业大小查找双向空闲分区链表,找到能容纳的最小分区链表的起始指针,从中选取第一个空闲分区。

算法 思想 优点 缺点
最先 从头到尾找适合的分区 保留了高地址空闲分区,便于容纳大作业 每次都从头开始,时间长;低地址被划分为小碎片
循环首次 由首次适应演变而 来,每次从上次查找结束位置开始查找 使空闲分区分布更均匀、时间更短 小碎片问题
最优 优先使用更小的分 区,以保留更多大分区 大作业开心、内存利用率高 小碎片占据开始部分,查找开销大
最坏 优先使用更大的分区,以防止产生太小的不可用的碎片 效率高,利好中小作业 不利于大作业装入
快速 按长度归类,链表管理 查找空闲分区迅速、也能保留大空间 回收分区困难、算法复杂、系统开销大

紧凑技术

汇聚小内存的同时增加了系统开销,不是任何时候都能移动。

3.3页式存储管理

物理块的大小由计算机硬件系统决定,页的大小由物理块的大小决定

若每个页面大小为2^kB,则二进制表示的末尾的k位为页内偏移量,其余部分为页号;

页面大小与页内偏移量位数有关系;

页式地址转换:

image-20220502225823937

其中②可能会被遗漏;

3.4段式存储管理

段表有段号、段长、段起始地址

作业表有作业名、段表始地址、段表长度

逻辑地址包括段号和段内偏移量,其中段号限制了最多的段数,段内偏移量决定段长

段式地址转换

image-20220502230411788

其中④是特别的一步;

分段与分页的比较

  • 段是信息的逻辑单位,由源程序的逻辑结构决定,用户可见;

  • 段长可根据用户需要来规定;

  • 段起始地址可以从任何地址开始;

  • 在分段方式中,源程序(段号、段内偏移)经连接装配后仍保持二位结构;

  • 页是信息的物理单位,与源程序的逻辑结构无关,用户不可见;

  • 页长由系统决定;

  • 页面只能以页大小的整数倍地址开始;

  • 在分页方式中,源程序(页号、页内偏移)经连接装配后变成了一维结构;

段页式存储管理

逻辑结构为:段号-页号-页内位移

3.5虚拟存储技术

程序局部性原理

时间局部性:如果程序中的某一条指令被执行,在不久之后该指令可能被再次执行;数据访问;

空间局部性:一旦程序访问了某个存储单元,则不久之后在其附近存储单元也将被访问;

虚拟存储技术的思想

将外存作为内存的扩充,作业运行不需要将全部信息放入内存,将暂时不运行的作业信息放入外存,从逻辑上扩充内存;

3.6请求虚拟页式存储管理

基本原理

在页式存储管理的基础上增加了请求调页和页面置换功能;

  1. 物理内存被划分为等长的物理块,并对块编号;用户程序也进行分页;
  2. 程序被调度运行时,先将少数页装入内存,随着程序运行,若所访问的页在内存中,其管理情况与分页存储管理相同;
  3. 若所访问数据不在内存,会产生缺页中断,到外存寻找相应的页并装入内存空闲块中;
  4. 装页发现无空闲块,则需要通过页面置换功能从内存的页中挑选一个替换出去;

页面置换算法

下面4种都是基于固定分配,局部置换策略的

image-20220503123055178

课后习题

1.内存管理的基本功能是什么?

答案:操作系统的内存管理主要包括以下功能:

  1. 内存的分配和回收:操作系统根据用户程序的请求,在内存中按照一定算法把找到 一块空闲,将其分配给申请者;并负责把释放的内存空间收回,使之变为空闲区。

  2. 提高内存的利用率:通过多道程序共享内存,提高内存资源的利用率。

  3. 通过虚拟存储技术“扩充”内存容量:使用户程序在比实际内存容量大的情况下, 也能在内存中运行。

  4. 内存信息保护:保证各个用户程序或进程在各自规定的存储区域内操作,不破坏操 作系统区的信息,并且互不干扰。

  5. 什么是逻辑地址,什么是物理地址,为什么要实现地址转换?

    答案:用户的源程序通常用高级语言编写,源程序通过编译或汇编后得到目标程序。 目标程序使用的地址称为逻辑地址,也叫相对地址;程序在物理内存中的实际存储单元称 为物理地址,也叫绝对地址。只有把程序和数据的逻辑地址转换为物理地址,程序才能正 确运行,该过程称为地址转换或地址重定位。

  6. 可变分区存储管理中有哪些内存分配方法?比较它们的优缺点。

    答案:有最先适应分配算法,循环首次适应分配算法,最优适应分配算法,最坏适应 分配算法,快速适应算法。 从搜索空闲区速度及内存利用率来看,最先适应分配算法、循环首次适应分配算法和最 优适应算法比最坏适应算法性能好。如果空闲区按从小到大排列,则最先适应分配算法等于 最优适应分配算法。反之,如果空闲区按从大到小排列,则最先适用分配算法等于最坏适应 分配算法。空闲区按从小到大排列时,最先适应分配算法能尽可能使用低地址区,从而,在 高地址空间有较多较大的空闲区来容纳大的作业。下次适应分配算法会使存储器空间得到均 衡使用。最优适应分配算法的内存利用率最好,因为,它把刚好或最接近申请要求的空闲区 分给作业;但是它可能会导致空闲区分割下来的部分很小。在处理某种作业序列时,最坏适 应分配算法可能性能最佳,因为,它选择最大空闲区,使得分配后剩余下来的空闲区不会太 小,仍能用于再分配。由于最先适应算法简单、快速,在实际的操作系统中用得较多;其次 是最优适应算法和下次适应算法。

  7. 什么是紧凑技术,什么情况下采用?

    答案:紧凑技术就是把内存中的作业改变存放区域,使分散的空闲区能够汇聚成一个 大的空闲区,从而有利于大作业的装入。 当系统运行一段时间后,内存被多次分配和回收,会产生许多不连续的空闲空间。有可 能出现这样的现象:内存中每一块空闲空间都不能满足某一作业的内存请求,而所有空闲空 间的总和却能满足该作业,这时可采用紧凑技术。

  8. 什么是交换技术?什么情况下采用? (将“移动”更正为“交换”)

    答案:为了释放部分内存空间,由操作系统根据需要,将某些暂时不运行的进程或程 序段从内存移到外存的交换区中;当内存空间富余时再给被移出的进程或程序段重新分配内 存,让其进入内存,这就是交换技术,又称为“对换”或“滚进/滚出(roll-in/roll-out)。 当剩余内存不足,而又有新的进程要进入内存时,可应用交换技术。

  9. 叙述页式存储管理系统中的地址转换过程。

    答案:当处理器给出某个需要访问的逻辑地址时,地址转换机构自动地从逻辑地址 的低地址部分得到页内偏移,从高地址部分得到页号。将页号与页表寄存器中的页表长度 进行比较,如果页号大于或等于页表长度,表示该页在页表中没有相应项,本次所访问的 地址已经超越进程的地址空间,会产生地址越界中断;否则,从页表寄存器得到页表在内 存中的起始地址。将页号和页表项长度的乘积再加上页表的起始地址,得到该页的页表项 在页表中的位置,从而可以查到该页在内存中的物理块号。最后,将页内偏移装入物理地 址寄存器的低位字段中,将物理块号装入物理地址寄存器的高位字段中,此时物理地址寄 存器中的内容就是地址转换机构给出的物理地址。

  10. 比较分页与分段存储管理的差异

    答案:段是信息的逻辑单位,由源程序的逻辑结构所决定,用户可见,段长可根据用 户需要来规定,段起始地址可以从任何地址开始。在分段方式中,源程序(段号,段内偏移) 经连结装配后仍保持二维结构。 页是信息的物理单位,与源程序的逻辑结构无关,用户不可见,页长由系统确定,页面 只能以页大小的整倍数地址开始。在分页方式中,源程序(页号,页内偏移)经连结装配后变 成了一维结构。

  11. 页式存储管理中,试分析大页面与小页面各自的优缺点。

    答案:如果页面较小,页数就要增加,页表也随之扩大,为了控制页表所占的内存空 间,应选择较大的页面尺寸。 内存以块为单位,一般情况下进程的最后一个页面总是装不满一个物理块,会产生内部 碎片,为了减少内部碎片,应选择小的页面尺寸。 作业存放在辅助存储器上,从磁盘读入一个页面的时间包括等待时间(移臂时间+旋转 时间)和传输时间,通常等待时间远大于传输时间。显然,加大页面的尺寸,有利于提高 I/O 的效率。 综合考虑以上几点,现代操作系统中,页面大小大多选择在 512 B 到 4KB 之间。

  12. 段页式存储管理中怎样划分逻辑地址空间?

    答案:段页式存储管理的基本原理。 1.程序根据自身的逻辑结构划分成若干段,这是段页式存储管理的段式特征。 2.内存的物理地址空间划分成大小相等的物理块,这是段页式存储管理的页式特征。 3.将每一段的线性地址空间划分成与物理块大小相等的页面,于是形成了段页式存储 管理。 4.逻辑地址分 3 个部分:段号、段内页号和页内位移,其形式为:

  13. 如果一个分页系统能够向用户提供的逻辑地址最大为 16 页,页面大小为 2K,内存总共有 8 个存储块。请问逻辑地址应该为多少位?内存空间为多 大?

    答案:因为逻辑地址最大页数量 为 16=24 ,所以逻辑地址中,表示页号需 要用 4 位; 又因为页面大小为 2K=211,表示业内地址需要用 11 位,所以整个逻辑地址 应该为 4+11=15(位) 因为页面大小为 2K,所以内存块大小也是 2K,又因为共有 8 个物理内存块, 所以总共内存空间为 8*2K =16K。

  14. 什么是虚拟存储技术?叙述实现虚拟存储管理的基本思想。

    答案:将作业不执行的部分暂时存放在外存,待到进程需要时,再将其从外存调入内 存。将外存作为内存的补充,从逻辑上扩充内存,这就是虚拟存储技术。 虚拟存储技术的思想:将外存作为内存的扩充,作业运行不需要将作业的全部信息放入 内存,将暂时将不运行的作业信息放在外存,通过内存与外存之间的对换,使系统逐步将作 业信息放入内存,最终达到能够运行整个作业,从逻辑上扩充内存的目的。

  15. 请求页式虚拟存储管理中的页面置换算法有哪几种?各有何特点?

    答案:先进先出(FIFO)页面置换算法:先进先出页面置换算法开销低、容易编程实 现,适合于线性顺序特性好的程序。但是该算法没有考虑到页面的访问频率,很可能刚被换 出的页面马上又要被访问,使得缺页率偏高。 最佳(OPT)页面置换算法:最佳页面置换算法具有最低的缺页率。最佳页面置换算法 只是一种理想化的页面调度算法,很难实现。但是,该算法可以作为评判其它的置换算法的 准则 最近最久未使用(LRU)页面置换算法:LRU 算法能够合理地预测程序运行状态,具有 很好的置换性能,被公认为是一种性能好且可以实现的页面置换算法,但是 LRU 算法在实现 起来比较复杂。 时钟(clock)置换算法:兼顾了效率与公平,是一种性能较好的算法。

  16. 请指出缺页中断和一般中断的区别。

    答案:1)CPU 检测中断的时间不同。对一般的中断信号,CPU 是在一条指令执行完 后检测其是否存在,检测时间以一个指令周期为间隔。而对缺页中断信号,CPU 在一条指 令执行期间,只要有中断信息就可检测,不需要等待一个指令周期。因此,CPU 检测缺页 中断更及时。 2)CPU 可以多次处理。如果在一个指令周期中多次检测到缺页中断,CPU 都会及时处理。

posted @ 2022-05-02 23:34  Tim-SaiJun  阅读(489)  评论(0)    收藏  举报