页式虚拟存管理的实现

 

页式虚拟存管理的实现

 

 原理是

只需将作业的全部信息作为副本存放在磁盘上,作业被调度投入到运行时,至少把第一页信息装入主存储器,在作业执行过程中访问到不在主存储器的页的时候,再把它们装入到主存。

 

 之后便是页面的调度

 

也买的调度这里有简单的几个算法:先进先出调度算法,最近最久未使用算法,最近最不常使用调度算法。

下面就这些算法分别介绍如下

 

(1)    先进先出算法(FIFO

 

        这种算法总是淘汰最先进入主存储器的那一页。该算法简单。容易实现。是把装入主存储器的那些页的页号按进

入的先后次序排成队,用指针K指示当前调入新页时应淘汰的那页在队列中的位置。最初指向队首位置。每当调入一

个新页后,在指针指示的位置上填上新页页号。然后指针K加1,指向下一个应淘汰的页

 

如图 指出要装入第3页时,使用FIFO算法的实例

页式虚拟存管理的实现_第1张图片

 

这里的k为循环指针,假定页号队列中有N个页号,每次调出一页后,执行

K=K+1mod N

如上例子中的N 就是3.因为有3个页号

 

下面给出一个例题

 

先说明指针的位置是从0开始的

某采用页式存储管理的系统接受了一个共7页的作业,该作业执行时依次访问的页面是:1,2,3,4,2,l,2,3,2,4,5,2,7,6,4。假设系统只给该作业3个主存工作块,且先将开始三页依次装入主存。当分别采用先进先出(FIFO)调度算法时,作业执行过程中会产生多少次缺页中断?并依次写出每次中断后应淘汰的页。

采用先进先出(FIFO)算法:

 

首先是将1,2,3 是依次装入三个页。 然后是调入第四个作业,查看调入的作业先前是否有记录,如果有,则只需要

将指平移到它后面对应的位置,如果没有则指针移动顺序按公式计算(或是指针的按顺序下移)。

对比发现4是前三个作业没有的,那么指针的计算方式为(0+1)mod 3=1,1的位置。指针下移一位(1的位置)。

也可以这样想,

如果调入的也是不在主存中,则指针按顺序移动,如果是在前页中,责指针不徐璈顺序移动,只需要平移。

再看第5个页是2 ,对比发现前面页已经有了,这里就不按顺序移动了,只需要平移就可以了。

再看1的调度,将2的位置替换为1,并且指针是下移的(因为1不在前页出现,所以是替代2的位置)以此类推。

 

→1

4

4

4

→4

3

3

3

→3

2

2

→2

4

2

→2

→2

1

1

→1

→1

4

4

→4

7

7

→7

3

3

3

→3

2

2

2

→2

5

5

→5

6

6

         1            2     3     4           1      2    3     4     5     2

 

采用先进先出(FIFO)算法共产生10次缺页中断。(这里终端缺页的计算是按调度的顺序计算的,不算平移的次数,只

有阶梯的调度才是缺页调度)

到此这个算法就讲解完了。希望对大家有所帮助

你可能感兴趣的:(算法,管理)