欢迎来到天天文库
浏览记录
ID:25247709
大小:463.50 KB
页数:9页
时间:2018-11-19
《操作系统原理课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、上海电力学院课程设计报告课程名称:操作系统原理姓名: 刘昊 学号:20061945班级:200605W1同组姓名:陈新实验时间:第19周成绩: 一、课程设计内容进程调度算法模拟。主要负责短进程优先调度算法、高优先权优先调度算法和多级反馈队列调度算法的模拟实现。二、设计要求。编写程序模拟进程调度程序,对五个进程进行调度。要求至少支持两种及两种以上调度算法。(每个小组完成算法数量为小组人数+1)(1)调度算法包括:FIFO,短进程优先,优先级,时间片轮转,多级反馈队列等。(2)五个进程的
2、进入时间、运行时间、优先数、时间片等可以事先人为地指定,也可由随机数产生。每运行一次调度程序都要求打印一次运行进程、就绪队列、以及各进程的状态信息。最后给出每一种调度算法的平均周转时间和带权周转时间。三、调度算法及相关数据结构。使用的数据结构有以下几个:1、PCB:进程控制块Stringname:进程名charstate:进程状态,分别有’w’(等待,未被插入就绪队列),’r’(就绪,已进入就绪队列),’f’(结束,进程运行完毕)intntime:服务时间intrtime:到达时间intf:优先权(静态)2、QueueOfAll:
3、储存所有进程PCBPCB_Node[]:PCB结点的数组,用以保存所有进程信息intlength:总的进程数3、QueueOfCurrent:就绪进程队列PCBPCB_Node[]:PCB结点的数组,用以保存所有进入就绪队列的进程信息intfront:指向当前队头的前一位intrear:指向当前队尾intlength:总的进程数intcurrent:当前在执行的进程指针intcut:该队列的时间片长度FIFO,短进程优先,优先级调度算法示意流程图:结束开始比较各进程的到达时间和系统当前时间,将未进入就绪队列的进程插入到就绪队列中。
4、把就绪队列的队首进程进行调度并运行该进程进程运行完毕,将其出队,并更新系统时间。队列是否为空系统时间加1全部进程是否已调度完毕。NYYN按FCFS、SPF、FPF算法分别对就绪队列中的进程进行排序时间片轮转调度算法示意流程图:Serveredtime[current]cut开始初始化个进程的PCB,输入进程信息初始化就绪队列CurrentPCB的信息,front=rear=-1,current=0,length=0;系统运行时间systemtime=0;数组serveredtim
5、e[]记录程序所需时间;SreachPCB();将0时刻到达的程序插入就绪队列;时间片长=cut;current<=rear?NY就绪队列为空?结束YN执行current所指的程序currnet=front+1;Systemtime=Systemtime+Serveredtime[current]将此程序退出绪列Front++Systemtime=Systemtime+cutSreachPCB();将rtime6、rrent<=rear?Serveredtime[current]cutSreachPCB();将rtime7、eue队列,插到下一队列的末尾Ncurrent++(指向就绪队列下一个程序)Numofqueue++current=front+1开始初始化个进程的PCB,输入进程信息初始化就绪队列组CurrentPCBQueue[]的信息,front=rear=-1,current=0,length=0;系统运行时间systemtime=0;数组serveredtime[]记录程序所需时间;SreachPCB();numofqueue=0;将0时刻到达的程序插入第一级就绪队列;SreachPCB();将0时刻到达的程序插入就绪队列。时间片长=c8、ut。结束所有队列为空?YN一、实验结果1、短进程优先调度算法各进程的相关初始值如下:进程名ABCDE到达时间01234服务时间43524实验结果如下:结果分析:由于采用的是非抢占式,因此第一个进入就绪队列的A肯定会先执行完。这时系统时间为4,B、
6、rrent<=rear?Serveredtime[current]cutSreachPCB();将rtime7、eue队列,插到下一队列的末尾Ncurrent++(指向就绪队列下一个程序)Numofqueue++current=front+1开始初始化个进程的PCB,输入进程信息初始化就绪队列组CurrentPCBQueue[]的信息,front=rear=-1,current=0,length=0;系统运行时间systemtime=0;数组serveredtime[]记录程序所需时间;SreachPCB();numofqueue=0;将0时刻到达的程序插入第一级就绪队列;SreachPCB();将0时刻到达的程序插入就绪队列。时间片长=c8、ut。结束所有队列为空?YN一、实验结果1、短进程优先调度算法各进程的相关初始值如下:进程名ABCDE到达时间01234服务时间43524实验结果如下:结果分析:由于采用的是非抢占式,因此第一个进入就绪队列的A肯定会先执行完。这时系统时间为4,B、
7、eue队列,插到下一队列的末尾Ncurrent++(指向就绪队列下一个程序)Numofqueue++current=front+1开始初始化个进程的PCB,输入进程信息初始化就绪队列组CurrentPCBQueue[]的信息,front=rear=-1,current=0,length=0;系统运行时间systemtime=0;数组serveredtime[]记录程序所需时间;SreachPCB();numofqueue=0;将0时刻到达的程序插入第一级就绪队列;SreachPCB();将0时刻到达的程序插入就绪队列。时间片长=c
8、ut。结束所有队列为空?YN一、实验结果1、短进程优先调度算法各进程的相关初始值如下:进程名ABCDE到达时间01234服务时间43524实验结果如下:结果分析:由于采用的是非抢占式,因此第一个进入就绪队列的A肯定会先执行完。这时系统时间为4,B、
此文档下载收益归作者所有