通过请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
页号 | 物理块号 | 状态位 | 访问位 | 修改位 | 外存地址 |
如果访问的页不在内存,就产生一个缺页中断。
和普通的页式存储相同:
如果分配进程的物理块少,那么内存中进程数越多,进程缺页的可能性就越高;
但是进程分配的物理块超过一定数目后,分配更多物理块对进程缺页率没有影响。
分析:
准备或运行时,
固定分配:
给进程的 每个物理块 分配数量固定,
运行时数量固定,按照分配数量。
可变分配:
分配时数量固定,
运行时数量不固定。
缺页时,
局部置换:
缺页进程独立,
置换分配给自身的物理块。
全局置换:
从操作系统中抠一块给缺页进程;
或者从其他进程抠一块下来,经过外存,又调回给缺页进程。
为什么没有固定分配–全局置换?
因为,固定分配要求自身缺页时,替换自身;不能要求其他进程的置换,与全局置换相悖。
有关页面置换的说明:
算法特点——发生缺页,有两个考虑的顺序:
注意:不仅置换,调入页面也算缺页!
7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 | |
1 | 7 | 7 | 7 | 2 | 2 | 2 | 2 | 2 | 2 | 7 | ||||||||||
2 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | |||||||||||
3 | 1 | 1 | 3 | 3 | 4 | 3 | 1 | 1 | ||||||||||||
缺页 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
缺页率:50%
置换最先进入内存的页:
7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 | |
1 | 7 | 7 | 7 | 2 | 2 | 2 | 4 | 4 | 4 | 0 | 0 | 0 | 7 | 7 | 7 | |||||
2 | 0 | 0 | 0 | 3 | 3 | 3 | 2 | 2 | 2 | 1 | 1 | 1 | 0 | 0 | ||||||
3 | 1 | 1 | 1 | 0 | 0 | 0 | 3 | 3 | 3 | 2 | 2 | 2 | 1 | |||||||
缺页 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
缺页率:75%
从缺页的那里开始逆向检查,找到最久之前使用的页面,将其置换掉:
7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 | |
1 | 7 | 7 | 7 | 2 | 2 | 4 | 4 | 4 | 0 | 1 | 1 | 1 | ||||||||
2 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 3 | 3 | 0 | 0 | |||||||||
3 | 1 | 1 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 7 | ||||||||||
缺页 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
缺页率:60%
需要给每个物理块增加一个附加位,称为使用位u;
当某一页装入内存时,该物理块的使用位设为1,当该物理块被使用时,它的使用位也设为1;
对于页面置换算法,把用于替换的物理块集合看作是一个循环缓冲区,并且有一个指针与之关联;
当需要进行页面置换时,两种考虑:
左图为页面置换前状态,右图为页面置换后状态: