操作系统1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《操作系统》
题目一:页面置换算法FIFO算法
总则:不限制编程语言,可以选用C/C++等(具体工具平台及语言可以自己根据自己的习惯选用,不必完全按照上述技术
要求)
要求:(1)撰写一份word文档,里面包括(算法思路、算法数据结构、算法流程图、主要函数代码、测试案例)章节。
(2)算法思路:FIFO为先进先出算法,简单介绍该算法
的基本思想,100字左右即可。
(3)算法数据结构:列出主要用的数据结构,比如存储页
面号序列page[],存储装入物理块中的页面memery[]等,
只需要列出数据结构名称即可。
(4)算法流程图:绘制页面置换算法的流程图。
(5)主要函数代码:列出先进先出页面置换算法的代码。
不需要列出主函数。
(6)给出一个测试案例即可,比如设置物理块个数为3,
页面序号7 0 1 2 3 0 4 2 3,代码应列出算法
置换的具体细节。
1.这种调度算法总是调出最先进入主存储器的那一页,FIFO算法简单,易实现。一种实现方法是把装入主存储器的那些页的页号按进入的先后顺序排成队列,先进先出,后进后出。
2.
#include "stdio.h"
#define n 9
#define m 3
void main()
{
int ym[n],i,j,q,mem[m]={0},table[m][n];
char flag,f[n];
printf("请输入页面访问序列\n");
for(i=0;i scanf("%d",&ym[i]); printf("\n"); for(i=0;i { q=0; while((ym[i]!=mem[q])&&(q!=m)) q++; if(q==m) flag='*'; //缺页,则置标志flag为'*' else flag=' '; if(flag=='*') { for(j=m-1;j>0;j--) //淘汰最先调入的页面调入当前访问的 mem[j]=mem[j-1]; mem[0]=ym[i]; } for(j=0;j table[j][i]=mem[j]; f[i]=flag; } printf("输出结果为下表(0代表为空,*代表有缺页):\n"); for(i=0;i { for(j=0;j printf("%3d",table[i][j]); printf("\n"); } for(i=0;i printf("%3c",f[i]); printf("\n"); }