存储器管理
目录
本章知识点流程图:
层次越高,越靠近CPU,访问速度越快,价格越高。
内存掉电之后信息不保存,除非已经写入到外存中。
1、程序的装入与链接
(1)程序的装入
多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事就是分配内存。
将一个装入模块装入内存(第三步开始)时,有三种装入方式:
重定位:把在装入时对目标程序中指令和数据的地址修改过程称为重定位。
(2)程序的连接
2、连续分配存储管理方式
连续分配方式为一个用户程序分配一个连续的内存空间
连续分配有以下几种:
(1)单一连续分配
即将内存分为系统区和用户区,整个内存的用户空间由该程序独占。
优点:易于管理
缺点:对要求内存空间少的程序,造成内存浪费.
(2)固定分区分配
固定分区分配是最简单的可运行多道程序的存储管理方式;内存用户空间划分为若干个固定大小的区域,每个分区中只装入一道作业;
固定分区分配的缺点是:并发进程数受分区个数的制约!
划分分区的方法 |
分区大小相等 |
方便实用
|
缺乏灵活性。可能造成空间浪费和装不下大的程序。 |
分区大小不相等 |
灵活度高 |
|
(3)动态分区分配
根据进程的实际需要,动态地为之分配内存空间;
需要设置空闲分区表和空闲分区链:
分配算法:需要选择合适的内存动态分配算法,按照算法从空闲分区(链)中选出一个分区分配给该作业。
a. 基于顺序搜索的动态分区分配算法
算法 |
思想 |
优点 |
缺点 |
效果 |
首次适应算法FF |
分配时从链首开始查找,找到一个大小可满足的空闲分区,划出一块给程序 |
简单;优先利用低地址空闲区,保留高地址大空闲区 |
会造成在低地址部分很多难以利用的小空闲分区,查找效率低 |
最好、最快 |
循环首次适应算法 |
每次分配时从上一次找到空闲分区的下一个空闲区开始查找 |
减少查找空闲分区开销,空闲分区分布更均匀 |
缺乏大的空闲区 |
其次好和其次快的 |
最佳适应算法 |
空闲区按容量由小到大排序 每次分配时,把能满足要求、又是最小的分区分配给作业 |
不缺乏大的空闲区 |
会在存储器中留直许多难以利用的小分区——“零头(或碎片)”;查找效率低 |
最差的(每次分配后剩下小碎片,难再分,不得不经常压缩内存,反而浪费CPU) |
最坏适应算法 |
空闲区按容量由大到小排序 每次分配时,把能满足要求、又是最大的分区分配给作业 |
会在存储器中留直许多难以利用的小分区——“零头(或碎片)”;查找效率低 |
缺乏大的空闲区 |
|
b. 基于索引搜索的动态分区分配算法
算法 |
思想 |
优点 |
缺点 |
快速适应算法 |
将空闲分区根据容量进行分类,对于每一类,单独设立一个空闲分区链表;分级索引 |
查找效率高,满足大空间的需求 |
分区合并算法较复杂 |
伙伴系统算法 |
|
|
|
哈希算法 |
|
|
|
c. 动态分区的优缺点
优点: 便于动态申请内存;便于共享内存;便于动态链接
缺点:碎片问题(外碎片),要求连续的内存空间,内存利用率不高,受实际内存容量限制
(4)可重定位分区分配
1. 对于碎片的处理方式
紧凑技术:通过在内存移动程序,将所有小的空闲区域合并为大的空闲区域.
(紧缩技术,紧致技术,浮动技术,搬家技术)
问题:开销大;移动时机
2. 动态重定位
在连续分配存在方式中,程序载入必须有足够大的连续空间才能分配。
动态重定位分区分配算法,与动态分区分配算法基本上相同;
差别仅在于:在这种分配算法中,增加了“紧凑”功能;
3. 优缺点
优点:解决了可变分区分配所引入的“外零头”问题。消除内存碎片,提高内存利用率。
缺点:提高硬件成本,紧凑时花费CPU时间。
(5)对换
- 所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施。
- 对换是以整个进程为单位,称之为“整体对换”或“进程对换”,解决内存紧张问题;
- 对换是以“页”或“段”为单位,则分别称之为“页面对换”或“分段对换”,又统称为“部分对换”;
- 为了实现进程对换,系统必须能实现以下三方面的功能:
- (1)对换空间的管理:
- (2)进程的换出:选择处于“阻塞”状态且优先级最低的进程作为换出进程;
- (3)进程的换入:在“就绪”状态但已换出的进程,中换出时间最久的进程作为换入进程;
3、分页和分段方式及其概述
(1)为什么要用分页和分段方式?
因为连续分配地址空间会形成许多碎片,虽然有“紧凑”的方法可以拼接碎片,但是开销很大。所以考虑将进程分散的装入不相邻的分区中,充分用空间。 |
分页存储管理:将用户程序分成若干大小固定的区域成为页面,(典型为1KB大小),相应的也将内存空间分为若干和页块大小相同的物理块,用户程序可以放入任意一物理块。 |
分段存储管理:为满足用户要求,将程序分为大小不同的若干段,每一段定义相对完整的信息,在内存分配时以段为单位,段在内存中可以不邻接。 |
段页式存储管理:先将用户程序分为若干个段,再将每个段分为若干页,并为每一个段命名。 |
(2)分段与分页的去区别
分页 |
分段 |
页的信息是物理单位,分页实现离散分配方式 |
段是信息的逻辑单位,包含一组完整的信息 |
消减外零头,提高内存利用率,对用户不可见 |
为了便于满足用户的需求 |
页面大小固定,由系统决定 |
段的长度不固定,用户决定 |
分页的用户程序的地址空间是一维的 |
分段的用户程序的地址空间是二维的 |
4、基本分页存储管理方式
定义:分页存储管理的方式中,不具备页面对换功能,则基本的(纯)分页管理方式,它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。
(1)页面与页表
分页:把用户程序按逻辑页划分成大小相等的部分,称为页或页面。从0开始编制页号,页内地址是相对于0编址。
碎片,进程划分到最后一页没有填满整个页,形成不可利用的碎片
物理块:内存空间分为若干物理块,块和页的大小相等;
页面,将进程逻辑地址空间分成若干页,编号:0,1,2…;
页面大小:页面的大小应选择的适中,且页面大小应是2的幂,通常为
1KB~8 KB,页面过大,减少页表长度,导致碎片增大;页面过小造成程序占用较多页面,导致页表过长,占用大量内存。
(2)页表
用户程序中的逻辑地址——主存中的物理地址,对应关系表。
(3)地址变换
(4)地址变换机构
地址变换机构的作用是,在进程运行期间,实现从逻辑地址到物理地址的转换,页表的功能是由一组专门的寄存器来实现的,一个页表项用一个寄存器。
这种方式,由于页表是存放在内存中的,这使CPU每次要存取一个数据时,都要两次访问内存。 第一次 访问内存中的页表。 第二次 获得所需数据。
进程访问某个逻辑地址的数据过程如下:
- 分页地址机构自动将有效地址分为页号和页内地址(逻辑地址);
- 将页号与页表长度进行比较,若大于页表长度则不存在这一页产生中断;
- 若为出现错误则将页表起始地址与页表*页表长度的值相加,得到该表项在页表中的位置,
- 以页号为索引去检索页表,得到对应的物理块号,将之装入物理寄存器中
- 与此同时再将第一步中的(逻辑地址)中的页内地址送入物理地址寄存器的块内地址的地址字段中。
(5)具有块表的地址变换机构
为提高地址变换速度,在地址变换机构中增设一个具有并行查询能力的高速缓冲寄存器,又称为“联想寄存器”或“快表”。
由于成本关系,块表不可能很大,快表通常可存放16-512个表项,如果设计得当,命中率可达90%以上。通常可以把循环指令中的页放到快表中(访问次数多)
在查找访问对于逻辑数据时,一部分直接查找快表,一部分按照页表寄存器查找,可以有效增加效率。
查快表相当于只需要一次访问就可以获得数据,查页表则需要两次访问
(6)两级页表
二级页表需要三次访问才能获取数据。
(7)反置页表
5、基本分段存储管理方式
(1)分段与分页的区别:
- 分页存储管理的主要目的是为了提高内存利用率;
- 分段存储管理的主要目的是为了满足用户在编程和使用上的要求;
- 页是信息的物理单位,段则是信息的逻辑单位;
- 页的大小固定且由系统决定,而段的长度却不固定,决定于用户所编写的程序;
- 分页的作业地址空间是一维的,即单一的线性地址空间,程序员只需利用一个记忆符,即可表示一个地址; 而分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名, 又需给出段内地址。
(2)分段的基本原理
(3)段表
- 在分段式存储管理系统中,为每个分段分配一个连续的分区,而进程中的各个段可以离散地移入内存中的不同的分区
- 系统为每个进程建立一张段映射表,简称为“段表”
- 每个段在段表中占一个表项,其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度
(4)段表访问数据的过程
(重点)
加入快表的分段访问数据的过程:
分段存储管理的特点
- 分段存储管理在:方便编程,信息共享,信息保护,动态增长,动态链接。
- 可重入代码又称为“纯代码”是一种允许多个进程同时访问的代码。可重入代码是一种不允许任何进程对它进行修改的代码
- 将可重入代码写成单独的段项就可以实现共享。
- 分段存储管理也会产生碎片,因为段还需要连续的存储空间。
6、基本段页式存储管理方式
- 是分段和分页原理的结合。
- 将用户程序分成若干个段,再把每一段分成若干个页,并为每一段赋予一个段名。
- 段页式管理中,地址机构由段号、段内页号及页内地址三部分所组成。
在段页式系统中,需三次访问内存。
第一次访问,是访问内存中的段表。
第二次访问,是访问内存中的页表。
第三次访问,才是真正从第二次访问所得的地址中,取出指令或数据。
来源:CSDN
作者:朝荣
链接:https://blog.csdn.net/weixin_40695088/article/details/104145329