进程调度模拟实现课程的设计报告.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文档。上传文档
查看更多
课程设计报告 操作系统原理 专业 计算机科学与技术 学生姓名 班级 M计算机081 学号 指导教师 完成日期 2010年1月10日 题目: 进程调度 的模拟实现 一、设计目的学习完操作系统课程后进行的一次全面的综合训练,加深操作系统基础理论和的理解,加强学生的动手能力。设计内容(1)概述 在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占有处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机制调度的概念。 设计要求: (1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。 (2)可选择进程数量。 (3)本程序包括三种算法,用C++语言实现,执行时在主界面选择算法,进入子页面后输入进程数,执行,显示结果。 (2)设计原理 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 特点:利于长进程,而不利于短进程。 2、短作业优先服务算法 原理:它是从就绪队列中选择一个估计运行时间最短的进程,将处理器分配给该进程,使之占有处理器并执行,直到该进程完成或因发生事件而阻塞,然后退出处理器,再重新调度。 3、最高响应比优先算法 原理:它是从就绪队列中选择一个响应比最高的进程,让其获得处理器执行,直到该进程完成或因等待事件而退出处理器为止。 特点:既照顾了短进程,又考虑了进程到达的先后次序,也不会使长进程长期得不到服务,因此是一个比较全面考虑的算法,但每次进行调度时,都需要对各个进程计算响应比。所以系统开销很大,比较复杂。 (3)详细设计#includeiostream #includestring using namespace std; class Process { public: string ProcessName; // 进程名字 int Time; // 进程需要时间 int leval; // 进程优先级 int LeftTime; // 进程运行一段时间后还需要的时间 }; ////////////////////////////////////////////////////// void Copy ( Process proc1, Process proc2); // 把proc2赋值给proc1 void Sort( Process pr[], int size) ; // 此排序后按优先级从大到小排列 void sort1(Process pr[], int size) ; // 此排序后按需要的cpu时间从小到大排列 void Fcfs( Process pr[], int num, int Timepice); // 先来先服务算法 void TimeTurn( Process process[], int num, int Timepice); // 时间片轮转算法 void Priority( Process process[], int num, int Timepice); // 优先级算法 ////////////////////////////////////////////////////////////////////////// void main() { int a; coutendl; cout 选择调度算法: endl; cout 1: FCFS 2: 时间片轮换 3: 优先级调度 4: 最短作业优先 endl; cina; const int Size =30; Process process[Size] ; int num; int TimePice; cout 输入进程个数:endl; cinnum; cout 输入此进程时间片大小: endl; cinTimePice; for( int i=0; i num; i++) { string name; int CpuTime; int Leval; cout 输入第 i+1 个进程的名字、 cpu时间和优先级 :endl; cinname; cin CpuTimeLeval; process[i].ProcessName =name; process[i].Time =CpuTime; process[i].leval =Leval; coutendl; } for ( int k=0;knum;k++)

文档评论(0)

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

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

1亿VIP精品文档

相关文档