FIFO页面置换算法

Posted A_book

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FIFO页面置换算法相关的知识,希望对你有一定的参考价值。

本文以序列长度20的{ 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};以及页面4;为例;

 1 #include <stdio.h>
 2 
 3 #define InitPysiBlocks 4
 4 #define MaxPages 20
 5 int PysicalBlocks[InitPysiBlocks] = { -1,-1,-1,-1 };
 6 int PageSequence[MaxPages] = { 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
 7 
 8 void FIFO(int py[],int pg[])
 9 {
10     int i,q,j,table[InitPysiBlocks][MaxPages];
11     char flag,f[MaxPages];
12     for (i = 0; i < MaxPages; i++)
13     {
14         q = 0;
15         while(pg[i] != py[q] && q != InitPysiBlocks)
16             q++;
17         if(q == InitPysiBlocks)
18             flag = \'*\';
19         else
20             flag = \' \';
21         if(flag == \'*\')
22         {
23             for (j = InitPysiBlocks - 1; j > 0; j--)
24                 py[j] = py[j - 1];
25             py[0] = pg[i];
26         }
27         for (j = 0; j < InitPysiBlocks; j++)
28             table[j][i] = py[j];
29         f[i] = flag;
30     }
31     printf("输出结果为下表(-1代表为空,*代表有缺页):\\n");
32     for(i = 0; i < InitPysiBlocks; i++)
33     {
34         for(j = 0; j < MaxPages; j++)
35             printf("%3d",table[i][j]);
36         printf("\\n");
37     }
38     for(i = 0; i < MaxPages; i++)
39         printf("%3c",f[i]);
40     printf("\\n");
41 }
42 
43 void main()
44 {
45     FIFO(PysicalBlocks,PageSequence);
46 }

结果:

以上是关于FIFO页面置换算法的主要内容,如果未能解决你的问题,请参考以下文章

页面置换算法(最佳置换算法FIFO置换算法LRU置换算法LFU置换算法)

操作系统 页面置换算法LRU和FIFO

页面置换算法之LRU算法

C#窗体模拟三种页面置换算法(OPT,FIFO,LRU)

操作系统:FIFO算法详解及代码演示

FIFO页面置换算法