《操作系统课程设计》报告范本_第1页
《操作系统课程设计》报告范本_第2页
《操作系统课程设计》报告范本_第3页
《操作系统课程设计》报告范本_第4页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、;typedefstructnodechar name10;/* 进程名 */intround;/* 进程分配的时间片*/intcputime;/* 进程消耗的 CUP时间 */intneedtime;/* 进程需要的 CUP时间 */intcount;/* 进程运行时间*/char state;/* 进程的状态:R: 运行 ,W :等待 ,F:结束 */structnode *next;/* 指向下一个进程的指针*/PCB;PCB *finish,*ready,*tail,*run;/* 指向三个队列的队首的指针,tail为就绪队列的队尾指针*/intN; /* 定义进程的数目*/voidf

5、irstin(void )if (ready!=NULL)run=ready;ready=ready-next;run-state=R ;run-next=NULL;elserun=NULL;voidprt1(char a)cout name cputime needtimecount roundstateendl;myfilename ;myfilecputime;myfile needtime;myfilecount ;myfileround;myfilestateendl;voidprt2(char a,PCB *p)coutname cputimeneedtimecount round

6、 stateendl;myfilename;myfilecputime;myfileneedtime;myfilecount;myfileround;myfilestatenext;p=finish;while (p!=NULL)prt2(algo,p);p=p-next;getchar();voidinsert(PCB *q)tail-next=q;tail=q;q-next=NULL;voidrcreate_task(char algo)PCB *p;intn,time;char na10;ready=NULL;finish=NULL;run=NULL;coutN;for (n=0;nN;

7、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);elsep-next=ready;ready=p;tail=p;run=ready;ready=ready-next;run-state=R ;cout创建成功。 count=run-round)r

8、un-count=0;if (ready!=NULL)run-state=insert(run);firstin();prt(algo);W ;voidroundrun(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=finish;finish=run;run-state=F;run=NULL;if (ready!=NULL)firstin();elseif (run-count=r

9、un-round)run-count=0;if (ready!=NULL)run-state=W ;insert(run);firstin();prt(algo);voidcaidan()cout*主页 *endl;cout*1.I创建若干进程*endl;cout*2.C进程进行查看*endl;cout*3.O进程进行调度*endl;cout*4.H结束*algo;if (algo= i|algo=I)rcreate_task(algo);elseif (algo= c|algo=C )chakan(algo);elseif (algo= o|algo=O )roundrun(algo);el

10、seif (algo= h|algo=H )goto loop2;goto loop1;loop2:myfile.close();return0;六、运行结果七、问题及解决方法(1) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减 “1”。由于本实习是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行(2) 进程运行一次后,若要求运行时间 0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间 =0,则把它的状态修改成 “结束 ”( E),且退出队列。(3) 若 “就绪 ”状态的进程队列不为空,则重复上面(1)和( 2)的步骤,直到所有进程都成为 “结束 ”状态。(4) 在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。(5) 为五个进程任意确定一组 “优先数 ”和 “要求运行时间 ”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。八、心得体会操作系统是计算机系统中必不可少的系统软件。它是计算机系统中各种资源的管理者和各种活动的组织者、指挥者。操作系统采用时间片法调度进程 ,使系统资源得到充分的利用 , 用户也可以花更少的时间完成更多的工作,这次模拟系统调度进程,让我明白了系统时间片的调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论