请求页式管理中的置换算法 C语言实现

题目:

有一个用户进程P的地址空间为n(n=60)页,系统已在内存中给该进程分配有m(m<n,m=8)个页面,且该进程的第0、5、6页(p0、p5、p6)已经装入内存,页长为1K。

1.模拟实现进程依次要访问的字地址序列(访问串),在0~1024*n-1(0~61439)中随机发生,访问序列的随机生成规则为:50%的字地址前向顺序增长,25%的字地址均匀分布在前地址(低地址)部分,25%的字地址均匀分布在后地址(高地址)部分,为了减少模拟次数,前向顺序递增产生的字地址如小于1024*n-513(60927)则自动加512。模拟访问串长度为100。以n=60为例,字地址序列(访问串)的随机生成方法如下:

① 在[0,61439]之间随机产生起始字地址,当前访问的字地址记为k;

② 前向顺序递增产生的字地址为k+1+512;

③ 前地址(低地址)在[0,k-1]内随机产生;

④ 后地址(高地址)在[k+1,61439]内随机产生;

⑤ 重复顺序递增、前地址区间随机产生、后地址区间随机产生的过程,概率分别为:50%、25%、25%。

2.采用FIFO(先进先出)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。

3.采用LRU置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。

源代码:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define Blocksize  8     //物理块的大小
#define  Procount  60       //进程的页面数
#define  psize      100     //进程的大小
#define  OneK        1024    //一个页面的大小

typedef struct page
{
    int num;     //记录页面号
    int count;   //记录最近调度此页面的次数
} Page;

Page Block[Blocksize];//内存单元数


int tem

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值