操作系统课程设计报告_文件系统.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计报告_文件系统

指导老师: 学院: 软件学院学院 班级:09软工2班 姓名: 学号: 设计时间: 2011-12-1 3 专业年级:09软工2班 姓名:宋根林学号:068109051 教师评定: 一.设计目的: 通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能, 具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。 二.设计内容: ①设计进程控制块PCB表结构,分别适用于可强占的优先数调度算法和循环轮转调度算法。 ②建立进程就绪队列。对两种不同算法编制入链子程序。 ③编制两种进程调度算法:1)可强占的优先进程调度;2)循环轮转调度 三.设计过程 实现功能 ①设计进程控制块PCB表结构,分别适用于可强占的优先数调度算法和循环轮转调度算法。 ②建立进程就绪队列。对两种不同算法编制入链子程序。 ③编制两种进程调度算法:1)可强占的优先进程调度;2)循环轮转调度 添加功能 先到先服务进程调度算法,计算每个进程的周转时间和带权周转时间以及模拟cpu运行的利用率。 设计思路 ①本程序用两种算法对多个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。 ②为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 ③在优先数算法中,优先数的值为50与运行时间的差值,即Pro_time-process-needtime。进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 ④对于遇到优先数一致的情况,采用FIFO策略解决。 算法和流程图 可强占优先调度算法实现过程流程图: 循环轮转算法实现过程流程图: FCFS算法实现过程流程图: 四.操作界面截图及分析 进程输入: 可强占的优先进程调度过程: 循环轮转调度过程: 先到先服务调度过程: 五.设计总结: 通过该课程设计,加深了对系统进程调度机制的理解。在抢占方式中实践了“抢占” 必须遵循的原则:优先权原则,短进程优先原则,时间片原则。认识了几种进程调度算法的优缺点以及应用范围。加强C++的编程能力,实现类的封 装。 附录: 程序及注释(用红色黑体标注自己设计的函数) //进程PCB类和模拟cpu的进程类的声明 #includeiostream #include queue #include string #include windows.h #includemalloc.h using namespace std ; //进程的状态 #define UNREADY 0 //未就绪 #define READY 1 //就绪 #define EXECUTE 2 //执行 #define END 3 //完成 //进程的PCB类 struct ProcessPcb { ProcessPcb(){next=NULL;} char pro_name[20];//进程的名字 int time_submit ; //提交时间,从时间的1开始计时 int time_exe ;//进程所需的运行时间 int pro_id ;//进程ID -- 系统生成 int pro_priority ;//进程优先级=50-所需运行时间 int time_start ;//开始执行的时间 int time_end ;//结束的时间 int time_wait ;//等待的时间 int pro_state ; //进程的状态 (就绪,执行,完成) int time_left ;//还需多少时间单位 //,初始化为所需的执行时间 int time_turn ; //周转时间 double time_aver ;//带权周转时间 ProcessPcb *next; }; ///封装CPU调度与分配程序模块。 class CpuModel { public: CpuModel(){pcbnum=0;} void cpurun();//cpu模拟运行函数 bool GetPcb();//进程输入函数 void ShowPcb();//将输入的进程展示出来 void PriModel();//可强占的优先进程调度模式 void RrModel();//循环轮转调度模式 void FcfsModel();//先到先服务调度模式 private: ProcessPcb PcbList[100]; //按提交时间排的未就绪进程队列(), int pcbnum ;

文档评论(0)

yaoyaoba + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档