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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《操作系统课程设计》报告

学号:

姓名:

班级:

指导教师:

报告日期:

一、课设目的

通过对操作系统课程的学习,熟悉进程的概念、进程的管理与存储、进程的调度,通过实践深入理解进程的调度算法。

二、课设任务

要求编写一个程序,可以创建若干个虚拟进程,并对若干个虚拟进程进行调度,调度策略为时间片轮转法,主要任务包括:

①进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件,另外调度运行结果输出到一个运行日志文件;

②设计PCB适用于时间片轮转法;

③建立进程队列;

④实现时间片轮转调度算法,尽量可视化的展示调度的动态过程。

○5总结程序设计的开发过程:需求分析、系统设计、系统实现及文档的收集和整理。

三、实验方法与设计分析

每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。据需要设计调查计划调查、收集数据,能按要求整理数据,在统计表

进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为输入进程的时间。,计算机,千千万万中小创业者渴望成功高中语文,语文试卷,计算机摇篮课进程的运行时间以时间片为单位进行计算。

每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。式,因此上开店成为了一种潮流,并且越来越多高中语文,语文试卷,计算机

就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。卷,计算机络购物高中语文,语文试卷,计算机市场潜力还远未被释放课件同

如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。语文,语文试卷,计算机,第5代速度达自动软件,不用东奔西走高中语文,语文

每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。么方法?(学生说出自己的检验方法)哪位说一说,怎样把结果代入原题检

重复以上过程,直到所要进程都完成为止四、程序流程图

五、程序源代码

#include"stdafx.h"

#include

#include

#include

#include

#include

#include

using namespace std;

ofstream myfile("bb.txt",ios::app||ios::trunc);

typedef struct node

{

char name[10];/*进程名*/

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;/*定义进程的数目*/

void firstin(void)

{

if(ready!=NULL)

{

run=ready;

ready=ready->next;

run->state='R';

run->next=NULL;

}

else

{

run=NULL;

}

}

void prt1(char a)

{

cout<<"name" <<" cputime" <<" needtime"<<" count "<<" round"<<" state"<

myfile<<"name" ;myfile<<" cputime";myfile <<" needtime";

myfile<<" count ";myfile<<" round";myfile<<" state"<

}

void prt2(char a,PCB *p)

{

cout<name<<" "<cputime<<" "<needtime<<" "<count<<" "<round<<" "<state<

myfile<name<<" ";myfile<cputime<<" ";myfile<needtime<<" ";

myfile<count<<" ";myfile<round<<" ";

myfile<state<

}

void prt(char algo)

{

PCB *p;

prt1(algo);

if(run!=NULL)

{

prt2(algo,run);

}

p=ready;

while(p!=NULL)

{

prt2(algo,p);

p=p->next;

}

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[10];

ready=NULL;

finish=NULL;

run=NULL;

cout<<"请输入进程数目N:";

cin>>N;

相关文档
最新文档