操作系统实验报告-存储管理的模拟实现
更新时间:2023-11-15 09:09:01 阅读量: 教育文库 文档下载
- 操作系统有哪些推荐度:
- 相关推荐
淮海工学院计算机工程学院
实验报告书
课 程 名: 《操作系统原理》 题 目: 实验三:虚拟存储器管理 学 号: 姓 名:
评语: 成绩: 指导教师: 批阅时间: 年 月 日 一、设计目的:
通过实验,掌握常用页面置换算法(OPT,FIFO,LRU,LFU)的运行机理,运用以前所学的知识,编程实现对各算法的模拟。
二、设计要求:
运用所学的知识,编程实现各算法,实现平台不限。本次实验共计四课时,前两课时要求对各页面置换算法有较为深入的了解,着手进行程序编制,作出大致的程序框架;后两次课中,主要是程序的调试、实验报告的完善与修改等。
三、实验结果分析
1)代码:
1、OPT算法java实现)核心代码段:实验判断是否有缺页
public void Opt() {
int m_absent;// 缺页数 double m_absentf;// 缺页率 double m_changef;// 命中率
int mym[];// 存放物理块中现有的页面号 int myb[];
int as = 0;// 置换页面数 myb = new int[n]; int m1 = 0, a;
boolean x; // 页面是否需要置换 String str2, str1,str3;
String m_list = \置换算法 被替换\ mym = new int[m];
for (int i = 0; i < n; i++) { str1 = \ str2 = \ str3=\ x = true;
for (int k = 0; k < m; k++) { if (myt[i] == mym[k])// 判断物理块中的页面是否与当前页面相等
{
x = false;// 判断物理块中是不是有跟当前须替换的页面 m1++; break; } } if (x) { int c = 0, d; if ((i - m1) < m) { a = i - m1;
} // 当前物理页面未填满时直接装入 else {
for (int k = 0; k < m; k++) { for (int h = i; h < n; h++) {
if (mym[k] == myt[h])// 判断物理块中的页面是否与未来页面相等
{ myb[k] = h; break; if (h == n - 1) myb[k] = n;
} } d = myb[0]; for (int h = 0; h < m; h++) {
if (d < myb[h]) { d = myb[h]; c = h; } }
a = c; // 找出物理块中未来最久将不被使用的页面号 } str3=String.valueOf(mym[a]);
mym[a] = myt[i];// 将其替换 as++; }
for (int j = 0; j < m; j++) {
}
int b;
if ((as - m) <= 0) {
m_changef = 0; } else {
b = mym[j];
str2 = String.valueOf(b); str1 = str1 + \ }
m_list = m_list + \+ str1+\ \
}
m_absent = as;
m_absentf = (double) as / n;
m_changef (double)(1-m_absentf); }
=
2、FIFO算法java实现)核心代码段:实验判断是否有缺页
public void FIFO() {
int m_absent;// 缺页数 double m_absentf;// 缺页率 double m_changef;// 命中率
int mym[];// 存放物理块中现有的页面号 int m1 = 0, r;
int as = 0;// 置换页面数 boolean x; // 页面是否需要置换 String str1, str2,str3;
String m_list = \置换算法 被替换\
mym = new int[m]; for (int i = 0; i < n; i++) {
str1 = \
if (x) {
str3= String.valueOf(mym[0]); mym[0] = myt[i];
for (r = 0; r < m - 1; r++) mym[r] = mym[r + 1]; mym[r] = myt[i];
as++; } int b;
for (int j = 0; j < m; j++) { b = mym[j];
str2 = String.valueOf(b);
str1 = str1 + \
m_list=m_list+'\\n'+str1+\ }
m_absent = as;
m_absentf = (double) as / n; if ((as - m) <= 0) { m_changef = 0; } else {
m_changef = (double) (1-m_absentf); }
str2 = \ str3=\ x = true;
for (int k = 0; k < m; k++) { if (myt[i] == mym[k]) {
x = false;// 判断物理块中是不是有跟当前须替换的页面
break; } }
3、LRU算法(java实现)核心代码段:实验判断是否有缺页
public void LRU() {
int m_absent;// 缺页数 double m_absentf;// 缺页率 double m_changef;// 命中率
int mym[];// 存放物理块中现有的页面号 int myb[];
int as = 0;// 置换页面数 myb = new int[n]; int m1 = 0, a;
boolean x; // 页面是否需要置换 String str2, str1,str3;
String m_list = \置换算法 被替换\
mym = new int[m];
for (int i = 0; i < n; i++) { str1 = \ str2 = \ str3=\ x = true;
for (int k = 0; k < m; k++) {
if (myt[i] == mym[k])// 判断物理
块中最久未使用的页面号
} str3= String.valueOf(mym[a]);
mym[a] = myt[i];// 将其替换
myb[a] = 0; for (int k = 0; k < m; k++) { if (k != a)
myb[k] = myb[k] + 1;// 使物理块中的每个未改变页面的时间增一 }
myb[a] = 0; as++; }
for (int j = 0; j < m; j++) {
int b;
块中的页面是否与当前页面相等
{
myb[k] = myb[0];
for (int j = 0; j < m; j++) {
if (j != k)
myb[j] = myb[j] + 1;// 使物理块中的每个未使用页面的时间增一 }
x = false;// 判断物理块中是不是有跟当前须替换的页面
m1++; break; } } if (x) { 直接装入
m; h++) {
{
myb[h];
c = h; } }
a = c; // 找出物理
d
=
if (d < myb[h])
else {
d = myb[0];
for (int h = 0; h <
int c = 0, d; if ((i - m1) < m) {
a = i - m1;
} // 当前物理页面未填满时
b = mym[j];
str2 = String.valueOf(b); str1 = str1 + \ }
m_list = m_list + \ }
m_absent = as;
m_absentf = (double) as / n;
if ((as - m) <= 0) { m_changef = 0;
} else {
m_changef (double)(1-m_absentf); }
=
2)算法分析:
1、OPT算法:最佳算法其选择的淘汰页面,将使以后用不使用的,或者是在长时间内不需要使用的。最佳页面置换算法通常可以保证获得一个最低的缺页率。不过最佳置换算法是一种理想化的算法,它具有最好的性能,但是实际上难以实现。
2、FIFO算法:先进先出算法是一个最直观的算法,但是它性能可能是最差的故而在实际应用也很少使用。先进先出算法是最早出现的置换算法,此算法总是淘汰最先进入的页面,即选择在内存中驻留时间最长的页面淘汰。不过该算法实现比较的简单。
算法思想分析:首先输入内存可用的物理块数m和用户输入的页面号的长度n,然后输入用户自定义的页面号放入myt[n]中。定义一个数组mym[m]存放当前页面。用m_absentf表示缺页率,m_changef表示 命中率,其中命中率=1-缺页率,缺页率=as/n(其中as表示
缺页数)。程序执行过程如下: FIFO 页1 页2 页3 页4 1 0 0 0 1 2 0 0 2 1 0 5 0 5 2 1 0 4 4 5 2 1 0 6 6 4 5 2 1 5 6 4 5 2 3 3 6 4 5 2 2 2 3 6 4 5 7 7 2 3 6 4 8 8 7 2 3 6 置换0 页 页面置换方法:以类似队列的方式,每次读入一个页面,如果数组中不存在此页面,则将数组内容保持不变。例如:上面读入5号页时,内存中存在5号页面,则保持数组内内容不变;如果数组中不存在此页面,则进行移动,例如:上面第五次读入6号页时,此时内存中不存在6号页面,则进行页面顺序移动,
3、LRU算法:LRU是Least Recently Used 近期最少使用算法。假设 序列为 4 3 4 2 3 1 4 2
物理块有3个 则 首轮 4调入内存 4 次轮 3调入内存 3 4 之后 4调入内存 4 3 之后 2调入内存 2 4 3 之后 3调入内存 3 2 4
之后 1调入内存 1 3 2(因为最少使用的是4,所以丢弃4) 之后 4调入内存 4 1 3(原理同上) 最后 2调入内存 2 4 1 3)代码分析: 主要数据结构
(1)根据用户需要随机输入数产生:数组 (2)理想页面置换(OPT)算法:数组 函数定义:
(1)public pageChange():输入界面函数.
(2)void misInPut():获取用户自定义输入的页面号数组. (3)Void FIFO( ):计算使用FIFO算法时的命中率. (4)public displayView():输出界面函数. 变量定义
(1)int m_absent : 缺页数 (2)double m_absentf : 缺页率 (3)double m_changef : 页面命中率
(4)int mym[] : 存放物理块中现有的页面号 (5)int as = 0 : 置换页面数
(6)boolean x : 页面是否需要置换 程序层次结构 程序包括3个类:
【main】 : 测试主函数
【displayView】 : 输出界面设计类
【pageChang】 : 输入界面设计,misInPut页面访问序列读入方法体,OPT方法体,FIFO
正在阅读:
操作系统实验报告-存储管理的模拟实现11-15
农村污水处理示范工程项目建议书110-09
《国际金融学》习题01-28
喷绘彩印项目可行性研究报告评审方案设计(2013年发改委立项详细标准+甲级案例范文)01-20
小学一年级家长会班主任发言稿06-05
城镇生活垃圾处理处置工程项目建议书06-01
220kv降压变电所电气一次部分初步设计方案_secret07-09
论杜甫诗歌中的“泪” - 图文10-11
编译原理作业7答案09-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 操作系统
- 存储
- 模拟
- 实验
- 实现
- 报告
- 管理
- xx大桥35m预应力混凝土t梁施工组织设计
- 软件工程需求分析
- 初中科学24学时培训心得体会
- 浅谈护士心理与压力
- 关于切实提高我省高速公路沥青砼路面施工质量的实施意见浙交2005〕164号
- 《新编英语教程》第 3 册的课文
- 《生活与哲学》系统优化法主观题
- 《食品添加剂》复习题
- 如何在综合实践活动课中发挥教师指导作用
- cass9.0使用手册 - 图文
- 结晶学基础第八章习题
- 建筑结构复习资料
- 2008-2009第1学期期末试题B卷
- 次贷危机与雷曼兄弟
- 案例联邦快递(FedEx)的营销渠道
- 2004年高考数学试题(重庆文)及答案
- 数据中心建设模式分析
- XX集团公务用车及因公外出管理办法
- 河南省专升本《管理学》真题(09—13)
- 临时道路9#路施工方案