操作系统实验(五):c实现几种页面置换算法

该博客主要介绍了如何使用C语言实现三种页面置换算法:先进先出(FIFO)、最佳置换(OPT)和最近最少使用(LRU)。实验目的是理解页面置换算法,通过给定的页面执行序列计算缺页数、缺页率和命中率,比较不同算法的性能。代码中详细展示了每种算法的实现过程,并提供了打印内存状态和搜索页面的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、【实验目的】
加深对页面置换算法的理解。
掌握几种页面置换算法的实现方法。
通过实验比较各种置换算法的优劣。
2、【实验内容】
1.参考用C语言实现的先进先出算法FIFO的代码,实现最佳置换算法OPT和最近最少使用算法LRU。使得随机给出一个页面执行序列,计算不同置换算法的缺页数,缺页率和命中率。
3、【实验步骤】
3.1数据结构

typedef struct item{};
void print(Pro *page1); //打印当前主存中的页面
int Search(int num1, Pro *memory1); //寻找内存块与 num1相同的块号
int main();//主函数

3.3实验代码

#include <stdio.h>
#include <stdlib.h>

typedef struct item
{
   
 int num;   //页号
 int time;  //等待时间,LRU算法会用到这个属性
}Pro;
 
int pageNum;           //系统分配给作业的主存中的页面数
int memoryNum;       //可用内存页面数
void print(Pro *page1);   //打印当前主存中的页面
int  search(int num1, Pro *memory1); //在页面集memory1中查找num1,如果找到,返回其在memory1中的下标,否则返回-1
 
int main(void)
{
   
 int i;
 int curmemory;  //调入内存中的页面个数
 int missNum;      //缺页次数
 float missRate;  //缺页率
 char c;    //得到用户的输入字符,来选择相应的置换算法
 Pro *page;   //作业页面集
 Pro *memory;      //内存页面集
 
 printf("输入系统分配给作业的主存中的页面数:");
 scanf("%d", &pageNum);
 printf("输入内存页面数:");
 scanf("%d", &memoryNum);
 
 page = (Pro*)malloc(sizeof(Pro)*pageNum);
 memory = (Pro*)malloc(sizeof(Pro)*memoryNum);
 
 for (i = 0; i<pageNum; i++)
 {
   
  printf("第 %d 个页面号为:", i);
  scanf("%d", &page[i].num);
  page[i].time = 0;   //等待时间开始默认为0
 }
 
 do {
   
  for (i = 0; i<memoryNum; i++)  //初始化内存中页面
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值