操作系统进程调度算法课程设计报告.docx
- 文档编号:30607414
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:17
- 大小:178.93KB
操作系统进程调度算法课程设计报告.docx
《操作系统进程调度算法课程设计报告.docx》由会员分享,可在线阅读,更多相关《操作系统进程调度算法课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
操作系统进程调度算法课程设计报告
一.设计要求--------------------------------------3
二.设计思想流程--------------------------------3
三.数据结构--------------------------------------5
四.程序清单--------------------------------------6
五.运行结果--------------------------------------9
六.实验体会--------------------------------------11
七.设计心得--------------------------------------12
八.参考文献--------------------------------------12
进程调度算法
一.设计要求
1.编写一个进程调度程序,允许多个进程并行执行。
2.每个进程有一个进程控制块(PCB)表示。
进程控制块可以包含如下信息:
进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
3.进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。
进程的到达时间为输入进程的时间。
二.设计思想流程
1.优先权调度模拟流程图
Y
N
N
Y
Y
N
N
Y
Y
N
N
Y
优先权调度模拟流程图
2.按时间片轮转调度模拟流程图
开始
Y
N
N
Y
Y
N
N
Y
Y
N
N
Y
Y
时间片轮转调度模拟流程图
三.数据结构
1.进程管理程序调试好后运行进程管理程序
2.优先权调度
(1)输入1选择优先权调度算法模拟。
(2)输入开始进程个数n,创建n个PCB并加入就绪队列ready_queue中。
(3)就绪队列ready_queue不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleprocess中调度闲逛进程运行。
(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue中删除。
(5)如果运行时间CPUtime大于等于Alltime,该进程运行完毕,释放该进程;否则插入到就绪队列中。
(6)更新就绪队列中的优先级数。
(7)随机对阻塞队列block_queue中的进程PCB询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。
(8)重复上述步骤,直到本次调度结束。
3.按时间片轮转调度
(1)输入2选择优先权调度算法模拟。
(2)输入开始进程个数n,创建n个PCB并加入就绪队列ready_queue中。
(3)就绪队列ready_queue不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleprocess中调度闲逛进程运行。
(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue中删除。
(5)如果运行时间CPUtime大于等于Alltime,该进程运行完毕,释放该进程;否则插入到就绪队列中。
(6)随机对阻塞队列block_queue中的进程PCB询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。
(7)如果时间到,本次调度结束,否则重复上述步骤,直到本次调度结束。
四.源程序代码
#include
#include
#include
#defineN5//进程个数,可改变
intrt[N];//到达时间
intst[N];//服务时间
intct[N];//完成时间
intcyt[N];//周转时间
floatrct[N];//带权周转时间
floatav[2];
intn,m,c=1,which;
voidline()//美化程序,使程序运行时更加明朗美观
{
printf("------------------------------------------------------------------\n");
}
voidstart()//表示FCFS算法开始
{
line();
printf("FCFS算法开始\n");
printf("——DesignedbyZhangHong\n");
line();
}
voidend()//表示FCFS算法结束
{
line();
printf("FCFS算法结束,谢谢使用\n");
line();
}
voidinput()
{
printf("请输入%d个进程的到达时间:
",N);
for(n=0;n scanf("%d",&rt[n]); printf("请输入%d个进程对应的服务时间: ",N); for(n=0;n scanf("%d",&st[n]); } voidrandom() { srand((unsigned)time(NULL)); for(n=0;n { rt[n]=rand()%100; for(m=0;m if(n! =0&&rt[n]==rt[m]) { rt[n]=rand()%100; m=0; } st[n]=rand()%98+1; for(m=0;m if(n! =0&&st[n]==st[m]) { st[n]=rand()%98+1; m=0; } } } voidordination()//重新排序,应对出现输入的到达时间为乱序的情况 { inttemp; for(n=0;n for(m=0;m if(rt[m+1]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 进程 调度 算法 课程设计 报告