操作系统。
课程设计报告。
计算机科学与技术学院。
目录。一、设计目的 3
二、设计内容 3
1)概述 3
2)设计原理 3
3)详细设计及编码 4
4)运行结果分析 12
5)设计小结 15
6)参考文献 16
题目:页面置换算法的模拟实现一。
本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。增加对linux系统的认识和基本的命令语句。
设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率。用c语言实现,要求设计主界面以灵活选择某算法,且以下算法都要实现。
1、先进先出算法(fifo);
2、最近最久未使用算法(lru)
存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命中率的影响。页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。
1、先进先出算法(fifo);如果内存中含有该页面则不用淘汰页面。而内存中不存在该页面先进先出的算法主要是先进入栈的先后进行叶面淘汰算法,及通过计入页面失效的次数而计算出命中率。
2、最近最久未使用算法(lru);如果内存中含有该页面则不用淘汰页面。而内存中不存在该页面最近最久未被使用时在同一时间内优先淘汰在内存中最近最久未被使用的页面淘汰掉。通过计入页面失效的次数而计算出命中率。
一、实现该功能的程序流程图如下:
页面置换算法的中流程图:
1、 fifo 页面置换算法的流程图:
2、lru页面置换算法。
二、先进先出(fifo)和最近最久未使用算法(lru)的页面置换算法**如下:
#include<>
#include<>
#include<>windows下面运行则用#include<>
#define rrue 1
#define false 0
#define invalid - 1
#define null 0
#define total_instruction 320指令。
#define total_vp 32页面。
typedef struct
int pn;
int pfn;
int counter;
int time;
pl_type;
pl_type pl[32构造页面类型。
typedef struct pfc_struct
int pn;
int pfn;
struct pfc_struct *next;
pfc_type;
pfc_type pfc[32页面控制结构。
pfc_type *freepf_head;
pfc_type *busypf_head;
pfc_type *busypf_tail;
int diseffect
int a[total_instruction];
int page[total_instruction];
int offset[total_instruction];
void initialize初始化函数,给页面赋初始值。
void fifo(int total_pf先进先出页面置换算法
void lru(int total_pf最近最久未被使用页面置换算法。
void main()
int s,i;
srand(10*getpid由于每次运行时进程号不同,顾客用来。
作为初始化随机数队列的“种子”。*
s = int)((float)319*rand()/32767/32767/2)+1随机命令地址。
for(i = 0;i
a[i] =s任选一指令访问点m
a[i+1] =a[i]+1顺序执行一条指令。
a[i+2] =int)((float)a[i]*rand()/32767/32767/2); 执行前地址指令m'
a[i+3] =a[i+2]+1顺序执行一条指令。
s=(int)((float)(318 - a[i+2])*rand()/32767/32767/2 + a[i+2]) 2;//可以在windows下面运行的话则将/32767/32767改成%320
if((a[i+2]>318) |s>319))
printf("a[%d+2],a number which is : d and s ==d",i,a[i+2],s);
* for(i = 0;i
for(i = 0;i
for(i =4;i<=32;i用户内存工作区从4个页面到32个页面。
void initialize(int total_pftotal_pf是用户进程的内存页面数。
int i;
diseffect = 0;
for(i =0;i
for(i = 0;i
printf(" fifo:%6.4f",1-(float)diseffect/320);/输出fifo页面置换算法的命中率。
void lru(int total_pf)
int min,minj,i,j,present_time;
initialize(total_pf);
present_time = 0;
for(i = 0;i {
if(pl[page[i]].pfn ==invalid)
diseffect++;
if(freepf_head ==null)
min = 32767;
for(j = 0;jif(min>pl[j].time &&pl[j].pfn!=invalid)
min = pl[j].time;
minj = j;
freepf_head = pfc[pl[minj].pfn];/腾出一个单元。
操作系统课程设计
课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...
操作系统课程设计
银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...
操作系统课程设计
学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....