操作系统(复习)——第三章 存储管理

在这里插入图片描述

一、存储管理基本概念
1.逻辑地址和物理地址

  • 地址空间是逻辑地址的集合
  • 存储空间是物理地址的集合

二、连续分区存储
1.单一连续分配方式
最简单的一种存储管理方式,但只能用于单用户、单任务的OS

  • 存储管理方法:将内存分为系统区和用户区。采用静态分配方式,即作业一旦进入内存,就要等待它运行结束后才能释放内存。
  • 主要特点:管理简单,只需要少量的软件和硬件支持,便于用户了解和使用。但因内存中只装入一道作业运行,内存空间浪费大,各资源的利用率也不高。
例
一个容量为256KB的内存,操作系统占用32KB,剩下224KB全部分配给用户作业。
如果一个作业仅需64KB,那么就有160KB的存储空间被浪费。

2.分区分配方式
分区分配方式是满足多道程序设计需要的一种最简单的存储管理方法。

  • 存储管理方法:将内存分成若干个分区(大小相等/不相等),除OS占用一个分区外,其余的每一个分区容纳一个用户程序。按照分区的变化情况,可将分区存储管理进一步分为固定分区分配方式和动态分区分配方式。

(1)固定分区分配方式
固定分区分配方式是最早使用的一种可运行多道程序的存储管理方法。

  • 内存空间的划分:将内存空间划分为若干个固定大小的分区,除OS占一分区外,其余的每一个分区装入一道程序。分区的大小可以相等也可以不等,但事先必须确认,在运行时不能改变。
  • 系统需要建立一张分区说明表或使用表,以记录分区号、分区大小、分区的起始地址及状态。
  • 特点:管理简单,但因作业的大小不一定与某个分区大小相等,从而使一部分存储空间被浪费。所以主存利用率不高。

(2)动态分区分配方式
动态分区分配方式又称为可变式分区分配,是一种动态划分存储器的分区方法。

  • 存储管理方法:不事先将内存划分成一块块的分区,而是在作业进入内存时,根据作业的大小动态地建立分区,并使分区的大小正好适应作业的需要。因此系统中分区的大小是可变的,分区的数目也是可变的。
  • 特点:管理简单,只需要少量的软件和硬件支持,便于用户了解和使用。进程的大小与某个分区大小相等,从而主存的利用率有所提高。

Ⅰ.分区分配算法
(1)首次适应算法(First Fit)

  • 空分区(链)按地址递增的次序排列
  • 在进行内存分配时,从空闲分区表/链首开始顺序查找,直到找到第一个满足其大小要求的空闲分区为止
  • 然后按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍按地址递增的次序保留在空闲分区表(链)中
  • 特点:优先利用内存低地址的空闲分区,从而保留了高地址部分的大空闲区。但由于低地址部分不断被划分,致使低地址端留下许多难以利用的很小的空闲分区,而每次查找又是从低地址部分开始,增加了查找可用空闲分区的开销

(2)循环首次适应算法(Next Fit)

  • 为作业分配内存空间时,不再每次从空闲分区表/链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直到找到第一个能满足其大小要求的空闲分区为止。

(3)最佳适应算法(Best Fit)

  • 空闲分区表/链按容量大小递增的次序排列。在进行内存分配时,从空闲分区表/链首开始顺序查找,直到找到第一个满足其大小要求的空闲分区为止。
  • 特点:空闲区一般不能正好和申请的内存空间大小一样,因而分割之后往往剩下的空闲分区很小,从而在存储器中留下许多难以利用的小空闲区。

(4)最坏适应算法(Worst Fit)

  • 空闲分区表/链按容量大小递减的次序排列。在进行内存分配时,从空闲分区表/链首开始顺序查找,找到的第一个能满足作业要求的空闲区一定是个最大的空闲区。这样可以保证每次分割后剩下的空闲分区不至于太小。
  • 特点:当有大作业到来时,其存储空间的申请往往会得不到满足。

Ⅱ.内存分配与回收
(1)分配内存

  • 设请求的分区大小为u.size,空闲分区的大小为m.size,若m.size-u.size<=csize(csize是事先规定的不再切割的剩余分区的大小),说明多余部分太小,可不再切割,将整个分区分配给请求者;否则,从该分区中按请求的大小划分出一块内存空间分配出去,余下的部分仍留在空闲分区表/链中,然后,将分配区的首址返回给调用者。

(2)回收内存

  • 回收分区R上面邻接一个空闲分区F1,合并后首地址为空闲分区F1的首地址,大小为F1和R二者大小之和。这种情况下,回收后空闲分区表中表项数不变。
  • 回收分区R下面邻接一个空闲分区F2,合并后首地址为回收分区R的首地址,大小为R和F2二者大小之和。这种情况下,回收后空闲分区表中表项数不变。
  • 回收分区R上下邻接空闲分区F1和F2,合并后首地址为上空闲分区F1的首地址,大小为F1、R和F2三者大小之和。这种情况下,回收后空闲分区表中表项数不但没有增加,反而减少一项。
  • 回收分区R不邻接空闲分区,这时在空闲分区表中新建一表项,并填写分区首地址、大小等信息。这种情况下,回收后空闲分区表中表项数增加一项。

