- 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)