存储管理-操作系统-程序员面试

来源:互联网 发布:java审批流程 编辑:程序博客网 时间:2024/05/24 06:31

操作系统-存储管理

4 存储管理

4.1 计算机存储体系结构

存储器是计算机体系结构的重要组成部分,其功能是保存指令和数据
存储层级结构


4.2 地址重定位

当程序被装入内存时,程序的逻辑地址被换成内存的物理地址。


动态再定位

程序在装入内存时,不修改程序的逻辑地址,程序在访问物理内存之前,载实时地将逻辑地址转换为物理地址。
优点:代码可在内存中移动,代码可不连续存放在内存
缺点:需要附加硬件支持,实现存储管理的软件算法比较复杂。

4.3 存储管理方案

分区存储管理方案

是一种连续分配存储空间的管理方案
分类:

1) 单一连续分区(一次只一个用户程序,独占整个用户区)

2) 固定分区(将内存分成固定块,存在内部碎片)

3) 可变分区(预先不分配,当作业需要装载时同系统申请内存空间,系统从其中挖出一块给作业,其大小等于作业所需内存的大小,然后将剩下的部分再作为空白块留给一次分配使用。 

 

4.3.1分区分配算法

最先适应算法(first-fit)

将空闲块按 地址增 顺序排,从中找到第一个合适的分区分配。
优点:尽可能利用地址的空闲去,而在高地址部分保存较大的空闲去,容易 满足大作业 ,释放时相邻空闲合并。
缺点:查找总是从表头找,因此前面的空闲去往往被分割的很小,查找次数增大,会产生外部碎片,这些碎片分散在内存的各处,不能集中使用,因而降低了存储器的利用率。

下次适用算法(next-fit 循环首次适应)

分配方法:将分区的先后次序,从上次分配的分区起查找。
释放方法:通first-fit
优点:使空闲分包更均匀,提高分配查找速度。
缺点:较大的空闲分区不易保留。

最佳适应算法(best-fit)

将空闲区按 容量增排列,当要求分配一个空白分区时,由小到达进行查找,找到最合适的分配。
释放:将整个链表上搜索地址相邻的空闲去,合并后,再插入到合适的位置。
优点:分配后所剩的空白区会最小,较大的空闲去会被保留。
缺点:空白区一般不可能加好满足要求,在分配之后的剩余部分通常小到无法使用,会形成较多碎片。

最坏适应算法

分配:按空白区容量减排列
释放:同最佳
优点:分配时只需要一次就可成功,分配的算法很快
缺点:最后剩余的分区会越来越小,不会保留较大的空闲去无法运行大程序。

释放方法

相邻合并,否则插入

可再定位式分区

又称浮动分区分配,是解决碎片问题的简单而有效的方法。
思想:移动所有被分配的分区,使之成为一个连续区域,而留下较大的空白区。

4.3.2 纯页式存储管理

分区存储管理方案要求 作业存储时必须连续存放 这样当作业大于当前最大空闲区时,即使有空闲区,也不能分配,从而降低了存储空间利用率。
为了解决此问题,引出了纯页式存储管理
如果作业能够被分割成若干块,分别存放在不同的空闲中,则存储空间利用率便可得以提升。

页面变换过程:
Q:为取一个数需几次访存?
R:2次
优点:程序可不必连续存放;没有外部碎片
缺点:程序要一次全部装入内存;依然存在 内部碎片。

4.3.3 引入段式存储

分页存储的不足

在分页存储管理中,经编译连接后得到一维地址结构,是从0开始编址的一个单一连续的逻辑地址空间,虽然操作系统可把程序划分成页面,但页面与源程序无逻辑关系,也就无法实现对源程序以模块为单位进行分配,共享和保护。

引入段式存储管理方式

1) 信息共享

2) 信息保护

3) 动态链接

4) 动态增长

按照逻辑单位进行划分,每段拥有独立的逻辑空间,在物理地址空间利用可变分区动态分配法。

优点:

1) 程序不必连续

2) 没有内部碎片

3) 便于实现共享,即允许若干个进程共享一个或多个段

缺点:

1) 作业要一次性全部装入内存

2) 存在外部碎片

段式存储于页式存储的区别

内容

页式存储

段式存储

划分依据

系统管理需要

用户应用需要

页/段大小

各页面大小相同

段的大小不固定

逻辑地址

只有一个逻辑地址空间

每个段一个独立的逻辑地址空间

页表/段表

页面较多,页表较长,查找费时

段较少,段表较短,查找速度快

碎片

存在内部碎片

存在外部碎片

内存共享

不支持

支持

存储扩充

不支持

不支持

4.3.4 段页式存储管理

 

4.4 虚拟存储技术

提出来源:
程序不是每一条指令都会在程序的一次运行中执行到,如:错误处理子程序、条件语句等。
程序中的指令有可能只执行一次,如:程序的初始化部分;在一段时间内,作业一般不会执行到所在程序全部指令,也不会存在绝大部分数据,执行的代码和要读取的数据往往集中在某些区域(例如一个循环里或一个数组中等等)。

原理

装入时只装入当前需要执行的某些区域,缺失时处理器通知OS将相应的区域装入内存,然后继续执行。

优点

1) 程序的大小可以突破内存容量限制,使得用户感觉到系统好像提供了一个容量极大的“主存”

2) 内存中容纳更多程序并发执行,系统效率得到提升。

4.5 虚拟页式存储技术

缺页中断---> 请求调页 ----> 页面置换

页面淘汰算法

功能:在可用页面不足时,确定内存中哪个物理页应该被淘汰
出发点:希望把未来不再使用的货短时间内较少使用的页面调出

1) 先进先出页面淘汰算法

2) 最近最少使用

3) 最近页面淘汰算法

4) 第二次机会淘汰算法

5) 页面缓冲算法

 

原创粉丝点击