操作系统存储器管理知识点

1、多级存储器

1)存储层次可以分为三层:寄存器、主存(内存)、辅存(磁盘);

2)不同层次之间还有相应的缓存以减小不同层次间读写速度不匹配程度;简单来说,主存也即寄存器和辅存之间的高速缓存;

3)不同层次的存储器读写效率不一样,读写速度越快,成本越高。

4)寄存器、主存、高速缓存等属于操作系统管理的范畴,断电后数据会丢失;而磁盘属于设备管理的范畴,断电后数据不会丢失。

2、程序装入

1)绝对装入方式:程序编译时即已经知道装入内存后的地址,程序的逻辑地址和实际内存地址完全一致,不需要重定位,这种方式只适合单道批处理系统;

2)可重定位装入方式:将程序装入内存后,立即重新计算其绝对地址,即逻辑地址加上地址偏移量。

3)动态运行时装入方式:将程序装入内存后,不立即计算其绝对地址,而是等真正需要该模块时才重新计算其绝对地址。

3、程序链接方式

1)静态链接:直接把目标模块及所需要的库链接成为一个整体,链接完成后不再拆开;

2)装入时动态链接:在程序装入内存时,边装入边链接,便于各个目标文件的共享;

3)运行时动态链接:当一个模块需要时才去链接;

4、内存分配方式

     连续分配:程序装入到一块连续的内存区域当中

1)单一连续分配:只适用于单用户单任务操作系统

2)固定分区分配:把内存区域划分为多个分区,每个分区装入一道作业;固定分区大小的划分有两种方式:相等、不相等,相等时可能引起内存浪费或部分大型程序无法装入。

3)动态分区分配:建立空闲分区链或空闲分区表,当需要内存时,去链中寻找大小匹配的内存区域;

分区匹配算法:首次适应算法(第一个块大小能满足的区域)、循环首次适应算法(从上次一次查找的地方开始向后查找,相较于前一种方法,可以使空闲分区更均匀)、最佳适应算法(能满足要求,且是当前最小的空闲分区,导致很多小的碎片无法再利用)、最坏适应算法(总是挑选当前最大分区分割给作业使用,优点是使空闲分区不会太小以致无法使用,但会使内存中缺少最大存储空间)、快速适应算法(建立多个链表,大小相等的空闲分区放置到同一链表当中,需要使用时,直接取出相应链表的第一块分区给程序使用,不进行切割;但会导致分区回收复杂)。

4)伙伴系统:无论已分配分区还是未分配分区,其大小均是2的k次幂,这种方法分配和回收时都可能会引起多次切割,每次切割都是除以2。

5)哈希算法:以分区大小作为关键字,使用时取出对应分区的地址;

 为应对没有足够空间装入作业问题,有以下两种解决方案:

1)可重定位分区分配:当零碎分区大小总和大于程序所需要内存时,可以通过“紧凑”的方法将内存进行整理,将分散的区域拼接在一起,其他程序需要重定位。

2)对换:将内存中暂时不能运行的进程或暂时不用的程序和数据调出到外存上,以腾出足够的内存空间。对换的单位可以是:进程、页、段;

离散分配方式

1)分页式存储:将进程的逻辑地址空间划分成若干大小相等的页面,将内存空间也划分成大小相等的存储块,将进程的页装入到内存空间的存储块当中(存储块不一定连续),并建立页表即页至物理块的映射。页表结构:页号   块号

页大小确定:页面太小,会导致页表过大;页面太大,会导致页内碎片过多(每个作业最后一页往往是装不满的);

页表:页表中保存的是页号和物理块号的映射;页表一般驻留在内存当中,页表寄存器中存放有页表的始址和页表长度;

当CPU需要读取某一数据时,首先访问内存中的页表,得到对应的物理地址,然后再次访问内存得到所需数据,所以需要两次访问内存。为提高访问效率,可在高速缓存中存放一快表,快表中存放有部分页号,CPU需要读取数据时,可先在快表中查找相应的页号,如果找不到再到内存了查找。

逻辑地址空间非常大时,页表也会非常大,解决方法:二级页表或只将部分页表调入内存当中。

