操作系统课程设计报告

发布 2022-10-05 13:20:28 阅读 4269

课程设计报告。

题目: 模拟请求页式管理

课程名称: 计算机操作系统。

学院: 信息工程学院。

专业: 计算机科学与技术

班级: 14计本(1

学生姓名。学号: 201403031

指导教师。成绩。

开课时间: 2016-2017 学年一学期

模拟请求页式管理。

1.1设计要求。

请求页式管理是一种常用的虚拟存储管理技术。本设计通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。本实验要求用vc++或其他高级语言编写和调试。

编写程序实现: (1)先进先出页面置换算法(fifo)(2)最近最久未使用页面置换算法(lru)最佳置换页面置换算法(opt)设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。

1.2解决方案。

首先确定实现语言使用c#实现图形化界面,后确定要实现哪些功能,比如算法选择,页面添加,模拟控制。然后确定输出结构以便于程序的测试和验证。将基本框架建立后再进行编程。

编程前进行算法结构分析最后编程实现。

1.3算法实现原理。

1、先进先出置换算法(fifo):

发生缺页中断时按照页面进入内存顺序总是淘汰最先进入内存的页面。

2、最近最久未使用置换算法(lru):

发生缺页中断时总是淘汰存在内存中最长时间未被使用的页面。

3、最佳置换算法(opt):

发生缺页中断时若一个或几个页面将来将不会被调用则按先进先出原则淘汰页面,若将来都有调用则比较调用时刻选择最远时刻页面淘汰。

4、缺页率:缺页次数占页面调用次数的百分比。

2.1数据设计。

常变量:调用页面最大数量(maxn),内存最大页面数(maxm)

待调用页面数组:page_dd[maxn]存放等待调用的页面号。

页面数组专用指针 page_p,用于指向page_dd数组中正需调入内存的页号。

内存块数组:memery[maxm],存放内存当前存放的页号。

缺页计数器:count,记录缺页次数。

内存块状态数组:m1[maxn],m2[maxn],m3[maxn],记录每次页面调用结束后内存各块的状态。

缺页记录数组s[maxn],用于记录页面调用时是否产生缺页中断,初始化为是。

2.2函数设计。

1、页面添加函数:void btnadd_click(object sender, eventargs e)

用于实现通过点击按钮实现数据输入。

2、内存初始化函数:init(int a, int b,int m1,intm2,intm3)

参数有页面数组、内存数组、状态数组,采用先进先出算法对内存先进行装满。

服务于先进先出页面置换函数和最佳置换函数。

3、输出函数:void display(inta,intm1,intm2,intm3,charc)用于输出模拟结果,参数有页面数组,内存数组,状态数组,缺页记录数组。再模拟之后调用。

4、模拟控制函数:void btnmo_click(object sender, eventargs e)用于实现通过单击模拟按钮,根据用户所选算法进行模拟并显示结果。

5、先进先出算法模拟函数:

void fifo(int a, int b,intm1,intm2,intm3,char s)用于实现先进先出算法模拟,参数有页面数组,内存数组、内存状态记录数组,缺页记录数组。在模拟函数中调用。

6、最近最久未使用算法模拟函数:

void lru(int a, int b, int m1, int m2, int m3, char s)用于实现最近最久未使用算法模拟,参数有页面数组,内存数组,内存状态记录数组,缺页记录数组。在模拟函数中被调用。

7、最近最久未使用函数辅助函数:void lur_i(int a,int e)用于对最近最久未使用算法中所用辅助数组(记录页面存在时长)进行调整,参数有辅助数组及需调整的数据下标。在最近最久未使用函数中调用。

8、最佳置换算法模拟函数:

void opt(int a, int b, int m1, int m2, int m3, char s)用于模拟最佳置换算法。参数有页面数组,内存数组,内存状态记录数组,缺页记录数组。在模拟函数中被调用。

9、最佳置换算法辅助函数:void opt_f(int a, int e)用于对最佳置换算法中的辅助数组进行调整。参数有辅助数组,需调整数据下标。在最佳置换算法中被调用。

10、重置函数:void btncz_click(object sender, eventargs e)用于重新选择算法进行新的模拟。

2.3主要算法设计。

1、初始化函数算法:

第一步:将第一个页面调入内存,调整最佳置换算法辅助数组,缺页计数器加一,保存内存数组状态。

第二步:调用下一个页面并判断内存中是否有本页面有转第三步,无转第四步。

第三步:更改缺页数组对应下标值,记录当前内存状态,调整最佳置换算法辅助数组,页面指针指向下一页。

第四步:将页面调入内存,调整最佳置换算法辅助函数,缺页计数器加一,保存内存数组状态。若内存尚不满转第一步。

具体见图1初始化算法流程图。

图1 初始化算法流程图。

2、先进先出页面置换算法:

第一步:检查内存中是否已有需调用页面,有则转第二步,无则转第三步。

第二步:记录当前内存状态,修改缺页数组对应下标值。

第三步:内存中无需要调用的页面,进行出队操作,然后进行入队操作,记录内存块状态,缺页计数器加一。

第四步:若页面数组未被调用结束转第一步。

具体见图2先进先出算法流程图。

图2 先进先出算法流程图。

3、最近最久未使用置换算法:

第一步:将页面调入内存,记录内存状态,缺页计数器加一,调整辅助数组,页面指针加一。

第二步:检查内存中是否已有所需页面,有转第三步,无转第一步。

第三步:修改缺页数组对应下标记录,记录内存状态,调整辅助数组,页面指针加一。

第四步:内存是否已满,无则转第一步,是则转第五步。

第五步:检查内存中是否有所需页面,有则记录当前内存状态,修改缺页数组对应下标值。无则转第六步。

第六步:检查辅助数组找出最大值并记录其下标,置换内存中对应下标的数据,调整辅助数组,缺页计数器加一。

第七步:页面是否调用结束未结束则转第五步。

具体见图3最近最久未使用算法流程图。

图3 最近最久未使用算法。

4、最佳置换算法:

第一步:检查内存中是否已有所需页面,有则记录内存状态,修改缺页数组对应下标数值。无则转第二步。

第二步:判断内存中各页面的未来调用情况,记录是否还有调用,若有则记录调用时刻。

第三步:分析调用情况,内存中页面都在将来不会被调用转第四步,有一个被调用转第五步,有两个被调用转第六步,全被调用转第七步。

第四步:查找辅助数组找到内存中存在时间最长的页面进行置换,修改内存状态,缺页计数器加一,修改辅助数组。

第五步:查找到不会被调用的页面,并根据辅助数组选择最早进入内存的页面将其置换。修改内存状态,缺页计数器加一,修改辅助数组。

第六步:查找辅助数组找到将来不需要在调用的页面将其置换,修改辅助数组,记录内存状态,缺页计数器加一。

第七步:查找辅助数组,找寻最晚被调用的页面,将其置换。记录内存状态,修改辅助数组,缺页计数器加一。

第八步:页面是否调用完成,否则转第一步。

具体见图4最佳置换算法流程图。

图4 最佳置换算法流程图。

2.4界面设计。

采用c# 设计windows窗体应用程序,使用下拉列表框选择算法,通过按钮添加待调用的页面。通过文本控件显示模拟结果。

显示样式:第一行:算法名称;

第二行:调用页面顺序;

第三行至第五行显示内存在每调用一次页面后的状态;

第六行:是否缺页;

最后一行显示缺页率;

3.1函数设计。

1、添加按钮功能实现**。

主要功能:实现单击一次添加一个调用页面,并给出相应的提示,如正在输入的是第几次调度页面,在输入为空时能够弹出对话框提示用户,在输入完成时为避免数组越界应在输入完成时隐藏;输入过程中始终保证时输入焦点。

private void btnadd_click(object sender, eventargs e)

if ( 输入不为空才能继续输入。

page_dd[i_add] =

将输入值赋值给页面数组*/

显示供用户查阅*/

i_add++;

清空*/if (i_add ==maxn)//输入结束时。

= true;//不允许继续输入。

按钮隐藏。

操作系统课程设计报告

西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...

操作系统课程设计报告

课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...

操作系统课程设计报告

实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...