3.存储保护
存储保护是为了防止一个作业有意或无意地破坏操作系统或其他作业
(1)界限寄存器方法

  • 上下界寄存器方法:两个寄存器分别存放照作业的起始地址和结束地址
  • 基址、限长寄存器方法:两个寄存器分别存放作业的起始地址和作业的地址空间长度

(2)存储保护键方法

三、分页存储管理
连续分配存储的问题:会产生碎片->离散式分配存储
离散式分配存储:允许将作业/进程离散放到多个不相邻接的分区中,就可以避免拼接。

  • 分页式存储管理:离散分配的基本单位是页
  • 分段式存储管理:离散分配的基本单位是段
  • 段页式存储管理:离散分配的基本单位是页

1.分页管理基本概念
(1)空间划分

  • 将一个用户进程的地址空间划分成若干个大小相等的区域,称为页或页面,从0开始编号
  • 内存空间也分成若干个与页大小相等的区域,称为块或页框,从0开始编号

(2)内存分配

  • 在为进程分配内存时,以块为单位,将进程中若干页装入到多个不相邻的块中

(3)页表

  • 方便在内存中找到进程的每个页面所对应的块,系统为每个进程建立一张页面映像,简称页表
  • 记录了页面在内存中对应的块号
  • 页表一般存放在内存中
  • 页表的基址及长度由页表寄存器给出

(4)逻辑地址的地址结构

  • 地址长为32位,其中0 ~ 11位为页内地址,12 ~ 31位为页号
  • 页的大小为212=4KB,地址空间最多有220=1M页
  • 若逻辑地址为A,页面大小为L,则页号P=int[A/L],页内地址W=[A] mod L
例
系统页面大小为1KB,设A=2170,则P=2,W=122(1KB用1024算)

(5)物理地址的地址结构

  • 地址长为22位,其中0 ~ 11位为块内地址,12 ~ 21位为块号
  • 块的大小为212=4KB(与页的大小相等),地址空间最多有210=1K块

2.地址变换

例
1.设有一页式存储管理系统,向用户提供的逻辑地址空间最大为16页,每页2048B,内存总共有8个存储块,
试问逻辑地址和物理地址至少应为多少位?内存空间有多大?
解:
页号:16=2^4 ,页的大小:2048=2^11
块号:8=2^3 , 块的大小:2^11
逻辑地址:4+11=15位
物理地址:3+11=14位
内存空间:2^14=16KB

2.若在一分页存储管理系统中,总页数为4,总块数为8,某作业的页表如表所示,已知页面大小为1024B,
试将逻辑地址(十进制)1011,2148,5012转化为相应的物理地址
{页表(页号-块号):(0-2)、(1-3)、(2-1)、(3-6)}
解:
逻辑地址:2+10=12位
物理地址:3+10=13位
(1)
int(1011/1024)=0,1011 mod 1024=1011
0页对应2号块,1011转换为二进制:11 1111 0011
1011对应的物理地址为:010 11 1111 0011=0BF3h
(2)
int(2148/1024)=2,2148 mod 1024=100
2148对应的物理地址为:001 00 0110 0100=0464h
(3)
int(5012/1024)=4>3
逻辑地址非法,产生越界中断

3.快表处理(TLB快表)
(1)快表是一种特殊的高速缓冲存储器,内容为页表中的一部分或全部。CPU产生的逻辑地址的首页先在快表中寻找,若命中,找出其对应的物理块;若未命中,再到页表中寻找对应的物理块,然后复制到快表中。

四、虚拟存储器
常规存储管理的共同点:要求一个作业全部装入内存后方可运行->虚拟存储器
1.虚拟存储器是指仅把作业的一部分装入内存便可运行作业的存储管理系统,它具有请求调页功能和页面置换功能,能从逻辑上对内存容量进行扩充,其逻辑容量由外存容量和内存容量之和决定,其最大容量由计算机的地址结构决定,其运行速度接近于内存,成本接近于外存。

2.虚拟存储器的实现方法

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求段页式存储管理

五、请求分页存储管理
1.请求分页存储管理的概念

  • 地址空间的划分与页式存储管理相同;装入页时,装入作业的一部分页即可运行

2.页面置换算法

  • 最佳置换算法:不可能实现
  • 先进先出置换算法:实现比较简单,对具有线性顺序访问的程序比较适合
  • 最近最少使用置换算法:性能接近于最佳算法,实现较困难
  • Clock置换算法
错题集
1.系统“抖动”现象的发生是由——引起的。
A.交换的信息量过大      B.置换算法选择不当
C.内存容量不足          D.请求分页管理方案

2.页面置换算法中——不是基于程序执行的局部性理论。
A.先进先出调度算法      B. LRU  
C. LFU                 D.最近最不常用调度算法

3.在存储管理中,采用覆盖与交换技术的目的是——。
A. 节省内存空间         B. 物理上扩充内存容量 
C. 提高CPU利用率        D. 实现内存共享

4.说明对内存暂不能分配情况的处理方法。
答案
1.B
2.A
3.A
4.当出现暂时不能分配情况时,系统可以采用紧凑技术,将内存中的进程移动到存储器的一端,
使夹杂于其间的空闲小空间移动到另一端,形成一个较大的可用空间,以满足用户的需求。
  • 10
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值