资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
人津谖大学实验报告学院(系)名称:计算机与通信工程学院姓名卫晓彤学号20091995专业计算机科学与技术班级2009级2班实验项目实验一:处理机调度算法的实现课程名称操作系统课程代码0660076实验时间2011年5月23日第1、2节 2011年5月26日第3、4节 2011年5月30日第1、2节实验地点软件实验室7-215软件实验室7-216软件实验室7-219批改意见成绩教师签字:实验内容:1. 设定系统中有五个进程,每一个进程用一个进程控制块表示。2. 输入每个进程的“优先数”和“要求运行时间”。3. 为了调度方便,将五个进程按给定的优先数从大到小连成就绪队列。用一单元指出队列首进程,用 指针指出队列的连接情况。4. 处理机调度总是选队首进程运行。采用动态优先数算法,进程每运行一次优先数就减“1”,同时将 运行时间减“1”。5. 若某进程运行时间为零,则将其状态置为“结束”,且退出队列。6. 运行所设计程序,显示或打印逐次被选中进程的进程名,以及进程控制块的动态变化过程。实验要求:1. 详细描述实验设计思想、程序结构及各模块设计思路;2. 详细描述程序所用数据结构及算法;3. 明确给出测试用例和实验结果;4. 为增加程序可读性,在程序中进行适当注释说明;5. 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6. 实验报告撰写要求结构清晰、描述准确逻辑性强;7. 实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。【实验过程记录(源程序、测试用例、测试结果及心得体会等)】处理机调度算法的实现处理机调度算法的实现7. 设定系统中有五个进程,每一个进程用一个进程控制块表示。8. 输入每个进程的“优先数”和“要求运行时间”,9. 为了调度方便,将五个进程按给定的优先数从大到小连成就绪队列。用一单元指出队列 首进程,用指针指出队列的连接情况。10. 处理机调度总是选队首进程运行。采用动态优先数算法,进程每运行一次优先数就 减“1”,同时将运行时间减“1”。11. 若要求运行时间为零,则将其状态置为“结束”,且退出队列。12. 运行所设计程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化 过程。#include #include struct PCB (char name10;int priority,time;struct PCB *next;*k;struct LinkQueue (PCB * front;PCB * rear;队列初始化LinkQueue init()(LinkQueue Q;PCB * p;p=(PCB *)malloc(sizeof(PCB);if(p) (Q.front=Q.rear=p;Q.front-next=NULL;return Q;else(printf(-队列初始化失败,程序运行终止! n);exit(0);/插入新进程,使优先数从大到小排列LinkQueue sort(LinkQueue Q,PCB *p) (PCB * tempi;PCB * temp2;if(Q.rear=Q.front) (Q.front-next=p;Q.rear=p; else (temp1=Q.front;temp2=temp1-next;while(temp2-priority=p-priority & temp2-next!=NULL) ( temp1=temp2;temp2=temp1-next;if(temp2-next=NULL & temp2-priority=p-priority) ( temp2-next=p;Q.rear=p; else (p-next=temp1-next;temp1-next=p; return Q;LinkQueue input(LinkQueue Q) /* 建立进程控制块函数*/ int i;for(i=1;iname);printf(n输入进程优先数:”); scanf(%d”,&k-priority);printf(-n输入进程运行时间:”); scanf(%d”,&k-time);printf(n);k-next=NULL;Q=sort(Q,k); /* 调用 sort 函数*/ return Q;LinkQueue running(LinkQueue Q) /*建立进程就绪函数(进程运行时间到,置就绪状态*/if(k-time=0) printf(运行后进程%s已完成 状态为”结束.n,k-name);free(k);else(k-priority)-;(k-time)-;printf(运行后优先数:d 需要运行时间:dn”,k-priority,k-time);Q=sort(Q,k); /*调用 sort 函数*/return Q;void check(LinkQueue Q) /* 建立进程查看函数 */ PCB *pr;pr=(PCB *)malloc(sizeof(PCB);pr=Q.front-next;printf(n *输入的五个过程为:n);while(pr!=NULL) printf(n 进程名:s 状态:就绪优先数:d 需要运行时间:dn”,pr-name,pr-priority,pr-time); pr=pr-next;void main()int h=0;LinkQueue P;P=init();P=input(P);check(P);while(P.front-next)!=NULL) h+;k=P.front-next;P.front-next=k-next;k-next=NULL;printf(n第d次运行,被选中进程是:s ”,h,k-name);P=running(P);printf(nn进程已经完成.n);,、D; ,Pog占m FilesMicrcis(jfl: Uisu司 StudiQMyProjectsaDebugi.e.进程号Nci. 1:输入进程名油输入进程优先数X输入进程运行时间:3进程 Ho 2 :输入进程名=R输入进程优先裁普输入进程运行时间Z进程号No.3:输入进程名:C输入进程优膨*输入进程运行时I手5进程号Nc. 4:输入进程名=D输入进程优先裁输入进程运行时间混进程号Ho.5;输入莅程名输入进程优椅T7 DZprcignprn FiIissMicrosoft Visual ShjdioMyProjuctw.Sp巳buga.e.-In x5输入的五个过程为: 进程名E状态二就绪优花规7需需云行ET间:6进程名况状态=就绪优先数花需要运行时间话进程名*状航就绪优先数;S需要运行时间=2进程名眼状龄就绪优先数X需芟运行间:3迸程名活状态.、赚优先数:3需妾运行时间:2第1次运行-被选中进程是沙远行后仕先数:6需要运行时间:5剿次运行,被选中进程是*运行后优先数项需要运行时间山第3次运行.被选中进程是边运行后优先数;S需要运行时间:4的次运行昴选中进程是二B运行后优先数山需要运行时间弟S次运行-被选中迸程是比运行后优先数:4算6次运行-被洗中进程是沙i云行后优先数:4需妥运行时间:3需要运行时间:3第?次运行,被选中进程是运行后优先数:3需要运行时间没集8次运行-彼选中进程是油运行后优先数:3需爰运行时间冶第9次运行-被选中进程是比运行后优先数:3需要运行时间:2弟其次运行,被选中进程是“运行后优先数由篥也次运行,被选中进程是畦运行后优先数雍需要运行时间需要运行时间H朝吹运行被选口进程是用运行后优先数需装运行时间”算说次运行,被选中进程是皿运行后进程m已完成状态为”结束书,第M次运行-械选中进程是德运行后进程印己完成状态为”培束”.第也次运行-被选中进程是;C运行舌优先数位第姑次运行-被选中进程是F运行后优先数需芟运行时间H第证疚运行-被选中进程是:E运行后优先数H需要运行时回涸第n攻运行械选申进程是m运行后优先数*需典运行时间涸第询次运行-械迭中进程是=c运行后优先熟N需菱运行时间沁第w次运行-械选中进程是:。运行后优先燹以需要运行时间汨第勇次运行-袱选中进程是云运行宿进程 第21次运行-很选中进程是油运行后进程EEEA己完成状态为”结束七己完成状态为”结束七第2哝远行械选申进程是*运行后进程FC己完成状态为嵋束“一第独次运行-很迭中进程是5运行后进程EDI己完成状态为孵吉束“进程已经完成.Ppess any key to continue心得体会
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号