存储管理概述

存储器管理概述

存储器可分为内存和外存,CPU不能直接访问外存,但是可以直接访问内存。CPU要访问外存内容的话,只能将访问的数据内容转移至内存,才可以进行访问。

在内存其中,有两个划分的区域,一是系统区,二是用户区,而存储器管理实质上就是管理用户的用户区。

存储体系

寄存器->高速缓存->主存储器->辅助存储器
访问速度依次减缓,容量依次增大。

存储管理功能

固定分区存储管理

基本原理

系统预先把内存中的用户区划分成若干个固定大小的连续区域,每个区域称为一个分区。每个分区可以装入一道程序,每道程序也只能装入一个分区

分区分配表

分区分配表由分区号、分区大小、起始地址以及使用状态组成

分区号 分区大小 起始地址 状态
1 16KB 32KB Job1
2 32KB 48KB 0
3 60KB 80KB Job3

分区分配过程

操作系统寻找一个适合程序的分区大小,找到后将该分区的状态改为程序名,不用或者空间时,状态为0

地址转换过程

\(物理地址 = 逻辑地址 + 起始地址\)

可变分区分配管理

基本原理

系统不预先划分固定区域,而是程序装入内存时,根据程序的世纪需要动态地划分内存空间

分区分配表

空闲分区表:分区序号、起始地址、分区大小以及状态

起始地址 大小 状态
32KB 6KB 0
65KB 18KB 0
100KB 25KB 0

已分配分区表:分区序号、起始地址、分区大小以及状态

起始地址 大小 状态
40KB 24KB Job1
84KB 15KB Job2
126KB 21KB Job1

分区分配过程

操作系统寻找一个适合程序的分区大小,找到后将该分区的状态改为程序名,不用或者空间时,状态为0

地址转换过程

\(物理地址 = 逻辑地址 + 起始地址\)

分区分配算法

首次适应算法

要求空闲分区按照首地址递增的顺序排列。每次内存分配时,总是顺序查找空间分区表,找到第一个能够满足要求的空闲分区,按照程序的大小,分割该空闲分区,一部分分配给程序,剩余的仍然留在空闲分区表中。

优点:有利于大作业

缺点:会产生内存碎片,查找的开销大

循环首次适应算法

要求空闲分区按照首地址递增的顺序排列。每次内存分配时,不再从表头开始查找,而是从上次分配的空闲分区的下一个空闲分区开始顺序查找,直到找到第一个满足要求的空闲分区,分割这个空闲分区,并分配给程序。

优点:空闲分区分布较为均匀,查找开销小

缺点:缺少较大的空闲分区

最佳适应算法

要求将空闲分区按从小到大的顺序排列。每次内存分配时,从表头 开始查找 第一个能满足程序或作业要求的最小空闲分区,分割该空闲分区给该程序,剩余的空闲分区仍保留再表格中,并更新空闲分区表。
优点:有利于大程序

缺点:产生内存碎片,查找开销大

最坏适应算法

与最佳适应算法刚好相反,要求空闲分区按从大到小的顺序排列的。每次内存分配时,总是查找空闲表表头的最大空闲分区进行分割,分配后的剩余空闲分区不至于太小而成为内存碎片,从而容易满足以后程序的要求

优点:不易产生碎片,有利于中、小程序,查找效率高

缺点:影响大程序的分配

可重定位的分区存储管理

引入原因:处理内存碎片

紧凑(拼接) :将多个分散的小空闲分区拼接成大空闲分区

特点:紧凑技术,提高内存的利用率

内存分配: 若内存中存在满足程序或作业所要求的空闲分区,则按照可变分区分配方式分配内存; 若内存中找不到满足程序或作业要求的空闲分区,但剩余空闲分区大小总合超过作业的 要求,则实施紧凑技术,拼接出空闲区域,再进行分配。

地址转换:用户程序再装入内存时,程序中所引用的地址仍然是逻辑地址。因为当内存拼接时用 户程序中的位置会发送变化,所以当程序执行时,才将逻辑地址转换为物理地址

基本分页存储管理

基本概念

页面和页框:在进程实体中,将进程的逻辑地址空间分成等大小的区域,每个区域称为“页面”。在内存中,将物理地址空间分成等大小的区域,每个区域称为“页框”。

相应的,各个页面还是页框加以编号,从0开始,以这种区域块为单位,将进程分割,放入内存中。要进行类比的话,要把五升水,倒入五个一升的瓶子。五升水是进程,逻辑上将其分成五份,每一份是一升,每一份视为一个“页面”。这样同理,每一个瓶子都可以视为“页框”。

页面:

页框:

逻辑地址结构:(页号page,页内偏移量offset)

通过逻辑地址获取页号:page=逻辑地址/页的大小

通过逻辑地址获取逻辑地址在页内的偏移量:offset=逻辑地址mod页的大小

页表

用于记录程序页面在内存中存放情况,即该程序的页面物理块之间的对应关系

页表结构:(页号,块号)

页号 块号
0 2
1 4

地址转换

\(物理地址=页号*页大小+页内偏移量\)

内存分配过程

改进措施

CPU访问内存两次:

第一次是访问内存中的页表

第二次是获取内存中对应的数据或指令

快表:指存放在告诉缓冲寄存器中的页表。
二级页表:将页表再次进行分页。

基本分段存储管理

段页式存储管理

引入原因

分页存储管理解决了碎片问题,单位考虑用户需求

分段存储管理方便了用户使用,但可能产生内存碎片

内存分配和回收

把将要回收的分区成为回收区,则要在回收区的上邻和下邻进行关注,如有空间区,则将其和会收区合并为大的空闲区。

地址变换:逻辑地址->物理地址

内存共享

内存保护

内存扩充:虚拟存储技术

地址变换

物理地址(绝对地址):是内存中存储单元的编号

逻辑地址(相对地址):用户程序中指令的编号

地址转换(地址重定位):指将用户使用的逻辑地址转换为内存空间中物理地址的过程。

物理地址=(内存中随机给定位置)起始地址 + 逻辑地址

地址重定位的两种方式

静态重定位

程序执行前,将指令和数据的逻辑地址一次性全部转换为物理地址

动态重定位

程序执行过程中需要访问数据时再进行地址变换

存储管理方式

你可能感兴趣的:(存储管理概述)