2)分段式存储:将程序按功能划分为若干大小不同的段,段的存储位置可以不连续。段表结构:段号  段起始地址  段长

分页和分段的区别:页是信息的物理单位,页本身没有实际含义,主要是为了提高内存的使用效率,而段是信息的逻辑单位,段有其完整的的信息,主要是为了满足用户需要;页的大小固定且相等,其大小由系统决定,而段的大小并不固定,其大小由用户所编写的程序决定;页的地址空间是一维的,只有物理块号,而段的地址空间是二维的,不仅有物理段号,还有段内偏移地址;指向同一段数据区,段表的数量一般比页表少,当该数据区需要被多个作业共享时,所需段表的数量会比页表少很多,段更适合信息共享。

3)段页式存储:将每个段分成若干页,地址结构:段号、段内页号、页内地址;CPU读取数据时,首先访问内存上的段表,读取其段起始地址和段长,第二次访问内存上的页表,读取对应的物理块号,最后才会读取到数据,所以需要经过三次访问内存。

5、虚拟存储器

当作业很大或都有大量作业需要运行时,引起内存不足;解决方案:扩展逻辑内存。

1)基础:

局部性原理:即在一较短时间内,程序的执行只局限于某个部分;相应地,它所访问的存储空间也局限于某个区域;

2)虚拟存储:

程序运行之前,没有必要将所有模块装入内存,仅将需要的页或段装入内存,其余部分暂留在盘上;当内存不足时,将暂时不需要的段或页对换到磁盘上;相当于扩展内存。

3)虚拟存储器特征:多次性,一个作业被分成多次调入内存运行;对换性,允许作业在运行时被换出;虚拟性,用户看到的内存容量远大于实际容量;

4)虚拟存储器实现方法:

  (I)分页存储管理方式

a、三要素:页表机制、缺页中断机构、地址变换机构

b、页面置换算法:最佳置换算法(所被淘汰的页面将是以后永不使用的,或许是在最长时间内不再被访问的页面,该方法无法实现,只能用于评价其他方法)、先进先出页面置换算法(总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰)、最近最久未使用置换算法(选择最近最久未使用的页面进行置换,需要硬件支持)、最少使用置换算法(选择最近时期他用最少的页面作为淘汰页,需要硬件支持)、页面缓冲算法(将要被淘汰的页暂时不移出内存,而是放移动到一个链表后部,当达到一定数量后再移出)

c、调页策略

调页时间:预调页策略(基于预测)、请求调页策略

从何处调页:外存可以分为两部分,用于存放文件的文件区和用于存放对换页面的对换区。对换区通常是连续存储,而文件区则是离散存储。所以对换区的I/O速度较高。

当对换区空间充足时,程序运行前应将所有页面都拷贝到对换区,需要时,再从对换区换入所需页面。

系统缺少对换区空间时,凡是不会被修改的文件直接从文件区换入,且不必换出,因为不会被修改,再次需要时直接从文件区换入。对于可能被修改的部分,则需要换出到对换区,需要时从对换区换入。

Unix方式,对于未出现过的统一从文件区换入,对于出现过的则从对换区换入。

(II)分段存储管理方式

a、三要素:段表机制、缺段中断机构、地址变换机构

6、分段共享:设置一共享段表,维护每个段共享的进程数count,当count==0时,该段可以被回收。

时间: 2024-11-06 07:07:58

操作系统存储器管理知识点的相关文章

操作系统-存储器管理

存储器管理 存储器的层次结构 程序的装入和链接 用户程序要在系统中运行的话,就必须装入内存,然偶后将其转变为一个可执行的程序. 编译 由编译程序对用户源程序进行编译,形成若干个目标文件 链接 由链接程序将编译后形成的一组目标模块以及它们所需要的库函数接在一起,形成一个完整的装入模块 装入 由装入程序将装入模块装入内存 程序的链接 静态链接方式 在程序运行前,就先将各个目标模块以及它们所需要的库函数链接成一个完成的装配模块,之后都不会拆开,这样需要解决两个问题:修改相对地址,变换外部调用符号 装入

操作系统-存储器管理部分

