下载此文档

操作系统进程调度实验报告.docx


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
实验一 进程调度实验专业:XXXXX学号:XXXXX姓名:XXX实验日期:20XX年XX月XX日一、实验目的通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。二、实验要求编写程序实现对 5个进程的调度模拟,要求至少采用两种不同的调度算法分别进行模拟调度。三、实验方法内容1. 算法设计思路将每个进程抽象成一个控制块 PCB, PCB用一个结构体描述。构建一个进程调度类。将进程调度的各种算法分装在一个类中。类中存在三个容器,一个保存正在或未进入就绪队列的进程, 一个保存就绪的进程, 另一个保存已完成的进程。还有一个 PCB实例。主要保存正在运行的进程。类中其他方法都是围绕这三个容器可以这个运行中的 PCB展开。主要用到的技术是 STL中的vector以维护和保存进程容器、就绪容器、完成容器。当程序启动时,用户可以选择不同的调度算法。然后用户从控制台输入各个进程的信息,这些信息保存到进程容器中。进程信息输入完毕后,就开始了进程调度,每调度一次判断就绪队列是否为空,若为空则系统时间加一个时间片。判断进程容器中是否有新的进程可以加入就绪队列。2. 算法流程图主程序的框架:开始选择调度算法voidFCFS();//先来先服务voidSJF();//最短进程优先调度voidRR();//简单时间片轮转voidPD();//最高优先数优先输入进程信息将输入容器中以满足进入条件的进程调入就绪队列voidPCBInput(); //输入进程信息voidProcessQueueProcess();//查看当前时间下,有无进程加入。若有则把该进程调入就绪队列按照选择的算法开始选择就绪队列的进程开始执行void ProcessSelect ();//若当前就绪队列不为空则根据选择的调度算法开始调度 ,否则,系统时间加一个时间片 .以等待新的进程到判断就绪容器和输入容器是否为空Y打印各进程信息进行统计计算周转时间等结束!processScheduler .()||!processScheduler .()voidPCBDisplay();//打印当前状况下。就绪队列、完成队列、运行中的进程信息voidSchedulerStatistics ();//调度统计,计算周转时间等进程调度过程:开始判断就绪队列为空是否为空非空if(())让系统等待一个时间片TimePast()根据设定的调度算法从就绪队列中调入一个进程并执行(此时进程从就绪队列中删除,赋值到表示运行中的成员变量中)voidFCFS();//先来先服务voidSJF();//最短进程优先调度voidRR();//简单时间片轮转voidPD();//最高优先数优先进程运行一个时间片 N是否达到该进程停止运行的条件如进程已完成,或者分得的时间片个数已到ProcessRun() Y选入的进程状态是否为“完成” Yvector<PCB>m_WaitQueue;//进程就绪队列进程未完成,将进程优先数减一,并放回到就绪队列中设置进程完成时间,将该进程放入完成队列vector<PCB>m_FinishQueue;//完成队列结束3. 算法中用到的数据结构structfcfs{ //先来先服务算法从这里开始charname[10];floatarrivetime;floatservicetime;floatstarttime;floatfinishtime;floatzztime;floatdqzztime;}; //定义一个结构体,里面包含的有一个进程相关的信息4. 主要的常量变量vector<PCB>m_ProcessQueue;//进程输入队列vector<PCB>m_WaitQueue;//进程就绪队列vector<PCB>m_FinishQueue;//完成队列vector<PCB>::iterator m_iter;//迭代器PCBm_runProcess;//运行中的进程int m_ProcessCount;//进程数float m_RunTime;//运行时间int m_tagIsRun;//是否在运行标志。表示正在运行,表示没有float m_TimeSlice;//时间片大小int m_TimeSliceCount;//指时间片轮转中一次分到的时间片个数char m_SchedulerAlgorithm ;//调度算法5. 主要模块void PCBInput();//输入进程信息void PCBSort();//对进程控制块按照优先级排序 (采用冒泡排序)void ProcessSelect ();//若当前就绪队列不为空则根据选择的调度算法开始调度。

操作系统进程调度实验报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人摩登e代
  • 文件大小142 KB
  • 时间2020-09-21