CPU Scheduling 代码概要1.docx

CPU Scheduling 代码概要1

实验报告 CPU Scheduling实验要求设计一个按优先权调度算法实现处理机调度和动态内存分配的程序。本次实验采用优先权与时间片方法相结合的调度,即根据优先级选出的进程会运行时间片个时间。粗略设计一、UI设计(1)粗略要点显示正在运行的进程显示就绪队列(可以载入六道进程)显示挂起队列,以及手动挂起按钮(或根据某种算法实现的自动挂起);显示解挂按钮(或根据某种算法实现自动解挂)显示手动添加进程的按钮,点击进入手动添加进程界面;显示随机添加进程按钮显示等待队列(预备队列),新添加的进程会首先进入这个队列显示程序运行以及暂停的按钮二、逻辑分析以及类设计(1)逻辑分析根据进程的状态,所有新生成的进程都应该进入等待队列根据位于等待队列的先后顺序,选取前几位到就绪队列,直到就绪队列已满如果没有空闲的内存空间,怎表示就绪队列已满正在运行的进程结束时,必须马上重新根据调度算法选取下一个进程进行运行要求运行时间过长超过预期的进程应该被挂起,进入挂起队列解挂的进程应该进入等待队列,并位于排头等待中的进程应该提升其优先级,运行过的进程应该适当降低优先级,完成变动应该重新根据调度算法进行排序或选取运行所有活动的进程(包括挂起的)不能同名以便区分(2)粗略类设计常量接口globals interface用于保存程序中表示各种重要的常量表示进程状态NEW 所有新生成进程状态默认值READY 就绪表示可以参与调度算法的筛选WAIT 等待不能参与筛选RUN 正在运行的进程SUSPEND 被挂起的进程TERMINATE 终止的进程要求运行时间已经为0注:等待队列中即为后备进程有关优先级 0 MIN_PRIORITY 最低优先级MAX_PRIORITY 最高优先级最大道数 6 MAX_CHANNALS 时间片 20 TIME_SLICE默认cpu数 1 AVALIABLE_CPUS要求时间的最大期望100 MAX_EXPECT_OF_WANTED_TIME模拟CPU每次运行耗费时间 1000EACH_CAST_TIME饥饿上界 STARVATION_LIMIT目前设置为与最大优先级相同有关内存1.初始位置未进入内存-1 INIT_POSITION ‘2.单PCB要求内存最大值30 SINGLE_MAX_SPACE 3.内存大小 100 SPACEPCB class implements globals,由于PCB掌握进程所有的信息,本次实验将其视作进程本身处理ID int//进程名,为生成的顺序 0 , 1 , 2……pTime int//进程要求运行的时间pPriority int //优先级这是有一定范围限制的pStatus int //进程状态默认为NEW 见 globalsposition int //处于内存中的位置,初始为INIT_POSITIONspace int//占内存的空间+ PCB(unsigned ID,unsigned pTime,int prio,int pStatus,PCB next)//这是构造函数+各种各样的set和get函数不论有没有必要,都写起来 +boolean isAive()//当pTime为0时,返回false+String statusToString() //将逻辑意义上的状态转化为描述 +String toString() 返回PCB的描述信息PCB_Factory class implements globals这是PCB的工厂类,用于生成各式各样的PCBstatic int NUMBER_OF_PCBS 记录PCB的个数+ PCB createPCB(int time, int priority,int space)这个函数会对参数进行各种限制,直到输入值满足要求才会生成返回一个PCB+LinkedListPCB randCreatePCB(int num) 随机生成要求数目的PCB 链表+Object[][] pcbFormat(LinkedListPCB pcbs)将pcb链表转化为二维数组,方便界面列表显示+int getSize()这里返回已经生成的PCB的个数Memory class implements globals Boolean[] memory 内存,大小为SPACE+void use(int p) 使用p

文档评论(0)

1亿VIP精品文档

相关文档