网站大量收购闲置独家精品文档,联系QQ:2885784924

操作系统进程调算法模拟实验报告.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统进程调算法模拟实验报告

进程调度算法模拟 专业:XXXXX 学号:XXXXX 姓名:XXX 实验日期:20XX年XX月XX日 一、实验目的 通过对进程调度算法的模拟加深对进程概念和进程调度的理解。实现对个进程的调度模拟,要求至少采用两种不同的调度算法分别进行模拟调度。进程调度过程: 算法中用到的数据结构 struct fcfs{ //先来先服务算法从这里开始 char name[10]; float arrivetime; float servicetime; float starttime; float finishtime; float zztime; float dqzztime; }; //定义一个结构体,里面包含的有一个进程相关的信息 主要的常量变量 vectorPCBm_ProcessQueue;//进程输入队列 vectorPCBm_WaitQueue;//进程就绪队列 vectorPCBm_FinishQueue;//完成队列 vectorPCB::iterator m_iter;//迭代器 PCB m_runProcess;//运行中的进程 int m_ProcessCount;//进程数 float m_RunTime;//运行时间 int m_tagIsRun;//是否在运行标志。表示正在运行,表示没有 float m_TimeSlice;//时间片大小 int m_TimeSliceCount;//指时间片轮转中一次分到的时间片个数 char m_SchedulerAlgorithm;//调度算法 主要模块 void PCBInput();//输入进程信息 void PCBSort();//对进程控制块按照优先级排序(采用冒泡排序) void ProcessSelect();//若当前就绪队列不为空则根据选择的调度算法开始调度。否则,系统时间加.以等待新的进程到来 void PCBDisplay();//打印当前状况下。就绪队列、完成队列、运行中的进程信息 void ProcessRun();//进程运行一次。运行时间加个时间片。并判断进程是否达到完成条件。若是则ProcessStatus=f.否则为w; void ProcessQueueProcess();//查看当前时间下,有无进程加入。若有则把该进程调入就绪队列 void ProcessDispatch();//进程分派,进程执行完成后决定进程该进入哪个队列(就绪、完成) void TimePast(){ m_RunTime +=m_TimeSlice; ProcessQueueProcess();}//当前系统时间加个时间片,并检查是否有新的进程加入 void SchedulerStatistics();//调度统计,计算周转时间等 void FCFS();//先来先服务 void SJF();//最短进程优先调度 void RR();//简单时间片轮转 void PD();//最高优先数优先 四、实验代码 #include cstdlib #include iostream #includeiomanip using namespace std; struct fcfs{ //先来先服务算法从这里开始 char name[10]; float arrivetime; float servicetime; float starttime; float finishtime; float zztime; float dqzztime; }; //定义一个结构体,里面包含的有一个进程相关的信息 fcfs a[100]; void input(fcfs *p,int N) { int i; coutendl; printf( 请您输入进程的 名字 到达时间 服务时间: (例如: a 0 100)\n\n); for(i=0;i=N-1;i++) { printf( 请您输入进程%d的信息:\t,i+1); scanf(\t\t\t%s%f%f,p[i].name,p[i].arrivetime,p[i].servicetime); } } void Print(fcfs *p,float arrivetime,float servicetime,float st

文档评论(0)

xll805 + 关注
内容提供者

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

1亿VIP精品文档

相关文档