进程调度+C语言+操作系统实验

进程调度+C语言+操作系统实验

ID:39908142

大小:172.51 KB

页数:6页

时间:2019-07-14

进程调度+C语言+操作系统实验_第1页
进程调度+C语言+操作系统实验_第2页
进程调度+C语言+操作系统实验_第3页
进程调度+C语言+操作系统实验_第4页
进程调度+C语言+操作系统实验_第5页
资源描述:

《进程调度+C语言+操作系统实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《操作系统原理》实验报告-5-操作系统原理实验——进程调度实验报告1目的与要求:1)本实验目的是通过对进程调度算法的实现和实验模拟,加深对操作系统进程调度操作功能和进程调度算法的完整理解,培养和提高学生对操作系统开发的兴趣,以及进程调度程序的开发与应用能力;2)理论上必须深刻理解优先权调度算法和时间片轮转调度算法的基本思想和原理;3)独立使用C或VC++编程语言编写优先权调度或时间片轮转算算法调度模拟程序;4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与

2、运行结果)5)于2009年10月15日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。2实验内容或题目1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。3实验步骤与源程序#include#include

3、《操作系统原理》实验报告-5-#includevoidCheck();typedefstructnode{charname[10];intspan;//轮转时间inttake;//占用时间intused;//已用的时间intneed;//还需要的时间charstatus;//状态structnode*next;}PCB;PCB*ready,*finish,*tail,*rear;voidPrint(PCB*p){while(p!=NULL){printf("%3s%5d%5d%5

4、d%5d%5c",p->name,p->used,p->need,p->take,p->span,p->status);p=p->next;}}voidCreat(intN){PCB*p;inttime;charna[10];ready=NULL;/*就绪队列头指针*/finish=NULL;/*完成队列头指针*/tail=NULL;rear=NULL;printf("Enternameandtimeofroundprocess");for(inti=1;i<=N;i++)//创建就绪队列{

5、p=(PCB*)malloc(sizeof(PCB));scanf("%s",na);scanf("%d",&time);strcpy(p->name,na);p->span=2;p->take=0;p->used=0;p->need=time;p->status='J';p->next=NULL;《操作系统原理》实验报告-5-if(ready==NULL){ready=p;tail=p;}else{tail->next=p;tail=p;}}printf("……………………运行结果……………………

6、");}voidPrint1(){//输出ready与finish队列PCB*p;p=ready;printf("name,used,need,take,span,state");Print(p);p=finish;Print(p);}voidRun(){Print1();ready->used+=1;ready->need-=1;ready->take+=1;ready->status='R';if(ready->need!=0)//进程时间need片是否为0{if(ready->take

7、span)/*占用时间是否到轮转时间,没到就继续,到了就排到就绪队列尾*/{Run();}else{tail->next=ready;ready=ready->next;tail=tail->next;tail->status='J';tail->take=0;tail->next=NULL;Check();}}else//进程撤销,放入撤销队列{if(finish==NULL){finish=ready;rear=finish;}else{rear->next=ready;rear

8、=rear->next;}ready=ready->next;rear->next=NULL;rear->status='F';rear->take=0;Check();}//Check();由于上多次文调用Run本身递归,此句也会被多调用,产生在结束时的冗余结果;}《操作系统原理》实验报告-5-voidCheck(){if(ready!=NULL){Run();}elsePrint1();}main(){intN=0;printf("输入进程数目:");scanf(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。