您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 72操作系统课程设计
1燕山大学课程设计说明书课程设计名称:操作系统题目:模拟页式存储班级:2010级应用3班开发小组名称:方小雨课题负责人:方小雨课题组成员:姓名:方小雨学号:100104010097班级:2010级应用3班自评成绩:B课题开发日期:2013.01.07--2013.01.112目录1.概述1.1目的······································································31.2主要完成的任务····························································31.3使用的开发工具····························································31.4解决的束腰问题····························································32使用的基本概念和原理················································33总体设计3.1基本技术路线的确定························································43.2软件的总体结构、模块关系、总体流程的确定··································43.3创立的进程或线程的确定····················································44详细设计4.1利用线程操作的函数························································44.2模块内部的流程和实现算法··················································54.3设计的过程、构件、类、对象、函数及参数的确定和解释························65编码设计5.1开发环境的设置和建立······················································65.2程序设计时要注意的事项····················································75.3关键构建/插件的特点和使用·················································75.4主要程序的代码设计及注释··················································75.5技术难点、经常犯的错误···················································196测试时经常出现的问题及其解决方法·······························197软件使用说明7.1基本功能·································································197.2需要运行的环境···························································197.3操作·····································································198总结·····································································209参考文献·······························································203模拟页式存储1.概述1.1目的通过使用程序设计语言设计一个程序,模拟页式存储管理中的FIFO、LRU、LFU、OPT四个页面置换算法运行的过程,加深对页面置换算法的理解。1.2主要完成的任务通过使用程序设计语言设计一个程序,模拟页式存储管理中FIFO、LRU、LFU、OPT四页面置换算法运行的过程。基本要求如下:(1)采用四个线程同时完成每个算法;(2)能够设定驻留内存页面的个数、内存的存取时间、缺页中断的时间、快表的时间,并提供省缺值;(3)能够随机输入存取的逻辑页面的页号序列;(4)能够随机产生存取的逻辑页面的页号序列;(5)能够设定页号序列中页面个数和范围;(6)提供良好图形界面,同时能够展示四个算法运行的结果。(7)计算每种页面置换算法每个页面的存取时间。(8)能够将每次的实验输入和实验结果存储起来,下次运行时或以后可查询;(9)完成多次不同设置的实验,总结实验数据,看看能得出什么结论。1.3使用的开发工具使用的软件为VC++6.0。1.4解决的主要问题用程序实现FIFO、LRU、LFU、OPT四个算法,模拟页式存储,并提供较好的设计界面。2使用的基本概念和原理该程序主要用到线程,线程的基本概念为:线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程基本不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。同一个进程的线程可以并发执行。原理:线程可以创建和撤消线程,从而实现序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态。在多中央处理器的系统里,不同线程可以同时在不同的中央处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的操作系统都提供编程接口来让进程可以控制自己的线程与各处理器之间的关联度。有时候,线程也称作轻量级进程。就象进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的4程序计数器和自己的局部变量。但是,与分隔的进程相比,进程中的线程之间的隔离程度要小。它们共享内存、文件句柄和其它每个进程应有的状态。3总体设计3.1基本技术路线的确定采用C++面向对象设计。3.2软件的总体结构、模块关系、总体流程的确定软件总共分为5块,第一块为过程演示,第二块为参数设置,第三块为开始、停止功能,第四块为实验结果,第五块为保存、清空、打开功能。第二个模块的参数的设置以后,通过第三个模块的开始功能执行,然后在第一个模块进行过程演示和在第四个模块输出实验结果,第五个模块把实验结果存储起来。总体流程图如下:NY图一3.3创立的线程的确定该程序要创立四个线程:threadFIFO、threadLRU、threadLFU、threadOPT,来同时完成每个算法,同时将执行过程显示出来。4详细设计4.1利用线程操作的函数CreateThread(NULL,0,threadFIFO,(LPVOID)¶m1,0,&TreadeFIFO);(创建FIFO线程)CreateThread(NULL,0,threadLRU,(LPVOID)¶m1,0,&TreadeLRU);(创建LRU线程)CreateThread(NULL,0,threadLFU,(LPVOID)¶m1,0,&TreadeLFU);(创建LFU线程)开始参数设置过程演示实验结果显示保存清空结束5CreateThread(NULL,0,threadOPT,(LPVOID)¶m1,0,&TreadeOPT);(创建OPT线程)DWORDWINAPIthreadFIFO(LPVOIDlparam);(FIFO线程的定义)DWORDWINAPIthreadLRU(LPVOIDlparam);(LRU线程的定义)DWORDWINAPIthreadLFU(LPVOIDlparam);(LFU线程的定义)DWORDWINAPIthreadOPT(LPVOIDlparam);(OPT线程的定义)4.2模块内部的流程和实现算法参数设定模块:该模块主要分为内存数、页面数、页号范围、页面序列、内存存取时间、缺页中断时间、快表时间的设定。其代码形式如下:CEdit*m_edit;m_edit=(CEdit*)GetDlgItem(IDC_EDIT1);m_edit-GetWindowText(m_RAMPAGE);这几个编辑框要建立相应的类向导,然后在随机生成的按钮下添加随机生成数函数。其代码形式如下:m_PAGELIST.Empty();inti;i=atoi(m_PAGE);if(i10||i20){MessageBox(进程页面数必须是10-20!);return;}for(intj=0;ji;j++){inta=atoi(m_PAGE1);intb=atoi(m_PAGE2);intk=rand()%(b-a+1)+a;charbuffer[1];itoa(k,buffer,10);CStringbuffer2;buffer2=buffer;m_PAGELIST+=buffer2;}CEdit*m_edit=(CEdit*)GetDlgItem(IDC_EDIT5);m_edit-SetWindowText(m_PAGELIST);各个参数设定好之后要开始执行,在开始执行按钮下添加四个创建线程函数,将执行过程(驻留内存进程号)及每个页面的存取时间显示到ListBox中,其代码形式如下:6g_list-InsertString(0,inttoCString(RAM)++时间:+str3)将页面置换次数显示到Static中。另外还要在程序中加入四个页面置换算法函数。其代码形式如下CStringstr;str.Format(%s%d%s,中断,num,次);g_static-SetWindowText(str);在保存、清空、打开功能是在相应的按钮下添加函数。4.3设计的过程、构件、类、对象、函数及参数的确定和解释界面的设计:首先需要设定内存数、页面数、页面序列、内存存取时间、缺页中断时间、快表时间,这些都用编辑控件,并建立类向导,执行过程的演示要用ListBox控件,置换次数要用Static控件。在程序开始进行四个线程函数的声明,然后创建一个结构体,然后再声明四个结构体的对象。缺省值的设定:CEdit*edit1=(CEdit*)GetDlgItem(IDC_EDIT1);edit1-SetWindowText(3);CEdit*edit2=(CEdit*)GetDlgItem(IDC_EDIT2);edit2-SetWindowText(10);CEdit*edit3=(CEdit*)GetDlgItem(IDC_EDIT3);edit3-SetWindowText(1);CEdit*edit4=(CEdit*)GetDlgItem(IDC_EDIT4);edit4-SetWindowText(9);CEdit*edit5=(CEdit*)GetDlgItem(IDC_EDIT5);edit5-SetWindowText(2126314268);CEdit*edit6=(CEdit*)GetDlgItem(IDC_EDIT6);edit6-SetWindowText(10);CEdit*edit7=(CEdit*)GetDlgItem(IDC_EDIT7);edit7-SetWindowText(1000);CEdit*edit8=(CEdit*)GetDlgItem(IDC_EDIT8);edit8-SetWindowText(2);5编码设计5.1开发环境的设置和建立开发环境为MFCAppWizard[exe],应用程序类型为基本对话框。75.2程序设计时要注意的事项(1)、控件的名称或ID要与程序中对应;(2)、控件传值有时要用指针,也有的要通过成员函数传值;(3)、数组的大小要足够大,防止访问冲突;5.3关键构件/插件的特点和使用Listbox控件:列表框中的项目是通过
本文标题:72操作系统课程设计
链接地址:https://www.777doc.com/doc-4558473 .html