存储器管理

通用计算机有三层存储器:CPU寄存器,主存,辅存。

为了缓和各存储器之间处理速度的差异,在寄存器和主存之间加入了高速缓存,而在主存和辅存之间加入了磁盘缓存。

程序的装入和链接:编译(将用户源代码编译成目标模块)——链接(链接库函数)——形成完整的装入模块——装入(将模块装入内存)。

模块装入方式:

1)绝对装入方式:将目标模块装入到内存事先指定的位置。

2)可重定位装入方式:装入模块的逻辑地址和内存中的物理地址不同。所提供的是相对地址,装入内存之前确定绝对地址

3)运行态装入方式:装入内存中的地址仍然是相对地址,当程序执行时才转换为绝对地址。

程序的链接:

1)静态链接:程序在装入之前链接库函数,装入之后不可拆分。

2)装入时动态链接:边装入边链接。(便于更改更新,便于实现模块共享)

3)运行时链接:在程序执行中,需要该模块时才装入。(加快装入过程,节省内存空间)。

内存的分配方式:

一、连续分配方式。

1)单一连续分配(只能用于单用户单任务系统):划分为系统区和用户区

2)固定分区分配:(可运行多道程序):在内存用户中划分为多个固定大小的区域,每个分区只装入一道作业。而分区大小又可分为相同大小和不同大小

3)动态分区分配:根据进程的实际需要动态地分配内存。分配算法:

(1)首次适应算法:将空闲分区按照地址递增方式连接,分配内存时从首地址开始,找到合适的分区。它倾向于先用低地址分区,从而保证了高地址分区空闲,但是碎片多,且查找慢。

(2)循环首次适应算法:从上次找到的空闲分区的下一个空闲分区开始查找,找到满足的。这样使得空闲分区分布均匀,减少查找时间,但是缺乏大的空闲分区。

(3)最佳适应算法:将空闲分区按照从大到小排列,每次找到既能满足又是最小的分区,从而避免大材小用。缺点是遗留下太多很小的空闲分区。

(4)最坏适应算法:挑最大的空闲分区分配。这样空闲分区不至于太小。缺点是缺乏大空间分区。

(5)快速适应算法:按照分区的大小进行分类,每次寻找最佳分区。特点是查找效率高,缺点是算法复杂,系统开销大。

4)可重定位分区分配。将分配的分区通过移动,使他们全部邻接,这样就空出大的分区。因为要变换地址,所以可先不计算出绝对地址,在执行该作业时再计算。所以作业装入内存后,仍然是相对地址。而地址变换机构需要硬件的支持。增设重定位寄存器来存放程序的起始地址。

 

对换

所谓对换就是把内存中暂时不能运行的进程或程序或数据调到外存,而把具备运行的进程调到内存。如果对换是以整个进程为单位则为整体对换,而如果对换是以页或段为单位则为页对换或段对换。

将外村分为文件区和对换区,文件区存放时离散的,而对换区是连续的。对换区读写速度快于文件区。对换出的进程放在对换区,

二、离散分配方式。

离散分配方式包括分页和分段存储管理。

分页是按照信息的物理单位来切割的。分段是按照信息的逻辑单位来切割的。

分页存储是将进程按照逻辑地址分割成大小相等的片。

地质结构为32位,分为两部分:页号和位移量。

因为各个页离散的分布在内存中,所以必须建立页表以方便查询。页表实现了从页号到物理块号的映射。因为页在内存中放在物理块中。

如何从进程的有效地址(相对地址)转换到物理地址:

CPU要两次访问内存才能获取页中的数据。第一次找到物理块号算出物理地址,第二次才根据物理地址访问页中数据。为了提高地址变换速度,建立一个具有并行查询功能的缓冲寄存器。在寄存器中建立快表,利用快表查找物理块号,并送到物理地址寄存器中。如果能再块表查找到物理块号则CPU只需访问一次即可。

 

因为页表自身也会占用很大内存空间,而且在一级页表中要求页表存放在连续空间内存中。这样就占用相当大的内存。为此可以将页表再进行分页,这样就可以将第二级页表离散的放在内存的物理块中。所以两级页表解决的是大页表无需连续的存储在内存空间中。

 

分段存储管理:分页解决的是系统内存利用率,而分段则解决的是用户在编程上的要求。

引入分段目的:1)方便编程。2)信息共享(可以设置共享段,因为段的信息是一个完整的单元,而页表达的信息不完整,无法对其共享)3)信息保护。4)动态增长(对于数据段来说,以段为单位能够更好的进行增长)。

 分页和分段存储的同异:

都是离散分配方式,都是通过地址映射来实现地址变换。

分页实现离散分配,消减内存的零头,但是分页仅仅是由于系统管理的需要,没有用户的需要。而分段考虑了用户的需要。

页的大小固定,段的大小不固定。

分页是线性地址是一维的,分段是二维的,需要段名和段内地址。

 

虚拟存储:两大技术:调入功能、置换功能。

它是通过请求分页系统和请求分段系统的基础上来实现的。

虚拟存储的特征:1、多次性(一个作业被分成多次调入内存)2、对换性(在作业运行期间,将进程进行换入换出)3、虚拟性(能从逻辑上扩充内存容量)。

页面置换算法:即如何置换页面从而使系统利用率最高。

1、最佳置换算法(理想的算法,无法实现。所选择的淘汰的页面是以后永久不使用的或是未来最长时间不使用的 )。

2、先进先出算法(最先进入的最先调出,即在内存中停留时间最长的页面最先调出内存)

3、最近最久未使用算法:选择最近最久没有使用的页面调出内存。(算法比较好但是要求系统硬件的支持,比如使用寄存器或者栈来记录最近最久未使用的页面)

4、Clock置换算法(是算法3的一种近似算法,即通过轮流检测、修改页面的访问状态和修改状态来决定需要置换出的页面)。

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。