处理器调度实验报告书.doc

处理器调度实验报告书.doc

ID:51750263

大小:201.50 KB

页数:6页

时间:2020-03-15

处理器调度实验报告书.doc_第1页
处理器调度实验报告书.doc_第2页
处理器调度实验报告书.doc_第3页
处理器调度实验报告书.doc_第4页
处理器调度实验报告书.doc_第5页
资源描述:

《处理器调度实验报告书.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验一、处理器调度【实习目的】在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实习模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。【实习内容】选择一个调度算法,实现处理器调度【实习题目】设计一个按时间片轮转法实现处理器调度的程序。[要求]:(1)假定系统有五个进程,每个进程用一个进程控制块PCB来代表。进程控制块的格式为:l进程名——作为进程的标识。l指针——进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控

2、制块首地址。l要求运行时间——假设进程需要运行的单位时间数。l已运行时间——假设进程已经运行的单位时间数,初始值为“0”。l状态——有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“R”表示。当一个进程运行结束后,它的状态为“结束”,用“E”表示。(2)本实习是模拟处理器调度的功能,所以,对被选中的进程并不实际的启动运行,而是执行:已运行时间+1来模拟进程的一次运行,表示进程已经运行过一个单位的时间。(3)在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程的进程名以及运行一次后进程队列的变化。【程序中使用的数据结构及符号说明】1.进程控制块PCB的结构typ

3、edefstructnode{charname[2];//进程名introundtime;//轮转时间片intrunnedtime;//已运行时间intneedtime;//还需运行时间intcount;//计数器charstate;//进程状态structnode*next;//链指针}PCB;2.主要程序块Voidshow();输出就绪队列的基本信息Voidinsert();插入函数PCB*del();删除节点Voidcreate();创建进程PCBVoidroundtime();时间片论算法函数Voidmain();主函数3.特殊符号说明定义以下几个结构体,令其内容初值

4、为空。PCB*ready=NULL;//队头指针(等待调用)PCB*run=NULL;//记录正在运行的结点的指针PCB*end=NULL;//记录已经运行完成的结点的指针PCB*tail=NULL;//队尾指针【流程图】输入进程的基本信息:进程名和时间片初始化进程的其他信息:已经运行时间为0,还需时间为总运行时间,计数器为0,指针为空输出进程基本信息:show()运行时间片论算法:roundtime()Ready==NULL?YESNO修改进程的基本信息。状态改为Y运行时间加1剩余时间减1计数器加1剩余时间为0NO状态改为EYES计数器置0状态改为R节点到最后输出基本信息结

5、束开始【源程序】#include#include#include#includetypedefstructnode{charname[2];//进程名introundtime;//轮转时间片intrunnedtime;//已运行时间intneedtime;//还需运行时间intcount;//计数器charstate;//进程状态structnode*next;//链指针}PCB;PCB*ready=NULL;//队头指针(等待调用)PCB*run=NULL;//记录正在运行的结点的指针PCB*en

6、d=NULL;//记录已经运行完成的结点的指针PCB*tail=NULL;//队尾指针intn;/*输出就绪进程队列*/voidshow(){PCB*p=ready;//p指向头指针if(ready!=NULL)printf("进程名已运行时间还需时间计数器时间片状态");while(p!=NULL){printf("%s%d%d%d%d%c",p->name,p->runnedtime,p->needtime,p->count,p->roundtime,p->state);p=p->next;}}/*插入函数*/voidinsert(PCB*p){if(tail!=

7、NULL)tail->next=p;tail=p;if(ready==NULL)ready=p;}/*出队*/PCB*del(){PCB*p=ready;ready=ready->next;if(ready==NULL)tail=NULL;p->next=NULL;returnp;}/*创建进程PCB*/voidcreate(){PCB*p;inti,time;charname[2];printf("输入进程名和要求运行的时间:");for(i=0;i

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

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

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