操作系统教程OS 孙忠秀

12、存储模型2(操作系统笔记)

2017-01-06  本文已影响423人  yjaal

一、虚拟存储技术

1.1 存储器的层次结构

1

1.2 虚拟内存与存储体系

2

1.3地址保护

1.4 虚拟页式

我们将虚拟存储技术和页式存储管理方案结合起来得到了虚拟页式存储管理系统。具体有两种方式,一是请求调页,二是预先调页。以cpu时间和磁盘换取昂贵内存空间,这是操作系统中的资源转换技术。

二、页表及页表项的设计

3

2.1 页表项设计

通常,页表项是硬件设计的。

2.2 页表

2.3 二级页表结构及地址映射

4
说明:这里还是32位的虚拟地址空间。每个进程有一个页目录,根据页目录得到页表地址,然后从页表中的页表项的页框号找到真正的物理内存地址。32位的虚拟地址分为页目录偏移、页表偏移和页内偏移。页目录地址保存在一个寄存器中,根据此地址找到页目录起始地址,然后根据月页目录偏移找到对应的页表地址,根据页表偏移找到页表项,从页表项中取得页框号,然后结合页内偏移找到对应的物理内存。对于二级页表,在32位系统中可以表示4G的虚拟地址空间。如果需要超过4G的虚拟地址空间,则二级页表满足不了。
5

2.4 I386页目录和页表项

5
说明:总共有32位地址。

2.5 反转(倒排)页表

2.6 地址转换过程及TLB

7
说明:上图是虚拟地址通过页表和物理地址映射的关系。这个过程是有内存管理单元完成的。
8
9

2.6.1 快表(TLB)的引入

2.6.2 快表

2.6.3 加入TLB后地址转换过程

10
说明:首先根据虚拟地址去查TLB,如果能找到页框号,则直接和偏移结合找到对应的物理内存;如果TLB中没有页框号,则需要去查页表,之后在找到对应的物理内存;在页表中如果对应的页表项无效,则会出现page fault的异常,然后由系统处理之后再进行同样的操作。

2.7 页错误(page fault)

2.8 缺页异常处理

三、虚拟页式存储中软件相关策略

3.1 驻留集

3.2 置换问题

3.3 页框锁定

为什么要锁定页面?

3.4 清除策略

3.5 页面置换算法

又称页面淘汰算法。最佳算法-->先进先出-->第二次机会-->时钟算法-->最近未使用-->最近最少使用-->最不经常使用-->老化算法-->工作集-->工作集时钟

3.5.1 最佳置换算法(OPT)

3.5.2 先进先出算法(FIFO)

3.5.3 第二次机会算法(SCR)

在先进先出算法的基础上进行该机而来的,此算法按照先进先出算法选择某一页面,检查其访问位R,如果为0,则置换该页;如果为1,则给第二次机会,并将访问位置零,并将其从链头取下放到链尾。

13

3.5.4 时钟算法(CLOCK)

在第二次机会算法中当给某个页面第二次机会的时候,将其访问位置零,然后将其挂到链尾,这都是需要开销的,于是我们改进为时钟算法。

14
说明:其实就是将之前的链表改为了环形链表,当给某个页面第二次机会的时候不需要将其取下然后挂到链尾,只需要移动一下指针即可,这样可以降低开销。

3.5.5 最近未使用算法(NRU)

3.5.6 最近最少使用算法(LRU)

选择最后一次访问时间距离当前时间最长的一页并置换,即置换未使用时间最长的一页。

3.5.7 最不经常使用算法(NFU)

Not frequently Used,选择访问次数最少的页面置换

3.5.8 老化算法(AGING)

3.5.9 页面置换算法的应用

例子:

要求:
计算应用FIFO、LRU、OPT算法时的缺页次数

应用FIFO、LRU页面置换算法

17
可以看到FIFO发生六次缺页异常,而LRU发生四次缺页异常。

应用OPT页面置换算法

18
发生三次缺页异常。

3.5.10 BELADY现象

例子:系统给某进程分配m个页框,初始为空页面访问顺序为
1 2 3 4 1 2 5 1 2 3 4 5,采用FIFO算法,计算当m=3m=4时的缺页中断次数。
结论:m=3时,缺页中断九次;m=4时,缺页中断十次。注意:FIFO页面置换算法会产生异常现象(Belady现象),即:当分配给进程的物理页面数增加时,缺页次数反而增加。

3.6 页面置换算法2:工作集算法

3.6.1 影响缺页次数的因素

缺页越多,系统的性能越差,这称为颠簸(抖动):虚存中,页面在内存与磁盘之间频繁调度,使得调度页面所需的时间比进程实际运行的时间还多,这样导致系统效率急剧下降,这种现象称为颠簸或抖动。

3.6.2 页面尺寸问题

3.6.3 程序编制方法对缺页次数的影响

例子:
分配了一个页框,页面大小为128个整数,矩阵A(128 x 128)按行存放。

19
可以看到左边是按列赋值,右边是按行赋值。按列编制就是首先读入第一页(一行,因为矩阵是按行存放的),然后给第0个位置赋值,每次读入一行,直到将第0列赋值完,读完之后再给第1列赋值,这样会产生128*128次缺页异常;而按行赋值,第一次读入一页,给第0行的所有元素赋值,这样会产生128次缺页异常。于是可以看到程序的编制方法对缺页次数是有很大影响的。

3.6.4 分配给进程的页框数与缺页率的关系

20
说明:可以看到页框数越多那么缺页率越低,但是我们不可能给出所有的页框,于是需要找到一个平衡点W,超过这个点之后页框数的增加对缺页率的降低有限,这也是工作集算法的出发点。

3.7 工作集模型

如果能为进程提供与活跃页面数相等的物理页面数,则可减少缺页中断次数,这是由Denning提出的。

3.8 工作集算法

四、其他与存储管理相关技术

4.1 内存映射文件

4.2 支持写时复制技术

24
说明:如图,两个进程共享同一块物理内存,每个页面都被标志成了写时复制。注意:共享的物理内存中每个页面都是只读的。如果每个进程想改变某个页面时,就会与只读标记冲突,而系统在检测出页面是写时复制的,则会在内存中复制一个页面,然后进行写操作。新复制的页面对执行写操作的进程是私有的,对其他共享写时复制页面的进程是不可见的。
上一篇 下一篇

猜你喜欢

热点阅读