操作系统进程调度实验报告(共19页).doc
《操作系统进程调度实验报告(共19页).doc》由会员分享,可在线阅读,更多相关《操作系统进程调度实验报告(共19页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 计算机 学院 计算机科学与技术 专业 班姓名 学号 教师评定_实验题目 进程调度 一、 实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。二、实验内容和要求设计一个有N个进程并发的进程调度程序,要采用FIFO(先进先出)、简单时间片轮转法、多级反馈队列调度算法这三种算法。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已运行时间、进程状态等等。 进程的到达时间及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就
2、绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应分配时间片给就绪队列中排在该进程之后的进程,并将它插入就绪队列队尾。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。三、实验原理及设计方案1、FIFO算法:其基本思想是所有进程按先进来就排
3、在前头,一个一个往后接下去的顺序排成一个队列,总是把全部的处理机分配给先进来的进程,然后等待它运行完,释放CPU资源,把处理机重新分配给下一个先进来的进程。直至所有的进程运行完毕。2、轮转法:所有就绪进程按FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还未完成,就把它送回到就绪队列的队尾,把处理机重新分配给队首的进程。直至所有的进程运行完毕。3、多级反馈队列调度算法。其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一
4、个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此类推。四、流程图1.FIFO和轮转法:开始初始化PCB,输入进程信息各进程按到达到时间先后顺序排成一个队列就绪队列为空?就绪队列首进程投入运行时间片到,运行进程运行时间+1i=1 or i=2选择算法i=1或i=2i=1FIFOs算法时间轮转法i=2Ni=1i=2运行时间是否小于所需要时间Y执行进程进程执行完毕,调度下一进程运行时间是否等于所需时间YN将该进程放到就绪队列的队尾,再等待激发执行下一个进程结束2、多级反馈队列算法:开始运行时间是否到达所需时间Y进程完成,撤销该进程Y将该进程插入到
5、下一个就绪队列的队尾初始化PCB,输入进程信息各进程按到达时间先后顺序排列就绪队列i空N就绪队列首进程投入运行当前就绪队列时间片到,运行时间+时间片N指向下一个就绪队列就绪队列i空?结束Y五、给出程序中源程序名和执行程序名1、FIFO和时间轮转法源程序名:FIFO lunzhuan,执行程序名:FIFO AND LUNZHUAN.CPP2、多级反馈队列源程序名:duoji,执行程序名:d.cpp六、程序清单1.FIFO 和时间轮转#include #include #include #define getpch(type) (type*)malloc(sizeof(type)/*用getpcb
6、(type)给type类型的变量申请一个空间*/struct pcb /*定义进程控制块PCB */char name10; /*进程名*/char state; /*进程状态*/int ntime; /*进程需要运行时间*/int rtime; /*进程已经运行的时间*/struct pcb *link; /*定义了一个指向pcb结构类型的指针link作为自己的成员函数*/*ready=NULL,*p; /*定义了两个指向pcb结构类型的指针ready和p ,ready的初值为空*/typedef struct pcb PCB; /*定义PCB为struct pcb的别名*/void sor
7、t() /*对进程进行轮转调度排列函数 */ PCB *first; if(ready=NULL) /*如果就绪队列为空*/ ready=p; /*将新建进程放入就绪队列中,将ready指向队首进程 */ else /*就绪队列中有进程在等待,将新建进程插入到队尾 */ first=ready; /*first指针指向队首进程 */while(first-link!=NULL) first=first-link; /*当first指针没有指向队尾时,指针后移 */first-link=p;/*将P指向的进程插入队尾*/ void input() /*建立进程控制块函数*/ int i,num;
8、printf(n输入进程个数:);scanf(%d,&num);for(i=0;iname); /*输入进程的名字 */printf(n 进程运行时间:);scanf(%d,&p-ntime); /* 输入进程的运行时间*/printf(n);p-rtime=0; /*进程已运行的时间的初值为0*/p-state=w;p-link=NULL; /*新建进程的指针域为空*/sort(); /*调用sort1函数*/int space() /*计算进程控制块个数的函数 */ int l=0; PCB* pr=ready; /* pr指向队首进程*/while(pr!=NULL) /*pr为空,则说
9、明计数完成*/ l+; pr=pr-link; /* pr向下以一个进程*/ return(l); void disp(PCB * pr)/*建立进程显示函数,用于显示使用FCFS算法的当前进程*/ printf(n name t state t ntime rtime n); printf( |%st,pr-name); /* 显示当前进程的进程名*/printf( |%ct,pr-state); /*显示当前进程的状态 */ printf( |%dt,pr-ntime); /*显示当前进程的运行时间 */printf( |%dt,pr-rtime); /* 显示当前进程的已运行时间 */p
10、rintf(n); void check() /*进程查看函数*/ PCB* pr; printf(n *当前正在运行的进程是:%s,p-name);/*显示当前运行进程 */disp(p); /*标志变量不为1,调用disp1()函数*/pr=ready; /*pr指向等待队列的队首进程*/printf(n *当前就绪队列状态为:n); /*显示就绪队列状态*/while(pr!=NULL) /*就绪队列不为空时*/ /*根据标识符值显示不同算法下的就绪队列状态*/disp(pr); pr=pr-link; void destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/ p
11、rintf(n 进程 %s 已完成.n,p-name); free(p); void running1() /*建立进程就绪函数(进程运行时间到,置就绪状态)*/ (p-rtime)+=2; /* 进程的运行时间加2*/if(p-rtime=p-ntime) /* 如果已运行时间等于进程运行所需的时间,则将进程释放 */p-rtime=p-ntime; printf(nn *该进程执行完成的状态:n); p-state=F; disp(p); destroy();/*调用destroy函数 */ else p-state=w; /* 将状态置为等待 */sort(); /*调用sort1函数
12、*/ void running2()while(p-rtime ntime)/运行时间还没达到所需时间时继续运行 p-state = R;(p-rtime)+;printf(nn *该进程执行完成的状态:n);p-state=F;disp(p);destroy();void main() /*轮转法,FCFS算法的程序入口*/int i,len, h=0; /* len用来存放进程的个数*/char ch;printf(*n); printf( 计科班 n); printf( FIFO算法或时间轮转法 n); printf(*n);input(); /*调用input1函数,输入进程信息*/l
13、en=space(); /*进程个数赋给len*/printf(n选择算法: );scanf(%d,&i);switch(i) case 1: printf(FIFO算法:n);break; case 2: printf(时间片轮转算法:n);break; default:printf(FAULSE);if(i=1|i=2)while(len!=0)&(ready!=NULL) ch=getchar(); h+; printf(n The execute number:%d n,h); p=ready; /*将队首指针赋给p*/ ready=p-link; /*ready指向原p的下一个进程*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 进程 调度 实验 报告 19
限制150内