- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
静态优先权优先算法的进程调度程序
静态优先权优先算法的进程调度程序
学 院 专 业学 生 姓 名学 号指导教师姓名
目 录
1.系统需求分析 1
1.1问题描述 1
1.2功能要求 1
2.总体设计 1
2.1总体设计图 1
2.2各模块功能 2
2.3相关数据结构设计 3
3.详细设计 3
3.1采用C语言定义的相关数据类型 3
3.2调度算法的主要实现 4
4.运行结果 4
4.1系统调试 4
4.2功能实现界面 5
5.使用说明 7
6.心得体会 8
7.附录 8
7.1 源代码 8
7.2 参考文献 17
1.系统需求分析
1.1问题描述
静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变.
一般地,优先权是利用某一范围内的一个整数来表示的,例如,0~7或0~255中的某一整数, 又把该整数称为优先数.只是具体用法各异:有的系统用0表示最高优先权,当数值愈大时,其优先权愈低;而有的系统恰恰相反.
确定进程优先权的依据有如下三个方面:
.进程类型.(系统进程/用户进程)
.进程对资源的需求.(需求量的大小)
.用户要求.(用户进程紧迫程度)
1.2功能要求2.总体设计
2.1总体设计图
系统总体设计如图21所示。
图21 系统总体设计
2.2各模块功能
1 void buildProcess():
2) struct PCB * callMemory():将符合条件的进程调入内存。
3) void ListAllPCB(struct PCB *h):打印所有进程到屏幕上。
4) void Menu():菜单以及执行。
5) void newPCB():创建进程。在1)中被调用。
6) void readFromFile():从文件中读取数据。
7) void readyList(struct PCB *pcb):就绪列表。
8) void release(struct PCB *pcb),void releaseR(struct PCB *pcb):释放进程。
9) void run():执行静态优先级进程调度算法。
10)struct PCB * runTheProcess():标识要执行的进程。
11)void setNewPCB(char *name,int pri,int entime,int sertime):创建进程。在6)中被调用。
12) int timeOfData(FILE *f):计算文件中进程数量。在6)中被调用。
2.3相关数据结构设计
3.详细设计
3.1采用C语言定义的相关数据类型
struct PCB
{
int ArrivalTime;
int ServiceTime;
char number;
};
struct PCB *head,*thisP,*newP; //动态接收进程及详细
struct PCB *readyHead; //动态存储就绪队列
采用结构体数组,创建一个进程,包含进程相关信息:进程名称、进程到达时间、进程服务时间。
3.2调度算法的主要实现
void run()//静态优先权算法。将执行的程序释放。调入新的满足执行条件的进程。就绪列表释放。
4.运行结果
4.1系统调试
在程序设计初期。
4.2功能实现界面
(1主菜单:如图41所示。
图41主菜单
(2)
图42创建进程
2
图43进程运行过程
3进程在调度算法中,计算出的具体的完成时间,周转时间,带权时间。如图44所示。
图44进程运行结果
(3)选择2:。如图45。
//从文件读取数据
/*数据格式如下
进程名 优先级 到达时间服务时间
proc1 2 1 10
proc2 2 1 11
proc3 3 2 2
*/
运行结果。如图4.6
图4
5.使用说明
6.心得体会7.附录
7.1 源代码#includestdio.h
#includestdlib.h
#includestring.h
int SequenceNumber=1; //进程编号
int ProcessAmount; //进程数量
int StartCount=0; //调入内存进程计数
struct PCB{ //进程控制块
int No; //进程号
char name[16]; //进程名
int enterMemoryTime;//进入内存时间
int serviceTime; //服务时间
int priority; //优先级
struct PCB *next;
};
struct PCB *head,*thisP,
文档评论(0)