资源描述:
《基于时间片的轮转调度算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于时间片的轮转调度算法实验目的:深入了解算法的实现过程实验内容:用C++模拟基于时间片的轮转算法实验步骤:1、编写代码2、运行调试3、查看结果4、编写实验报告实验要求在提交的实验报告中,必须包含如下内容:(1)设计思想、系统结构图、数据结构及程序流程图。(2)调试通过的源程序清单(含必要注释)及运行结果。实验结果:实验小结:时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。时间片轮转调度中关键的一点是时间片的长度的选取。本实验默认时间片为1,在试验过程中基本满足了实验要求。通过本次实验,我更加了解了时间片轮转调度算法,通过翻看课
2、本,对其的理解更加的深刻了,在以后的学习中,我会更加努力的学习操作系统的相关课程。当然,实验中也遇到了问题,但都不是理论上的问题,而是编程的问题,根本原因还是编程基础不牢。以后会在编程方面努力。源代码:#include "stdio.h"#include"stdlib.h"struct PCB{ int pid; //进程标识符 int rr; //已运行时间 int time; //进程要求运行时间 char sta; //进程的状态 struct PCB *next; //链接指针};struct PCB pcb1
3、,pcb2,pcb3,pcb4,pcb5,*tail,*head,*rp;init(){ int i,time; pcb1.pid = 1; pcb2.pid = 2; pcb3.pid = 3; pcb4.pid = 4; pcb5.pid = 5; pcb1.rr =pcb2.rr =pcb3.rr =pcb4.rr =pcb5.rr = 0; pcb1.sta = pcb2.sta = pcb3.sta = pcb4.sta = pcb5.sta = 'w'; printf("请输入时间片p1需要运行的时间:"); scanf("%d
4、",&time); pcb1.time = time; printf("请输入时间片p2需要运行的时间:"); scanf("%d",&time); pcb2.time = time; printf("请输入时间片p3需要运行的时间:"); scanf("%d",&time); pcb3.time = time; printf("请输入时间片p4需要运行的时间:"); scanf("%d",&time); pcb4.time = time; printf("请输入时间片p5需要运行的时间:"); scanf("%d",&time); pcb
5、5.time = time; pcb1.next=&pcb2; pcb2.next=&pcb3; pcb3.next=&pcb4; pcb4.next=&pcb5; pcb5.next=&pcb1; head = &pcb1; tail = &pcb5;}void printf1(){ printf("+---------------
6、---------------
7、---------------
8、---------------+"); printf("
9、tpidt
10、trrt
11、ttimet
12、tSTAt
13、"); pri
14、ntf("
15、---------------
16、---------------
17、---------------
18、---------------
19、");}printf2(){ printf("processes p%d running",head->pid); printf1(); printf("
20、t%dt
21、t%dt
22、t%dt
23、t%ct
24、",head->pid,head->rr,head->time,head->sta); printf("
25、---------------
26、---------------
27、------
28、---------
29、---------------
30、"); rp=head; while(rp!=tail) { rp=rp->next; printf("
31、t%dt
32、t%dt
33、t%dt
34、t%ct
35、",rp->pid,rp->rr,rp->time,rp->sta); printf("
36、---------------
37、---------------
38、---------------
39、---------------
40、"); } }operation(){ int flag=1; while (flag<=5
41、) { head->rr ++; if ((head->rr==head->time)
42、
43、(head->time==0)) { tail->sta='w'; he