操作系统实验报告(2)

2019-08-01 23:24

山东科技大学学生课程设计

- 3 -

山东科技大学学生课程设计

1.需求分析

1.1设计目的

(1)阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。 (2)掌握一种计算机高级语言的使用。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.2设计要求 (1)能够选择不同的调度算法(要求中给出的调度法); (2)能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等; (3)根据选择的调度算法显示进程调度队列; (4)根据选择的调度算法计算平均周转时间和平均带权周转时间。 1.3 详细设计

1.主函数模块

首先调用getprocess()模块,然后令p=head,再调用find()函数。 2.查找模块

在实现查找最先到达进程功能时,通过循环,将每一个进程的arrivetime与当前的最早到达时间t进行比较,如果arrivetime小于t,则将该进程的arrivetime赋给t,并将指针指向下一个进程,直到找到到达时间最早的进程,然后调用fcfs()函数进行运行并输出 3. 创建进程及排序模块

创建进程时,先申请内存,建一个空的后备队列,然后输入进程的相关信息,并按arrivetime的大小的进程排成队列。 4. 运行模块

- 4 -

山东科技大学学生课程设计

调用fcfs()程序进行运行,当运行时,把进程的开始时间begintime置为当前时间time,完成时间finishtime为开始时间begintime加上运行时间runtime,周转时间turntime为finishtime减arrivetime,带权周转时间wturntime为turntime/runtime。

开始 输入进程信息 将进程排成队列 调用find()函数 arrivetime

- 5 -

山东科技大学学生课程设计

程序源代码

#include struct fcfs {

char name[10];

//进程名 //到达时间

//服务时间 //开始时间 //完成时间 //带权周转时间

float arrivetime; float servicetime; float starttime; float finishtime; float zztime; };

fcfs a[100]; //定义先来先服务算法进程的最大数量 void Finput(fcfs *p,int N) { int i;

printf(\输入进程的名称、到达时间、服务时间:(例如: x 0 100)\\n\ for(i=0;i<=N-1;i++) {

scanf(\ } }

//输出函数

void FPrint(fcfs *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N)

{ int k;

printf(\执行顺序:\\n\

printf(\输入第%d进程的名称、到达时间、服务时间:\

//输入函数

float dqzztime;

//定义进程的结构体

//周转时间

- 6 -

山东科技大学学生课程设计

printf(\ for(k=1;k

printf(\进程名

\\tarrive\\tservice\\tstart\\tfinish\\tzz\\tdqzz\\n\\n\

for(k=0;k<=N-1;k++) {

printf(\].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);

} }

void Fsort(fcfs *p,int N) 面

{

for(int i=0;i<=N-1;i++) }

//运行结果

for(int j=0;j<=i;j++)

if(p[i].arrivetime

fcfs temp; temp=p[i]; p[i]=p[j]; p[j]=temp;

//按到达时间排序,先到达排在前

printf(\

- 7 -


操作系统实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:DNF大转移NPK补丁翻译

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: