操作系统课设——FIFO页面置换算法演示

一  目的

通过课程设计,加深对《操作系统原理》课程所学知识的理解,熟练掌握和巩固操作系统课程理论学习的概念、原理、设计及算法,培养软件系统结构设计和工程素养,强化软件系统工程能力和创新能力,更好地掌握操作系统所需要的硬件支持和软件工作机理、实现机制和设计技巧。

通过本课程设计,更好地综合利用所学的操作系统基本原理和方法,增强系统级程序设计能力,进一步加深对操作系统的设计和实现思路的理解,培养系统软件设计能力和动手能力,学会在内核、系统调用及应用程序几个层次上编写程序,提升计算机问题求解的水平,增强系统分析能力。

学会编制结构清晰、风格良好、数据结构适当的源程序,熟练掌握编译环境并运行,从而具备利用计算机编程分析解决综合性计算机实际问题的能力。

二  需求分析

先进先出页面置换算法(FIFO)是一种操作系统中常用的页面置换算法,其核心思想是将最早调入内存的页面替换出去,从而为新的页面腾出空间。以下是对FIFO算法的需求分析:

  1. 方法一(使用访问次数除以内存内页面数量):

 

(1)、访问序列长度、内存中可存储的页面数量:

算法需要设置预演的访问序列长度和内存中有的页面数量,在这我使用了宏定义来进行预设: 预演的访问序列长度:#define M 12 内存中含有的页面数量 #define N 3,此处我预设了访问序列长度为12、内存中所含页面数量为3。

(2)、中断置换次数、缺页率、置换页面的序号:

需要一个int类常数来统计页面中断置换次数,需要一个float类数来用于计算缺页率,还需要计算当前需置换页面的序号。此处我分别使用了int类型的 k用于统计页面中断置换次数,用float类型的s用于计算缺页率,用k%N计算需要进行置换时置换页面的序号。

(3)、存储输入的序列、模拟内存中的页面:

由于此处采用的是一次性输入所有访问序列故需要一个数组对访问序列进行存储,此处我使用了数组b[N]对输入的数组进行存储。还需要一个数组存储、模拟内存中的页面信息,此处我使用的是int类型的数组a[N]来进行模拟。

  1. 方法二(模拟队列的先进先出):

 

(1)、访问序列长度、内存中可存储的页面数量:

算法需要设置预演的访问序列长度和内存中有的页面数量,在这我使用了宏定义来进行预设: 预演的访问序列长度:#define M 12 内存中含有的页面数量 #define N 3,此处我预设了访问序列长度为12、内存中所含页面数量为3。

(2)、中断置换次数、缺页率:

需要一个int类常数来统计页面中断置换次数,需要一个float类数来用于计算缺页率。此处我分别使用了int类型的 count用于统计页面中断置换次数,用float类型的odds用于计算缺页率。

(3)、模拟队列:

该算法需要一个队列来实现页面数据的先进先出置换模式,此处我使用了一个int类型的数组arry[N]来模拟队列的压入与挤出,并初始化内存中的页面为-1。

三  概要设计

1、方法一(使用访问次数除以内存内页面数量):

(1)、定义并初始化内存数组 a 和访问序列数组 b。

(2)、对于前 N 个页面,将其放入内存中,并输出当前内存中的页面和访问情况。由于此时内存未装满,不需要进行页面替换。

(3)、从第 N+1 个页面开始,遍历整个访问序列。如果该页面已经在内存中,则证明命中,输出命中和当前内存状态即可。

(4)、如果当前页面未在内存中,而内存仍未满,则将该页面加入内存,输出当前内存状态和缺页信息。

(5)、如果当前页面未在内存中,且内存已经满了,则需要进行页面替换。这里采用简单的轮询策略,选择下一次被替换的页面是当前指针所指的页面。然后将被替换的页面从内存中移除,添加新页面到最后,并输出当前内存状态和缺页信息。

(6)、遍历完整个序列之后,根据缺页次数和总页数计算缺页率,并输出中断次数和缺页率。

2、方法

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值