10 内存管理(3)

1.最近最少使用页面置换算法(Least Recently Used,LRU)

        LRU 页面置换算法:在缺页发生时,首先置换掉最长时间未被使用过的页面; 最近最少使用页面置换算法总是选择距离现在最长时间内没有被访问过的页面先调出。 实现这种算法的一种方法是在页表中为每一页增加一个“计时”标志,记录该页面自上次被访问以来所经历的时间,每被访问一次都应从“0”开始重新计时。
        当要装入新页时,检查页表中各页的计时标志,从中选出计时值最大的那一页调出(即最近一段时间里最长时间没有被使用过的页),并且把各页的计时标志全置成“0”,重新计时。 当再一次产生缺页中断时,又可找到最近最久未使用过的页,将其调出。

2.举例说明页面置换算法

        (1)某程序在内存中分配3 个页面,初始为空,所需页面的走向为4,3,2,1,4,3,5,4,3,2,1,5,采用FIFO 算法,请计算整个缺页次数。下面用“时间长-页”表示在内存时间最长的页面,“时间中-页”其次,“时间短-页”表示在内存时间最短的页面。x 表示缺页,√表示不缺页。

页面走向432143543215
时间段-页442143555211
时间中-页43214333522
时间长-页4321444355
xxxxxxxxx
123456789

        ① 开始时,内存中3 个页面初始为空,故产生第1 个缺页中断,需要把页面4 调入。同样产生第2个缺页中断,需要把页面3 调入。产生第3 个缺页中断,需要把页面2 调入。
        ② 此时3 个内存页面全满。在需要页面1 时,发现页面4 时间最长,故产生第4 个缺页中断,把页面4换出,页面1调入。接着又需要页面 4,于是产生第5个缺页中断,把页面 3换出,页面4调入。后面又需要页面3,于是产生第 6个缺页中断,把页面 2换出,页面3调入。接着又需要页面 5,于是产生第7 个缺页中断,把页面1换出,页面5调入。
        ③ 下面需要页面4,正好在内存。接着需要页面3,也正好在内存。后面需要页面2,于是产生第8 个缺页中断,把页面4 换出,页面2 调入。接着需要页面1,于是产生第9 个缺页中断,把页面3 换出,页面1 调入。最后需要页面5,正好在内存。整个操作结束,共产生缺页中断9 次。

        (2)在上述例子中采用LRU 算法,请计算整个缺页次数。同样,用“时间长-页”表示未使用时间最长的页面,“时间中-页”其次,“时间短-页”表示未使用时间最短的页面。

页面走向432143543215
时间段-页432143543215
时间中-页43214354321
时间长-页4321435432
xxxxxxxxxx
12345678910

        共缺页中断10 次。

(3)在上述例子中采用OPT 算法,请计算整个缺页次数。最长时间以后才会用到的页面,用“时间长-页”表示,“时间中-页”其次,“时间短-页”表示最短时间会用到的页面

页面走向432143543215
时间段-页432111555211
时间中-页43333333555
时间长-页4444444444
xxxxxxx
1234567

        共缺页中断7 次。

3.贝莱迪异常

        当分配给进程的物理页面数增加时,缺页次数反而增加。这一现象称为贝莱迪异常(BeladyAnomaly)现象,FIFO 页面置换算法会产生异常现象。

4.缺页中断率

        假定一个程序共有 n 页,系统分配给它的内存块是w 块(m、n 均为正整数,因此,该程序最多有m 页可同时被装入内存。如果程序执行中访问页面的总次数为1 其中有F 次访问的页面尚未装入内存,故产生了F 次缺页中断。现定义:f = F / A,把f 称为“缺页中断率”。显然,缺页中断率与缺页中断的次数有关。因此,影响缺页中断率的因素如下:① 分配给程序的内存块数;② 页面的大小;③ 程序编制方法;④ 页面置换算法

5.虚拟存储管理的性能问题

        引入虚拟存储管理,把内存和外存统一管理,其真正目的,是把那些访问概率非常高的页放入内存,减少内外存交换的次数。在虚存中,页面可能在内存与外存之间频繁地调度,有可能出现抖动或颠簸。颠簸是由于缺页率高而引起的。此外,一般进程在一段时间内集中访问一些页面,称为“活动”页面,这是与程序的局部性有关的。如果分配给一个进程的内存物理页面数太少,使得该进程所需要的“活动”页面不能全部装入内存,则进程在运行过程中可能会频繁地发生缺页中断,从而产生颠簸。 采用工作集模型,可以解决颠簸问题。

6.段式存储管理

        系统将内存空间动态划分为若干个长度不同的区域,每个区域称作一个物理段。每个物理段在内存中有一个起始地址,称作段首址。将物理段中的所有单元从0 开始依次编址,称为段内地址。用户程序的逻辑地址由段号和段内地址两部分组成。内存分配时,系统以段为单位进行内存分配,为每一个逻辑段分配一个连续的内存区(物理段)。逻辑上连续的段在内存中不一定连续存放。段式存储管理是为程序的每一个分段分配一个连续的内存空间。空闲区的分配也可以采用首先适应算法、最佳适应算法、最坏适应算法。在进行动态地址转换时,硬件提供段表起始地址寄存器、段表长度寄存器等支持。

7.页表项内容

        在虚拟页式存储管理系统中,每个页表项中必须包含的是:①有效位:用于指明表项对地址转换是否有效;②读写位:如果等于1,表示页面可以被读、写或执行。如果为0,表示页面只读或可执行;③访问标志:处理器只负责设置该标志,操作系统可通过定期地复位该标志来统计页面的使用情况;④修改位:当处理器对一个页面执行写操作时,就会设置对应页表项的D 标志。处理器并不会修改页目录项中的D 标志。

8.页式分配的优点

        ①由于它不要求作业或进程的程序段和数据在内存中连续存放,从而有效地解决了碎片问题。②动态页式管理提供了内存和外存统一管理的虚存实现方式,使用户可以利用的存储空间大大增加。这既提高了主存的利用率,又有利于组织多道程序执行。

9.请求分页的外存

        在请求分页的外存(磁盘)分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。由于与进程有关的文件都放在文件区,故凡是未运行的页面都应该从文件区调入。

10.内存管理方案

        要能与虚拟存储技术结合使用的内存管理方案必须具有如下特性: 一是使用动态内存地址,内存中的进程要是可以移动的;二是不能要求全部程序加载入内存,进程才能运行的。

11.管理空闲内存方法

        通常用于管理空闲物理内存的方法有:空闲块链表法、位示图法、空闲页面表。

12.程序局部性

        程序局部性原理是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域。空间局部性是指一旦程序访问了某个存储单元,其附近的存储单元也将被访问,程序代码执行具有顺序性。时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问,也就是说程序中存在大量的循环。

13.移动技术

        移动技术可以集中分散的空闲区,提高内存的利用率,便于作业动态的扩充内存。采用移动技术要注意以下问题:①移动技术会增加系统的开销;②移动是有条件的。在采用移动技术时应该尽可能减少需要移动的作业数和信息量。在内存中可以将进程从低地址区域移到高地址区域,可以将进程从高地址区域移到低地址区域。

14.链接

        链接是指把所有编译后得到的目标模块连接装配起来,再与函数库相连接成一个整体的过程。

15.页式存储管理

        页式存储管理将内存空间划分成等长的若干区域,每个区域的大小一般取2 的整数幂,称为页框。系统将程序的逻辑空间按照同样大小也划分成若干页面,称为逻辑页面也称为页,大小与页框相同。虚拟页面在物理空间上不要求连续存放

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值