【 操作系统 】第四章——存储器管理

来源:互联网 发布:华硕vm590l参数数据 编辑:程序博客网 时间:2024/06/05 10:47

第四章 存储器管理

 

1.        存储器的层次结构

[1]      多级存储器结构

[2]      主存储器与寄存器

[3]      高速缓存和磁盘缓存

2.        程序的装入和链接

[1]      程序的装入

[2]      程序的链接

3.        连续分配方式

1.        单一连续分配

2.        固定分区分配

3.        动态分区分配

4.        伙伴系统

5.        哈希算法

6.        可重定位分区分配

7.        对换

4.        基本分页存储管理方式

[1]      页面与页表

[2]      地址变换机构

[3]      两级与多级页表

5.        基本分段存储管理方式

 

6.        虚拟存储器的基本概念

7.        请求分页存储管理方式

8.        页面置换算法

9.        请求分段管理方式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

存储器管理的主要对象是内存,外存主要用来放文件。

 

一、            存储器的层次结构

1.        多级存储器结构

分为三层:CPU寄存器、主存和辅存。

寄存器和主存是操作系统管理范畴,指令访问,辅存是设备管理范畴,通过I/O设备实现。

2.        主存储器与寄存器

 

主存储器:即内存,保存程序和数据。CPU只能从内存中取指令和数据,但主存储器访问速度远低于CPU,所以引入寄存器和高速缓存。

寄存器:可以存放操作数等加快主存储器访问速度。

 

3.        高速缓存和磁盘缓存

 

高速缓存:容量大于寄存器,速度高于主存。程序和指令存放再贮存中,CPU访问时,临时复制到高速缓存,CPU可直接去除,避免频繁访问主存,提高执行速度。

磁盘缓存:磁盘I/O速度低于主存访问速度。利用主存中的空间,提供磁盘缓存,减少对磁盘的频繁读写,提高速度,主存也可以看做辅存的高速缓存。

 

二、            程序的装入和链接

在多道程序环境下,要使程序运行,需要将程序和数据加入内存,然后创建进程,

源程序变为可执行程序需要经过:

A.       编译:把源代码编译成若干目标模块。

B.       链接:将目标模块和所需库函数链接成装入模块。

C.       装入:将装入模块装入内存。

1.        程序的装入(内存)

A.       绝对装入方式

将目标模块装入内存中事先指定的位置,只适合单道程序环境,需要事先知道存放位置,且程序或数据被修改时,可能要改变所有地址。

B.       可重定位装入方式

在装入时对目标程序中的指令和数据进行修改,根据内存的情况,指定适当位置。

重定位:装入时对目标程序的修改。因为地址变换再装入时一次完成,所以是静态重定位。

C.        动态运行时装入方式

模块装入内存时,并不立即转换为绝对地址,而是等执行时再转换。为不影响指令执行速度,需要一个重定位寄存器来负责地址转换。

2.        程序的链接

A.       静态链接(事先进行链接)

程序运行之前,将目标模块和库函数连接成完整装配模块,之后不再分开。

B.       装入时动态链接

编译后的目标模块,在装入时边装入边链接。

C.        运行时动态链接

在执行过程中,若发现调入模块未装入内存,再去调用装入链接。

三、            连续分配方式

1.        单一连续分配

只能用于单用户、单任务的操作系统,把内存分为系统区和用户区,系统区让os用,放在内存的低址部分。 

2.        固定分区分配

将内存分为多个固定大小区域,一个分区只能装一道作业。

内存分配:分区按大小排毒,建立一张分区使用表,包括每个分区的起始地址、大小及状态。当有程序要装入时,检索该表,分配分区。但因为大小固定,所以易造成浪费。

3.        动态分区分配

根据进程需要,动态地为之分配内存空间。

[1]      分区分配中的数据结构

空闲分区表,记录分区、序号始址及分区大小。

空闲分区链,设置前后指针,和尾部设置状态位和分区大小表目,

[2]      分区分配算法

A.       首次适应算法

空闲分区链以地址递增次序链接。优先利用低址的空闲分区,可保证之后分配大的分区,但是低址部分不断划分,易留下许多零碎分区。

B.       循环首次适应算法

从上次的空闲分区开始查找,若到结尾可返回头继续查找。要设置查询指针,能使空闲分区分布均匀,但容易缺乏大的空闲分区。

C.       最佳适应算法

每次为作业分配内存时,总把最满足要求、最小的分配给作业。分区按容量小到大顺序排列,容易留下小空闲区。

D.       最坏适应算法

分区按容量大到小排列,每次挑最大的分配,避免碎片,但容易缺乏大分区。

以上四种也称顺序搜索法。

E.        快速适应算法

也称分类搜索法,将分区按容量大小分类,相同大小建一个空闲分区链表,并为多个链表设置索引表。然后查找分配。

优点:效率高,缺点,分区归还时算法复杂。

[3]      分区分配操作

A.       分配内存,考察请求分区和空闲分区大小,做出判断。

B.       回收内存,四种情况,分别是合并和重建表。

4.        伙伴系统

是固定分区和动态分区的一种折中,既避免固定分区的进程数目限制,又避免动态分区回收时算法的复杂性。

 

5.        哈希算法

6.        可重定位分区分配

7.        对换

四、            基本分页存储管理方式

[4]      页面与页表

[5]      地址变换机构

[6]      两级与多级页表

五、            基本分段存储管理方式

 

六、            虚拟存储器的基本概念

七、            请求分页存储管理方式

八、            页面置换算法

九、            请求分段管理方式

 

 

0 0