Fork me on GitHub

CLOCK置换算法

在请求分页存储管理系统中,若为进程分配的物理块为4,开始执行时内存中没有装入任何页面,

若进程依次访问的页面号为:7,1,6,4,6,2,3,0,3,1,0,7,6,0,1,3,6,3,0,7,2,0,5请用CLOCK算法完成作业(低物理地址优先)
红色代表访问位为1,星号表示替换指针的位置
clock

缺页次数: 14次
缺页率: 14/23= 60.9%
置换次数: 10次
依次被置换的页号: 7 1 6 4 2 3 0 1 7 6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
7号页面:进程分配的物理块为4,开始执行的时候没有装入任何页面,当开始访问7号页面的时候,内存中没有该页面号,将页面直接调入内存,低物理地址优先,将页面放入第一个物理块,把访问位置为1.
164号页面:访问1号页面的时候,内存中没有该页面号,且内存中还有空位,将164号页面放入内存,把访问位置为1,替换指针指向最高地址的物理块。
6号页面:访问6号页面的时候,内存中有,将其访问位置为1,替换指针不动。
2号页面:访问2号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查7号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查1号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查6号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查4号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会。检查到队列的最后一个页面时,访问位仍为1,返回队首检查第一个页面,发现访问位为0,则选择此页面替换,访问位置为1,替换指针指向被替换的页面。
3号页面:访问3号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查1号页面,访问位为0,选择此页面替换,访问位置为1,替换指针指向被替换的页面。
0号页面:访问0号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查6号页面,访问位为0,选择此页面替换,访问位置为1,替换指针指向被替换的页面。
3号页面:访问3号页面的时候,内存中有,将其访问位置为1,替换指针不动。
1号页面:访问1号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查4号页面,访问位为0,选择此页面替换,访问位置为1,替换指针指向被替换的页面。
0号页面:访问0号页面的时候,内存中有,将其访问位置为1,替换指针不动。
7号页面:访问7号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查2号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查3号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查9号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查1号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会。检查到队列的最后一个页面时,访问位仍为1,返回队首检查第一个页面,发现访问位为0,则选择此页面替换,访问位置为1,替换指针指向被替换的页面。
6号页面:访问6号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查3号页面,访问位为0,选择此页面替换,访问位置为1,替换指针指向被替换的页面。
0号页面:访问0号页面的时候,内存中有,将其访问位置为1,替换指针不动。
1号页面:访问1号页面的时候,内存中有,将其访问位置为1,替换指针不动。
3号页面:访问3号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查0号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查1号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查7号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查6号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会。检查到队列的最后一个页面时,访问位仍为1,返回队首检查第一个页面,发现访问位为0,则选择此页面替换,访问位置为1,替换指针指向被替换的页面。
6号页面:访问6号页面的时候,内存中有,将其访问位置为1,替换指针不动。
3号页面:访问3号页面的时候,内存中有,将其访问位置为1,替换指针不动。
0号页面:访问0号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查1号页面,访问位为0,选择此页面替换,访问位置为1,替换指针指向被替换的页面。
7号页面:访问7号页面的时候,内存中有,将其访问位置为1,替换指针不动。
2号页面:访问2号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查7号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查6号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查3号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会;检查0号页面,访问位为1,将其置为0,暂不换出,给予该页第二次驻留内存的机会。检查到队列的最后一个页面时,访问位仍为1,返回队首检查第一个页面,发现访问位为0,则选择此页面替换,访问位置为1,替换指针指向被替换的页面。
0号页面:访问0号页面的时候,内存中有,将其访问位置为1,替换指针不动。
5号页面:访问5号页面的时候,内存中没有,且内存中没有空位,需要替换掉一个页面。将内存中所有的页面链成一个循环队列,从替换指针的下一位开始检查。先检查6号页面,访问位为0,选择此页面替换,访问位置为1,替换指针指向被替换的页面。

Your support will encourage me to continue to create!