存储器历来都是计算机系统中重要的组成部分.仍然是一种宝贵而又稀缺的资源. 如何对它加以有效的管理,不仅直接影响到存储器的利用效率,而且会影响系统的性能. 存储器的管理的主要对象是内存.在计算机执行时,几乎每一条指令都会涉及到对存储器的访问. 存储器的三个理想条件(这三个条件从现在技术来讲是不可能同时达到的) 1.对存储器的访问速度要跟得上处理机的运行速度. 2.要求存储器要有很大的容量. 3.而且存储器的造价应该很低. 在现代计算机系统当中无一例外的采用了多层结构的存储器系统. 存储器的多层结构

【操作系统-存储器管理】简单的clock置换算法的实现

分析:clock置换算法是利用循环队列来实现的.操作系统课本上的讲解时这样的 代码实现: #include<iostream> using namespace std; typedef struct numbernode { int *data; bool *ask;//访问号 }Numnode; typedef struct node { Numnode numnode; int maxsize; int rear; int front; }queue; queue* create(); v

操作系统存储器管理选择题精练

1.在段页式存储管理中,其虚拟地址空间是() A.一维                               B.二维                                C.三维                            D.层次 答案:B 2.采用( )不会产生内部碎片(“内零头”)A.分页式存储管理                                                             B.分段式存储管理 C.固定分区式存储管理 

计算机操作系统 存储器管理

1.连续分配存储管理方式 1.1 单一连续分配 1.2 固定分区分配 1.2.1 分区大小相等 1.2.2 分区大小不相等 1.3 动态分区分配 1.3.1 数据结构 1.3.2 动态分配分区算法 1.3.2.1 基于顺序搜索的动态分区分配算法 1.3.2.1.1 首次适应算法(first fit) 1.3.2.1.2 循环首次适应算法(next fit) 1.3.2.1.3 最佳适应算法(best fit) 1.3.2.1.4 最坏适应算法(worst fit) 1.3.2.2 基于索引搜索的

【操作系统】存储器管理(四)

一.前言 在分析了处理器调度后,接着分析存储器管理,如何对存储器进行有效的管理,直接影响着存储器的利用率和系统性能.下面,开始存储器管理的学习. 二.存储器的层次结构 2.1 主存储器 主存储器是计算机系统中的一个主要部件,用于保存进程运行时的程序和数据,CPU的控制部件只能从主存储器中取得指令和数据,数据能够从主存储器中读取并将他们装入到寄存器中,或者从寄存器存入到主存储器,CPU与外围设备交换的信息一般也依托于主存储器地址空间.但是,主存储器的访问速度远低于CPU执行指令的速度,于是引入了寄

操作系统--内存管理方式

“碎片的内存”描述一个系统中所有不可用的空闲内存.这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用.这一问题通常都会发生,原因在于空闲内存以小而不连续方式出现在不同的位置.由于分 配方法决定内存碎片是否是一个问题,因此内存分配器在保证空闲资源可用性方面扮演着重要的角色. internal fragmentation:when memory allocated to a process is larger than requested memory, the differe

操作系统内存管理之 内部碎片vs外部碎片

外部碎片:因为行程持续地被载入与置换,使得可用的记忆体空间被分割成许多不连续的区块.虽然记忆体所剩空间总和足够让新行程执行,却因为空间不连续,导致程式无法载入执行. 内部碎片:发生在以固定长度分割区来进行配置的记忆体中当一个程式载入到固定大小的分割区时,假如程式小于分割区,则剩余的空间将无法被使用,称为内部碎片.利用聚集或分页可以消除外部碎片. "碎片的内存"描述一个系统中所有不可用的空闲内存.这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用.这一问题通常都会发

操作系统 内存管理机制

参考和查阅了一下他人的资料,整理下 虚拟内存.物理内存.Swap分区.页面置换机制等基础知识 虚拟地址空间 与 物理地址空间的关系 虚拟地址由操作系统维护,由MMU可以进行转换,扩大了内存空间分页管理. 大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制. 虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页帧(frame),一个在磁盘,一个在内存,页和页桢的大小必须相同.在32位地址的机器,它的虚拟地址范围从0~0xFFFFFFFF(4G),而这