操作系统实验报告(处理器调度).docx
《操作系统实验报告(处理器调度).docx》由会员分享,可在线阅读,更多相关《操作系统实验报告(处理器调度).docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统实验报告处 理 器 调 度学院:计算机科学与技术学院专业:计算机科学与技术姓名:班级: 1209学号: 20121150109一、实习内容选择一个调度算法,实现处理器调度。二、实习目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数 大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实习模拟在单处 理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。三、实习题目设计一个按优先数调度算法实现处理器调度的程序。提示:(1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格 式为:进程名指针要求运行时间优先数其中,进程
2、名一一作为进程的标识,假设五个进程的进程名分别为P, P2, P3, Ph P50指针一一按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的 首地址,最后一个进程中的指针为“0”。要求运行时间一一假设进程需要运行的单位时间数。优先数一一赋予进程的优先数,调度时总是选取优先数大的进程先执行。状态一一可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为 “就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。(2)在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数” 和“要求运行时间二(3)为了调度方便,把五个进程按给定
3、的优先数从大到小连成队列。用一单元指出队首 进程,用指针指出队列的连接情况。例:队首标志K2Ki(4)处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优 先数就减“1二由于本实习是模拟处理器调度,所以,对被选中的进程并不实际的启动运行, 而是执行:优先数-1要求运行时间-1来模拟进程的一次运行。提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让 它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。(5)进程运行一次后,若要求运行时间则再将它加入队列(按优先数大小插入,且 置队首标志);若要求运行时间=0,则把它的状态修改成“结束”
4、(E),且退出队列。(6)若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进 程都成为“结束状态。(7)在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以 及运行一次后进程队列的变化。(8)为五个进程任意确定一组“优先数”和“要求运行时间”,启动所设计的处理器调 度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。程序中使用的数据结构及符号说明。程序使用JAVA语言编写,数据结构为:Course 类Course类中的变量:public String name;/ 进程的名字。public int time; /进程所需运行时间pu
5、blic int power; /程序优先数(数值越大优先级越高)public char status; /程序状态,R二运行(就绪),E二结束。CX类ArrayList线性表:存放进程信息Input类:输入进程信息getMax类:用来获取优先级最大的进程的信息refreshCourse类:更新进程信息(实现优先级减1和所需运行时间减1操作)Run类:处理器优先级调度的模拟Text类:包含主方法的程序入口五、流程图。六,打印一份源程序并附上注释。源代码public class Course private String name;private char status;private int
6、time;private int power;public String getName() return name;)public void setName(String name) this, name = name;public char getStatus() return status;)public void setStatus(char status) this, status = status;public int getTime () return time;)public void setTime(int time) this, time = time;)public in
7、t getPower() return power;)public void setPower(int power) this, power = power;public class CX private ArrayList courses=new ArrayList();public void input () System. out.printin (请输入实验需要模拟的进程);Scanner scanner=new Scanner(System, in);for (int i=1;i=5;i+)System.。1.printin(请输入进程+i+进程的名(string)优先级(int)运
8、行时间(int);Course course=new Course ();course. setName (scanner, next ();course. setPower(scanner, nextlnt();course. setTime(scanner, nextlnt();course. setStatus ( R);courses, add(course); public int getMax(Listlist) Iteratoriterator=list. iterator();int min=0;int i=0;int k=0;Course course=null; while
9、 (iterator. hasNext() course=iterator, next ();if (course. getPower () min) min=course. getPower ();k=i;i+;return k;)public void refreshCourse(Course c) c. setPower (c. getPower ()-1);c. setTime(c. getTime()-1);)SuppressWarnings (unchecked)public void Run () ArrayListlistl=(ArrayList)courses.clone (
10、);int rn=l; 第几次运行while(listl. size() !=0) int max=getMax(listl);int flag=0;Course cour=listl. get(max);System. out.printin (z,第+rn+次运行现在正在运行的进程:);System. out.printin (进程号优先级剩余运行时间运行状态);System, out.printin (cour. getName () +cougetPower ()+(cour getTime () -1+,z+cour. getStatus ();refreshCourse(cour)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告 处理器 调度
限制150内