ImageVerifierCode 换一换
格式:DOC , 页数:29 ,大小:181.02KB ,
资源ID:4476081      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4476081.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(操作系统课程设计范文样本.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

操作系统课程设计范文样本.doc

1、学 号: 2课 程 设 计课 程计算机操作系统题 目模仿设计存储管理分派与回收学 院计算机科学与技术学院专 业计算机科学与技术班 级计算机1404姓 名王承禹指引教师王红霞年12月27日目录1需求分析21.1 任务描述21.2系统功能需求22 功能设计32.1 算法分析32.2 数据构造42.2.1 页表构造42.3模块阐明42.3.1 内存模块42.3.2 进程模块52.3.3 主控模块52.3.4 错误解决模块63 开发平台73.1开发平台74 运营成果与运营状况分析74.1初始界面以及功能选项74.2内存状况74.3进程页表信息85 自我评价与总结96 核心代码94.1内存模块代码104

2、.2进程模块代码134.3主控模块代码146 成绩评估表16模仿设计页式存储管理分派与回收1需求分析1.1 任务描述页式管理页式管理是一种内存空间存储管理技术,分为静态页式管理和动态页式管理。模仿动态页式管理,祈求调页技术,将各进程虚拟空间划提成若干个长度相等页,将内存划提成若干长度相等页框。并且能完毕逻辑地址到物理地址转换。模仿虚拟存储器工作。1.2系统功能需求(1)可以输入给定内存页面数,页面大小,进程个数及每个进程页数。(2)当某进程提出申请空间大小后,显示能否满足申请,以及为该进程分派资源后内存空间使用状况(被进程占用页面,空闲页面)。(3)当某进程撤除时,显示内存回收后内存空间使用状

3、况。(4)实现缺页中断解决。2 功能设计2.1 算法分析 一方面,祈求表给出进程或作业规定页面数。然后,由存储页面表检查与否有足够空闲页面,如果没有,则本次无法分派。如果有则一方面分派设立页表,并祈求表中相应表项后,按一定查找算法搜索出所规定空闲页面,并将相应页好填入页表中。页面分派算法如图2.1所示。剩余页面数=N?祈求n个页面设立页表,将页面始址,页表长度置入祈求表,状态置为已分派无法分派搜索空闲页面表,分派N个页面,并将页面号填入页表返回 图2.1 页面分派算法流程图2.2 数据构造页式管理把内存空间按页大小划提成片或者页面,再按照一定规律建立起页表2.2.1 页表构造struct Pa

4、ge Process* processPtr; /进程指针int* memoryPage; /内存页号bool* valid; /页与否有效int size; /有用页个数int pageSize;2.3模块阐明采用了面向对象设计办法,将模块分为内存模块、进程模块与主控模块。下面简要阐明各个模块接口与数据定义。2.3.1 内存模块class Memory private:double allNum=1;/访问总次数double missNum = 0;/不命中次数Process* processPtr;/进程指针数组int* allocateTime; /页被分派时系统时间bool* vali

5、d; /内存页数组,标志页与否可用int freeSize; /空闲页数量int pageSize = 2;static Memory* instance;Memory();public:static Memory* getInstance();int getPageNum();void setPageNum(int Num);int getPageSize();void setPageSize(int Size);Process* getProcess(int index)const; /获取进程指针int getTime(int index)const; /获取系统时间bool getVa

6、lid(int index)const; /获取页与否可用int getFreeSizse()const return freeSize; /获取内存空闲页数量bool validIndex(int index)const; /index与否有效int getEarliestPage()const; /获取最早进入内存页void allocate(Process* ptr,int index); /分派一种内存页给进程indexvoid allocateAll(Process* pr); /为所有进程页分派内存页void revoke(); /释放一页void revoke(int mem);

7、 /释放一页void revokeProcess(Process* ptr); /释放进程所有页void printInfo()const; /内存页信息;2.3.2 进程模块class Process private:string name; /进程名double size; /进程大小,单位为MBint pageCount; /页数Page* page; /进程页表public:Process(string nm,double sz); /默认构造函数string getName()const return name;/获取进程名double getSize()const return s

8、ize;int getPageCount()const return pageCount;Page* getPage()const return page;void printInfo()const;/输出进程信息;2.3.3 主控模块int main() Memory* memory = Memory:getInstance(); /内存指针Process* process = new Process*MAX_PROCESS_SIZE; /进程指针数组/初始化进程指针数组for (int i = 0;i MAX_PROCESS_SIZE;i+)processi = NULL_PTR;init

9、();int select = -1; /操作编号do cout n= 菜单 = endl;cout 1.创立进程n2.分派进程所有页n3.分派进程一页n4.释放进程 endl;cout 5.释放进程一页n6.内存状态n7.进程状态n8.页表信息n9.退出 endl;cout select;if (cin.fail() badInput(); /输入流错误else if (select 9) cout n操作编号错误! endl;else break; while (true);switch (select) case 1:op1(memory,process);break;case 2:op

10、2(memory,process);break;case 3:op3(memory,process);break;case 4:op4(memory,process);break;case 5:op5(memory,process);break;case 6:op6(memory,process);break;case 7:op7(memory,process);break;case 8:op8(memory,process);break;case 9:break;default:cout n怎么会运营到这里? endl;break; while (select != 9);return 0;

11、2.3.4 错误解决模块class Error private:string info; /异常信息public:Error() :info(Error:exception occured!) Error(string i) :info(i) string getInfo()const return info;;3 开发平台3.1开发平台(1) 操作系统:Windows10(2) 开发语言:C+(3) 开发环境:Visual Studio Community本程序采用C+作为编程语言,用visual studio 进行开发。C+是C语言继承,它既可以进行C语言过程化程序设计,又可以进行以抽象数

12、据类型为特点基于对象程序设计,还可以进行以继承和多态为特点面向对象程序设计。C+擅长面向对象程序设计同步,还可以进行基于过程程序设计。4 运营成果与运营状况分析4.1初始界面以及功能选项4.2内存状况4.3进程页表信息5 自我评价与总结(1) 本次实验中我以为完毕比较好工作有模块设计和编码以及分派算法实现。其中模块分为了内存、进程以及主控模块三某些。可以以便完毕内存分派算法转换,具备较高独立性,同步也可以以便完毕分页到分段转换,采用调度算法也有较高独立性。可见,一种模块独立性高系统,其变更与扩展都会变得十分容易。另一方面,在页面置换算法选取上,我选取了先进先出算法,该算法易于实现,并且不命中率

13、与随机置换算法不命中率都比较低,是比较抱负页面置换算法。(2) 需求分析时对题目理解不完全对的,导致了实现系统功能不符合规定,例如,在内存中应当给每个进程分派一定数量块,而我实现中并没有这样做,而是一种进程最极端状况下可以占用所有内存,并且一种进程可以替代其她进程页面。这一点是由于没有完全理解实验规定和对页式虚拟存储器理解有误导致。同步这样也给系统带来了很大影响。我吸取到教训是,需求分析阶段就要弄清晰问题所在,在问题不明确状况下,不能贸然着手实现系统,否则实现系统讲没故意义。(3) 本次设计中,在编写、调试、执行过程中,我熟悉了页式存储管理各个置换算法与分派办法,以及回收办法。同步,在实现系统

14、过程中,我在需求分析阶段没有弄清晰问题,以至于系统功能有误,这都是较好经验和教训。6核心代码6.1内存模块代码class Memory private:double allNum=1;double missNum = 0;Process* processPtr;/进程指针数组int* allocateTime; /页被分派时系统时间bool* valid; /内存页数组,标志页与否可用int freeSize; /空闲页数量int pageSize = 2;static Memory* instance;Memory();public:static Memory* getInstance();

15、int getPageNum();void setPageNum(int Num);int getPageSize();void setPageSize(int Size);Process* getProcess(int index)const; /获取进程指针int getTime(int index)const; /获取系统时间bool getValid(int index)const; /获取页与否可用int getFreeSizse()const return freeSize; /获取内存空闲页数量bool validIndex(int index)const; /index与否有效

16、int getEarliestPage()const; /获取最早进入内存页void allocate(Process* ptr,int index); /分派一种内存页给进程indexvoid allocateAll(Process* pr); /为所有进程页分派内存页void revoke(); /释放一页void revoke(int mem); /释放一页void revokeProcess(Process* ptr); /释放进程所有页void printInfo()const; /内存页信息;/默认构造函数,私有Memory:Memory() valid = new boolpag

17、eNum;processPtr = new Process*pageNum;allocateTime = new intpageNum;freeSize = pageNum;/初始化:页标志、进程指针、分派时间for (int i = 0;i pageNum;i+) validi = true;processPtri = NULL_PTR;allocateTimei = -1;int Memory:getPageNum()return pageNum;int Memory:getPageSize()return pageSize;void Memory:setPageNum(int Num)p

18、ageNum = Num;void Memory:setPageSize(int Size)pageSize = Size;Memory* Memory:instance = new Memory();/获取单例Memory* Memory:getInstance() return instance;/获取进程指针Process* Memory:getProcess(int index)const if (validIndex(index) return processPtrindex;else throw Error(Error:in Memory:getProcess(),错误下标!);/

19、获取系统时间int Memory:getTime(int index)const if (validIndex(index) return allocateTimeindex;else throw Error(Error:in Memory:getTime(),错误下标!);/获取页与否可用bool Memory:getValid(int index)const if (validIndex(index) return validindex;else throw Error(Error:in Memory.getValid(),错误下标!);/index与否有效bool Memory:vali

20、dIndex(int index)const if (index = pageNum) return false;else return true;/获取最早进入内存页int Memory:getEarliestPage()const int min = MAX_TIME; /最小分派时间int pos = -1; /最早进入页for (int i = 0;i pageNum;i+) if (allocateTimei != -1 & allocateTimei getPage();if (page-getValid(index) throw Error(Error:页已在内存中!);if (

21、freeSize = 0) revoke(); /释放一页/开始分派for (int i = 0;i allocate(index,i);/更新内存信息processPtri = ptr;allocateTimei = time+;validi = false;freeSize-;cout 分派内存页 i 给进程 getName() 第 index 页. endl;break;catch (Error e) cout e.getInfo() endl;6.1进程模块代码class Process private:string name; /进程名double size; /进程大小,单位为MB

22、int pageCount; /页数Page* page; /进程页表public:Process(string nm,double sz); /默认构造函数/获取进程信息string getName()const return name;double getSize()const return size;int getPageCount()const return pageCount;Page* getPage()const return page;/输出进程信息void printInfo()const;/默认构造函数Process:Process(string nm,double sz)

23、 /if (sz = pageNum) throw Error(Error:进程大小参数错误,构造失败!);int nameSize = nm.size();if (nameSize MAX_NAME_SIZE) throw Error(Error:进程名长度错误,容许长度为 110 !);name = nm;size = sz;/进程大小double temp = size - (int)size;if (temp = 0) pageCount = size;else pageCount = size + 1;/新建页表page = new Page(this,pageCount);/输出进

24、程信息void Process:printInfo()const cout 进程名: name endl;cout 大小: size endl;cout 页数: pageCount endl;#endif6.2主控模块代码int main() Memory* memory = Memory:getInstance(); /内存指针Process* process = new Process*MAX_PROCESS_SIZE; /进程指针数组/初始化进程指针数组for (int i = 0;i MAX_PROCESS_SIZE;i+)processi = NULL_PTR;init();int

25、select = -1; /操作编号do cout n= 菜单 = endl;cout 1.创立进程n2.分派进程所有页n3.分派进程一页n4.释放进程 endl;cout 5.释放进程一页n6.内存状态n7.进程状态n8.页表信息n9.退出 endl;cout select;if (cin.fail() badInput(); /输入流错误else if (select 9) cout n操作编号错误! endl;else break; while (true);switch (select) case 1:op1(memory,process);break;case 2:op2(memor

26、y,process);break;case 3:op3(memory,process);break;case 4:op4(memory,process);break;case 5:op5(memory,process);break;case 6:op6(memory,process);break;case 7:op7(memory,process);break;case 8:op8(memory,process);break;case 9:break;default:cout n怎么会运营到这里? endl;break;getchar();getchar(); while (select != 9);return 0;成绩评估表序号评分项目满分实得分1学习态度认真、出勤状况102设计分析合理性103设计方案对的性、可行性、创造性、设计成果对的性304系统测试、运营状况405设计报告规范性10总得分

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服