内存管理LRU算法(实验8)

编程实验任务
① 编写一个程序,用rand()生成一个随机的页访问序列,该序列长度为320;采用LRU的页面置换策略,计算当页数为32,帧数为4~32时的页面访问命中率。(命中率=1-页面失效次数/页面访问序列长度。)
注:在计算过程中,需要构造一个页面数组,一个页面访问序列,一个空闲帧队列。

代码如下

#include <stdio.h>
#include<unistd.h>
#include<time.h>
#include<stdlib.h>
struct pl_type
{
   
	int pn,pfn,time;
};

struct pfc_struct
{
   
	int pn,pfn;
	struct pfc_struct * next;
};

int s[320];					
struct pl_type pl[32];	
struct pfc_struct pfc[32];	
struct pfc_struct * freepf_head;

void initial(int pf);
void lru(int pf);

int main()
{
   
	int i,total_pf;

	
  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计一个有N个进程并发的进程调度程序。进程调度算法采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)算法。每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得CPU后都只能运行一个时间片,运行后已占用CPU时间加1。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。 设计一个请求式存储管理方案。并编写模拟程序实现。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列。为简单起见,页面淘汰算法采用FIFO页面淘汰算法,并且在淘汰一时,只将该表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。具体的做法可以是:产生一个需要访问的指令地址流; 指令合适的页面尺寸(例如以 1K或2K为1); 指定内存表的最大长度,并对表进行初始化; 每访问一个地址时,首先要计算该地址所在的号,然后查表,判断该是否在主存——如果该已在主存,则打印表情况;如果该不在主存且表未满,则调入一并打印表情况;如果该不在主存且表已满,则按FIFO页面淘汰算法淘汰一后调入所需的,打印表情况;逐个地址访问,直到所有地址访问完毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值