进程调度6.doc_第1页
进程调度6.doc_第2页
进程调度6.doc_第3页
进程调度6.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1内容:设计一个简单的进程调度算法,模拟OS中的进程调度过程;2要求: 进程数不少于5个; 进程调度算法任选; 可以用动态优先数加时间片轮转法实现进程调度,每运行一个时间片优先数减3; 用C语言编程(我用java编写的程序); 程序运行时显示进程调度过程。3步骤: 设计PCB及其数据结构: 进程标识数:ID 进程优先数:PRIORITY(优先数越大,优先级越高) 进程已占用时间片:CPUTIME,每得到一次调度,值加1; 进程还需占用时间片:ALLTIME,每得到一次调度,该值减1,一旦运行完毕,ALLTIME为0) 进程队列指针:NEXT,用来将PCB排成队列 进程状态:STATE(一般为就绪,可以不用)将进程信息存和对应的调度算法放于该类的对象中,该类封装了对象的相关信息,并且可对进程的信息进行修改;public class Pcb private int ID;private int PRIORITY ;private int CPUTIME;private int ALLTIME;private boolean flag=false;public int getID() return ID;public void setID(int iD) ID = iD;public int getPRIORITY() return PRIORITY;public void setPRIORITY(int pRIORITY) PRIORITY = pRIORITY;public int getCPUTIME() return CPUTIME;public void setCPUTIME(int cPUTIME) CPUTIME = cPUTIME;public int getALLTIME() return ALLTIME;public void setALLTIME(int aLLTIME) ALLTIME = aLLTIME;public boolean isFlag() return flag;public void setFlag(boolean flag) this.flag = flag; 设计进程就绪队列及数据结构;进程存放在Pcb类型的数组中,模拟队列的功能,作用相当于就绪队列; 设计进程调度算法,并画出程序流程图;设置测试数据-调用进程调度模拟类(paixu)模拟进程调度-输出模拟结果 设计输入数据和输出格式;数据输入:public class Test public static void main(String args) Pcb p=new Pcb5;int pp=9,38,30,29,0;int all=3,2,6,3,4;int id=0,1,2,3,4;int s=0;for (int i = 0; i p.length; i+) pi=new Pcb();pi.setID(idi);pi.setCPUTIME(0);pi.setPRIORITY(ppi);pi.setALLTIME(alli);s+=pi.getALLTIME();System.out.print(初始状态下,各个进程的ID是+p0.getID()+,+p1.getID()+,+p2.getID()+,+p3.getID()+,+p4.getID();System.out.println(,其对应的的优先级依次是+p0.getPRIORITY()+,+p1.getPRIORITY()+,+p2.getPRIORITY()+,+p3.getPRIORITY()+,+p4.getPRIORITY();String ok=pai.jieguo();System.out.println(ok); 输出格式:当前运行的进程:0 当前就绪队列:2,1,3,4 编程上机,验证结果。4提示:假设调度前,系统中有5个进程,其初始状态如下:ID01234PRIORITY93830290可否考虑用数组或链表去实现CPUTIME00000ALLTIME32634STATEreadyreadyreadyreadyready 以时间片为单位调度运行; 每次调度ALLTIME不为0,且PRIORITY最大的进程运行一个时间片; 上述进程运行后其优先数减3,再修改其CPUTIME和ALLTIME,重复, 直到所有进程的ALLTIME均变为0。5书写实验报告 实验题目; 程序中所用数据结构及说明; 清单程序及描述;进程调度核心类:模拟的是进程管理器的作用;类1(paixu):主要实现进程按照优先级排序,取出优先级最大的进行算法调度import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class Paixu public String jieguo1()List list=new ArrayList();int k=allt;for (int i = 0; i c.length; i+) list.add(ci);if(ci.getALLTIME()=0) System.out.println(由于+ci.getID()+号进程的CPU占用时间为0,因此不再参与调度算法);list.remove(ci);int s=list.size();System.out.println(当前可运行的进程个数为+s+个);Pcb shu=new Pcbs;for (int i = 0; i shu.length; i+) shui=(Pcb)list.get(i);for (int i = 0; i s-1 ; i+)for (int j = i; j s -1 - i; j+)if (shui.getPRIORITY() 1)for (int i = 1; i y.length; i+)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论