《操作系统课程设计》报告范本(共10页)

上传人:1537****568 文档编号:316627833 上传时间:2022-06-23 格式:DOC 页数:10 大小:169KB
返回 下载 相关 举报
《操作系统课程设计》报告范本(共10页)_第1页
第1页 / 共10页
《操作系统课程设计》报告范本(共10页)_第2页
第2页 / 共10页
《操作系统课程设计》报告范本(共10页)_第3页
第3页 / 共10页
《操作系统课程设计》报告范本(共10页)_第4页
第4页 / 共10页
《操作系统课程设计》报告范本(共10页)_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《《操作系统课程设计》报告范本(共10页)》由会员分享,可在线阅读,更多相关《《操作系统课程设计》报告范本(共10页)(10页珍藏版)》请在金锄头文库上搜索。

1、操作系统课程设计报告学 号: 姓 名: 班 级: 指导教师: 报告日期: 一、课设目的通过对操作系统课程的学习,熟悉进程的概念、进程的管理与存储、进程的调度,通过实践深入理解进程的调度算法。二、课设任务要求编写一个程序,可以创建若干个虚拟进程,并对若干个虚拟进程进行调度,调度策略为时间片轮转法,主要任务包括: 进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件,另外调度运行结果输出到一个运行日志文件; 设计PCB适用于时间片轮转法; 建立进程队列; 实现时间片轮转调度算法,尽量可视化的展示调度的动态过程。 总结程序设计的开发过程:需求分析、系统设计、系统实现及文档的收集和整理

2、。三、实验方法与设计分析每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为输入进程的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时

3、间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止四、程序流程图开始设置时间片选择增加进程 是结束进程PCB顺序继续增加调度进程结束打印进程PCB顺序循环五、程序源代码#include stdafx.h#include #include #include #include #include #include using namespace std;ofstream myfile(bb.txt,ios:

4、app|ios:trunc);typedef struct node char name10;/*进程名*/ int round; /*进程分配的时间片*/ int cputime; /*进程消耗的CUP时间*/ int needtime; /*进程需要的CUP时间*/ int count; /*进程运行时间*/ char state; /*进程的状态:R:运行,W:等待,F:结束*/ struct node *next;/*指向下一个进程的指针*/ PCB;PCB *finish,*ready,*tail,*run;/*指向三个队列的队首的指针,tail为就绪队列的队尾指针*/ int N;

5、/*定义进程的数目*/ void firstin(void) if(ready!=NULL) run=ready; ready=ready-next; run-state=R; run-next=NULL; else run=NULL; void prt1(char a)coutname cputime needtime count round stateendl;myfilename ;myfile cputime;myfile needtime;myfile count ;myfile round;myfile stateendl; void prt2(char a,PCB *p) cou

6、tname cputime needtime count round stateendl;myfilename ;myfilecputime ;myfileneedtime ;myfilecount ;myfileround ;myfilestatenext; p=finish; while(p!=NULL) prt2(algo,p); p=p-next; getchar();void insert(PCB *q) tail-next=q; tail=q; q-next=NULL; void rcreate_task(char algo) PCB *p; int n,time; char na

7、10; ready=NULL; finish=NULL; run=NULL; coutN; for(n=0;nN;n+) p=(PCB*)malloc(sizeof(PCB); coutEnter the name of process:na; coutEnter the time of process:time; strcpy(p-name,na); p-cputime=0; p-needtime=time; p-count=0; p-state=W; p-round=2; if(ready!=NULL) insert(p); else p-next=ready; ready=p; tail

8、=p; run=ready; ready=ready-next; run-state=R; cout创建成功。count=run-round) run-count=0; if(ready!=NULL) run-state=W; insert(run); firstin(); prt(algo);void roundrun(char algo) while(run!=NULL) run-cputime=run-cputime+1; run-needtime=run-needtime-1; run-count=run-count+1; if(run-needtime=0) run-next=fin

9、ish; finish=run; run-state=F; run=NULL; if(ready!=NULL) firstin(); else if(run-count=run-round) run-count=0; if(ready!=NULL) run-state=W; insert(run); firstin(); prt(algo); void caidan() cout*主页*endl; cout*1.I 创建若干进程*endl; cout*2.C 进程进行查看*endl; cout*3.O 进程进行调度*endl; cout*4.H 结束 *algo;if(algo=i|algo=

10、I) rcreate_task(algo); else if(algo=c|algo=C) chakan(algo); else if(algo=o|algo=O)roundrun(algo);else if(algo=h|algo=H)goto loop2;goto loop1;loop2: myfile.close();return 0;六、运行结果七、问题及解决方法 (1) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实习是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行(2) 进程运行一次后,若要求运行时间0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号