操作系统实验进程调度.pdfVIP

  • 2
  • 0
  • 约7.42千字
  • 约 9页
  • 2024-03-03 发布于河南
  • 举报

实验三进程调度

一.实验目的

加深理解并模拟实现进程(作业)调度算法。

1)熟悉常用的进程调度算法,如FCFS、SPF、FPF、高响应比优先、时间片轮转;

2)结合所学的数据结构及编程知识,选择三种进程调度算法予以实现。

二.实验属性

该实验为设计性实验。

三.实验仪器设备及器材

普通PC386以上微机

四.实验要求

本实验要求2学时完成。

本实验要求完成如下任务:

1)编程实现单处理机系统中的进程调度,要求从FCFS、SPF、FPF、高响应比优先、

时间片轮转算法中至少选择三个;

2)最后编写主函数对所做工作进行测试。

实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习

报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。实验后认真书写

符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按

时上交。

五:实验具体设计

此程序模拟了两种调度算法,FCFS和SPF,首先FCFS就是按照进程的创建顺序依次顺序

进行,流程图为:

进程顺序执行

进程4进程3进程2进程1

新进程

SPF:

每次都进行循环,选出在该时间刻运行时间最短的进程优先执行。

程序代码具体详解:

1.创建一结构体作为进程控制器

typedefstructPCB

{

intID;

charstate;

intarrivetime;

intstarttime;

intfinishtime;

intservicetime;

structPCB*next;

}pcb;

定义全局变量作为计时器

inttime;//计时器

2.创建进程链表:

从txt文件中读取数据,构造一条不含头结点的单链表

voidCreate_process()

{

ifstreaminFile;

inFilen;

inFile.get();

inti=0;

for(;in;i++)

{

p=(pcb*)malloc(sizeof(pcb));

inFilep-ID;

inFilep-arrivetime;

inFilep-servicetime;

p-starttime=0;

p-finishtime=0;

p-state=F;

p-next=NULL;

if(head==NULL)

{

head=p;q=p;time=p-arrivetime;

}

if(p-arrivetimetime)

time=p-arrivetime;

q-next=p;

q=p;

}

3.若执行FCFS算法,按顺序遍历链表

voidfcfs1()

{

inti;

p=head;

for(i=0;in;i++)

{

if(p-state==F)

{

q=p;

run_fcfs1(q);

}

p=p-next;

}

}

voidrun_fcfs1(pcb*p1)

{

time=p1-arrivetimetime?p1-arrivetime:time;

文档评论(0)

1亿VIP精品文档

相关文档