优先级调度算法实验报告(共篇)

上传人:marr****208 文档编号:117254795 上传时间:2019-12-05 格式:DOC 页数:36 大小:60.50KB
返回 下载 相关 举报
优先级调度算法实验报告(共篇)_第1页
第1页 / 共36页
优先级调度算法实验报告(共篇)_第2页
第2页 / 共36页
优先级调度算法实验报告(共篇)_第3页
第3页 / 共36页
优先级调度算法实验报告(共篇)_第4页
第4页 / 共36页
优先级调度算法实验报告(共篇)_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《优先级调度算法实验报告(共篇)》由会员分享,可在线阅读,更多相关《优先级调度算法实验报告(共篇)(36页珍藏版)》请在金锄头文库上搜索。

1、优先级调度算法实验报告(共10篇) 优先级调度算法实验报告 优 先 级 调 度 算 法 实 验 报 告 院系:*学院 班级:* 姓名:* 学号:* 一、实验题目:优先级调度算法 二、实验目的 进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解优先级算法的具体实施办法。 三、实验内容 1.设计进程控制块PCB的结构,通常应包括如下信息: 进程名、进程优先数(或轮转时间片数)、进程已占用的CPU时间、进程到完成还需要的时间、进程的状态、当前队列指针等。 2.编写优先级调度算法程序 3.按要求输出结果。 四、实验要求 每

2、个进程可有三种状态;执行状态(RUN)、就绪状态(READY,包括等待状态)和完成状态(FINISH),并假定初始状态为就绪状态。 (一)进程控制块结构如下: NAME进程标示符 PRIO/ROUND进程优先数 NEEDTIME进程到完成还需要的时间片数 STATE进程状态 NEXT链指针 注: 1.为了便于处理,程序中进程的的运行时间以时间片为单位进行计算; 2.各进程的优先数或,以及进程运行时间片数的初值,均由用户在程序运行时给定。 (二)进程的就绪态和等待态均为链表结构,共有四个指针如下: RUN当前运行进程指针 READY就需队列头指针 TAIL就需队列尾指针 FINISH完成队列头指

3、针 五、实验结果:六、实验总结: 首先这次实验的难度不小,它必须在熟悉掌握数据结构的链表和队列的前提下才能完成,这次实验中用了三个队列,就绪队列,执行队列和完成队列,就绪队列中的优先级数是有序插入的,当进行进程调度的时候,需要先把就绪队列的队首节点(优先级数最大的节点)移入执行队列中,当执行进程结束后,判断该进程是否已经完成,如果已经完成则移入完成队列,如果没有完成,重新有序插入就绪队列中,这就是这次实验算法的思想。 附录(算法代码):#include stdio.h #include stdlib.h #include string.h typedef struct node char na

4、me20; /*进程的名字*/ int prio; /*进程的优先级*/ /int cputime; /*CPU执行时间*/ int needtime; /*进程执行所需要的时间*/ char state; /*进程的状态,W-就绪态,R-执行态,F-完成态*/ struct node *next;/*链表指针*/ PCB; PCB *ready=NULL,*run=NULL,*finish=NULL; /*定义三个队列,就绪队列,执行队列和完成队列*/ int num; void GetFirst(); /*从就绪队列取得第一个节点*/ void Output(); /*输出队列信息*/ v

5、oid InsertPrio(PCB *in); /*创建优先级队列,规定优先数越小,优先级越高*/ void InsertTime(PCB *in); /*时间片队列*/ void InsertFinish(P(转 载于:wWw.xIeL 写 论文 网:)CB *in); /*时间片队列*/ void PrioCreate(); /*优先级输入函数*/ /void TimeCreate(); /*时间片输入函数*/ void Priority(); /*按照优先级调度*/ /void RoundRun(); /*时间片轮转调度*/ void main() printf(优先数调度算法n);

6、printf(请输入要创建的进程数目:); scanf(%d,&num); PrioCreate(); Priority(); Output(); void GetFirst() /*取得第一个就绪队列节点*/ run = ready; if(ready!=NULL) run -state = 'R' ready = ready -next; run -next = NULL; 篇二:操作系统优先调度算法实验报告 中央财经大学 实 验 报 告 实验项目名称 优先调度算法 所属课程名称 计算机操作系统 实 验 类 型 设计型 实 验 日 期2011-4-25 班 级 学

7、号2009311058 姓 名 李玉芳 成 绩 实验室 6#304 篇三:操作系统 优先级调度算法实验报告 学 号专 业 姓 名实验日期 2010.11.18教师签字 成 绩 实验报 告 【实验名称】设计一个按优先级调度的算法【实验目的】1、理解按优先级调度算法的内涵,并熟练掌握该算法。 2、学会采用动态优先级调度算法模拟处理cpu的进程调度过程。 【实验流程图】【实验内容】 #include stdio.h #include conio.h #define N 20 struct PCB/进程控制块定义 char pnameN;int pro;char state;int runtime;

8、struct PCB *next; ; struct PCB *head_input; struct PCB *head_run; struct PCB *head_run_pre; unsigned long current; /记录系统当前时间的变 量 /-定义建立就绪队列函数- return 1; void runprocess() /运行进程函数 head_run-runtime-=10;head_run-pro+;struct PCB *p1,*p2;printf(Time slice is%d,current);current+=10;printf( %s startsn,head

9、_run-pname);printf(Time slice is %d,current);printf( %s endsn,head_run-pname);if(head_run-runtime=0) /判断进程是否运行结束 int readydata() /建立就绪队列函数 if(head_input-next=NULL) return 0; struct PCB *p1=head_input-next,*pmax,*p2; int maxpro=0xffff; pmax=p1; p2=head_input; /head_run_pre=head_input; while(p1!=NULL)

10、 if(p1-promaxpro) maxpro=p1-pro;head_run_pre=p2;pmax=p1; p2=p1; p1=p1-next; head_run=pmax; head_run_pre-next=head_run-next;/ delete(*head-run);else p1=head_input; p2=head_input-next; p1-next=head_run; head_run-next=p2; int readyprocess() while(1) if(readydata()=0) return 0; else runprocess(); void I

11、nit() head_input=new PCB; head_input-next=NULL;current=0; int numpro; printf(请输入要建立的进程数:nn); scanf(%d,&numpro); printf(please input the information of the processesn); printf(process 进程名*运行时间*权值n); for(int i=0;inumpro;i+) /printf(please input the %d-th process's information:n,i+1); struct PC

12、B *p1=new PCB; scanf(%s,p1-pname); scanf(%d,&p1-runtime); scanf(%d,&p1-pro); p1-state='C' p1-next=NULL; struct PCB *p2=head_input-next; head_input-next=p1; p1-next=p2; int main() printf(*xxxxxxxxxxxxxxx*nn); Init(); printf(优先级调度算法运行结果如下:n); readyprocess(); return 0; 【实验小结】 本实验难度不小,但关

13、键在于对算法的理解,同时注意看好实验题目要求以 节省时间和精力。另外一定的数据结构基础也是必需的。篇四:5种进程调度算法实验报告 院系 班级 学号 姓名 操作系统教程 进程调度算法 计算机与软件学院 08软件工程2班 20081344066 何丽茗 进程调度算法的模拟实现 ? 实验目的 1本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。 2利用程序设计语言编写算法,模拟实现先到先服务算法FCFS、轮转调度算法RR、最短作业优先算法SJF、优先级调度算法PRIOR、最短剩余时间优先算法SRTF。 3进行算法评价,计算平均等待时间和平均周转时间。 ? 实验内容及结果 1先来先服务

14、算法 2轮转调度算法 3. 优先级调度算法4. 最短时间优先算法5. 最短剩余时间优先算法 ? 实验总结篇五:精品作业分享_OS-优先数调度算法源代码(实验报告) 计算机操作系统一、设计理论描述 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。另有一种定义方法是“程序在处理器上的执行”。简单地说,进程包括三种状态:运行状态(Running)、就绪状态(Ready)、等待状态或阻塞状态(Blocked);严格地说,进程除了上面的三个状态,还有挂起就绪(Readya)和挂起等待(Blocked)等状态。进程控制块(PCB)的数据结构来记录进程的属性信息。PCB一般应包含以下信息:进程标识信息(本进程的标志ID、父进程的标志ID、用户标识);处理机状态信息(用户使用的寄存器、控制和状态寄存器、堆栈指针);进程调度和控制信息(进程的状态、进程的调度优先级、程序和数据的地址、进程同步和通信机制、进程已等待时间、已使用的处理器时间、进程在有关队列中的链接指针、分给进程的主存大小和位置、进程使用的其他资源信息、进程得到有关服务的优先级、进程调度所需的其他信息)。 进程调度算法:(1)先进先出调度算法(FIFO):按照进程的到达顺序调

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号