关闭

内存管理

标签: 内存管理操作系统
196人阅读 评论(1) 收藏 举报
分类:

这里面一共包括两个部分:内存管理和虚拟内存管理
这里写图片描述


1 内存管理

1.1 内存管理的概念

操作系统对内存的划分和动态分配,就是内存管理的概念。
有效的内存管理在多道程序设计中非常重要,不仅方便用户使用存储器、提高内存利用率,还可以通过虚拟技术从逻辑上扩充存储器。
内存管理的功能:内存空间的分配与回收、地址转换、内存空间的扩充、存储保护。
(1)程序装入和链接
编译:由编译程序将用户源代码编译成若干个目标模块。
链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块。
装入:由装入程序将装入模块装入内存运行。
程序的链接有三种方式:静态链接、装入时动态链接、运行时动态链接。
内存的装入模块在装入内存时,有三种方式:绝对装入、可重定位装入、动态运行时装入。
(2)逻辑地址空间和物理地址空间
编译后,每个目标模块都是从0号单元开始编址,称为该目标模块的相对地址(逻辑地址)。物理地址空间是指内存中物理单元的集合,它是地址转换的最终地址,进程在运行时执行指令和访问数据最后都要通过物理地址从主存中存取。当装入程序将可执行代码装入内存时,必须通过地址装换将逻辑地址装换成物理地址,这个过程称为地址重定位
(3)内存保护
内存分配前,需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响。通过重定位寄存器和界地址寄存器来实现这种保护。

1.2 覆盖与交换

覆盖与交换技术是在多道程序环境下用来扩充内存的两种办法。
(1)覆盖
基本思想:由于程序运行时并非任何时候都要访问程序及数据的各个部分,因此可以把用户空间分成一个固定区和若干个覆盖区。将经常活跃的部分放在固定区,其余部分按调用关系分段。覆盖技术的特点打破了必须将一个进程的全部信息装入主存后才能运行的限制,但当同时运行程序的代码量大于主存时仍不能运行。
(2)交换
交换的基本思想是:把处于等待状态(或在CPU调度原则下被剥夺运行权利)的程序从内存移到辅存,把内存空间腾出来,这一过程又叫换出;把准备好竞争CPU运次那个的程序从辅存移到内存,这一过程又称为换入。

交换技术主要是在不同进程或作业之间进行,而覆盖则用于同一个程序或进程中。

1.3 连续分配管理技术

连续分配方式,是指为一个用户程序分配一个连续的内存空间。它主要包括单一连续分配固定分区分配动态分区分配
(1)单一连续分配
这种方式的优点是简单、无外部碎片,可以采用覆盖技术,不需要额外的技术支持。缺点是只能用于单用户、单任务的操作系统中,有内部碎片,存储器的利用率低。
(2)固定分区分配
固定分区分配是最简单的一种多道程序存储管理方式,它将用户内存空间划分为若干个固定大小的区域,每个分区只装入一道作业。当有空闲分区时,便可以再从外存的后备作业队列中,选择适当大小的作业装入该分区,如此循环。容易有内部碎片
(3)动态分区分配
有外部碎片,克服外部水平可以通过紧凑技术来解决,但是这需要动态重定位寄存器的支持,且相对费时。动态分区的分配策略:首次适应算法,最佳适应算法,最坏适应算法(挑最大的),邻近适应算法(又称循环首次适应算法)。

1.4 非连续分配管理方式

非连续分配允许一个程序分散地装入到不相邻的内存分区中,根据分区的大小是否固定分为分页存储管理方式和分段存储管理方式。
分页存储管理方式中,又根据运行作业时是否要把作业的所有页面都装入内存才能运行分为基本分页存储管理方式和请求分页存储管理方式。
(1)基本分页存储管理方式
分页的思想:把主存空间划分为大小相等且固定的快,快相对较小,作为主存的基本单位。每个进程也以块为单位进行划分,进程在执行时,以块为单位逐个申请主存中的块空间。
(2)基本分段存储管理方式
分页管理方式是从计算机的角度考虑设计的,以提高内存的利用率,提升计算机的性能,且分页通过硬件机制实现,对用户完全透明;而分段管理方式的提出则是考虑了用户和程序员,以满足方便变成、信息保护和共享、动态增长及动态链接等多方面的需要。
(3)段页式管理方式
在段页式系统中,作业的地址空间受限被分成若干个逻辑段,每段都有自己的段号,然后再将每一段分成若干个大小固定的页。


2 虚拟内存管理

2.1 虚拟内存的基本概念

(1)传统存储管理方式的特征
一次性:作业必须一次性全部装入内存后,方能开始运行。
驻留性:作业被装入内存后,就一直驻留在内存中,其任何部分都不会被换出,直至作业运行结束。
(2)局部性原理
局部性原理表现在以下两个方面:时间局部性、空间局部性。
(3)虚拟存储器的定义和特征
多次性、对换性、虚拟性。
(4)虚拟内存技术实现
虚拟内存中,允许将一个作业分多次调入内存。采用连续分配方式时,会使相当一部分内存空间都处于暂时或永久的空闲状态,造成内存资源的严重浪费,而且也无法从逻辑上扩大内存容量。虚拟内存的实现有三种方式:请求分页存储管理、请求分段存储管理、请求段页式存储管理。

2.2 请求分页管理方式

在请求分页系统中,只要求将当前需要的一部分页面装入内存,便可以启动作业运行。在作业执行过程中,当所要访问的页面不在内存时,再通过调页功能将其调入,同时还可以通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。

2.3 页面置换算法

常见的置换算法有以下四种:

1.最佳置换算法:所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。
2.先进先出FIFO页面置换算法:优先淘汰最早进入内存的页面,亦即在内存中驻留时间最久的页面。
3.最近最久未使用LRU:选择最近最久时间未访问的页面淘汰,它认为过去一段时间内未访问过的页面,在最近的将来可能也不会被访问。
4.时钟CLOCK置换算法:LRU算法性能接近于OPT,但实现起来比较困难,开销大;FIFO算法实现简单,但性能差。简单的CLOCK算法是给每一帧关联一个附加位,称为使用位。由于该算法循环地检查各页面的情况,故称为CLOCK算法。改进型的CLOCK通过增加使用的位数目,替换时首选没有变化的页,由于修改过的页在被替换之前必须写回,因而这样做会节省时间。

2.4 页面分配策略

1.驻留集大小:现代操作系统通常采用三种策略:固定分配局部置换、可变分配全局置换、可变分配局部置换。
2.调入页面的时机:预调页策略、请求调页策略。
3.从何处调入页面:请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。对换区通常是采用连续分配方式,而文件区采用离散分配方式,故对换区的磁盘I/O速度比文件区的更快。调入页面有三种情况:系统拥有足够的对换区空间,系统缺少足够的对换区空间、UNIX方式。

2.5 抖动

刚刚被换出的页面马上又要换入主存,刚刚换入的页面马上就要换出主存,这种频繁的页面调度行为称为抖动,或颠簸。

2.6 工作集

是指在某段时间间隔内,进程要访问的页面集合。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3365次
    • 积分:182
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    文章存档
    最新评论