网络操作系统课程设计报告
专业:网络工程
姓名:王凯收
学号:061007119
导师:陈建辉
根据选题规则,我所做题目为第一题和第六题。
(一) 第一题设计报告如下:
一、 题目内容:
作业调度算法的模拟:先来先服务(FCFS)算法、短作业优先(SJF)
算法、高响应比(HRN)算法和高优先权优先算法是作业调度中经常采用的,
通过上述算法的模拟加深对作业控制快 JCB 的理解和作业调度过程的实现技巧。
二、 题目要求:
1.用 C 语言或 C++语言实现对 N 个作业分别采用 FCFS、SJF、HRN 和高优先权优先等
算法进行调度。
2.每个用来标识作业的作业控制快 JCB 用结构来描述,包括以下字段:
(1)作业标识数 ID
(2)作业运行所需要时间 requesttime
(3)作业实际运行时间 runtime
(4)作业优先权 priority,并规定优先权越大的作业,其优先权越高
(5)作业紧迫程度 quick,并规定紧迫程度越高的作业,其数值越大
注:以上字段并非每种作业调度算法都使用,仅仅出于方便编程。
3.假设在调度前,系统中有 10 个作业,它们的初始状态如下:
ID 1 2 3 4 5 6 7 8 9 10
requesttime 983 118 949 559 493 722 120 986 253 807
priority 47 91 96 27 72 61 64 42 15 72
quick 1 2 1 5 5 3 3 1 5 5
4.设计思想
(1)HRN 算法采用下式计算响应比:
(2)高优先权优先算法采用下述公式计算优先权
三、 设计思想:
调度是操作系统的根本功能,不同的系统采用的调度算法不尽相同。该题目要求实现先
来先服务算法、短作业优先算法、高响应比算法、高优先权优先算法。各个调度算法的设
计思想如下:
先来先服务算法:从文件中将作业的 JCB 各项数据读入到相应数组中,然后利用作业的
到达时间 arrivetime[10]进行升序排序,并相应调整各个数组的数据,然后输出各项信息。
短作业优先算法:从文件中将作业的 JCB 各项信息读入到相应数组中,然后利用作业
的作业的所需运行时间 resquesttime[10]进行升序排序,调整相应数据信息。然后计算作业
的其他信息,输出到屏幕上。
高响应比算法:从文件中将作业的 JCB 各项信息输入到相应数组中,然后对作业的到
达时间 arrivetime[10]进行遍历,取得最小值,即最先到达的作业,首先被执行。将最先到
达的作业移到数组的第一项,然后执行高响应比算法,高响应比算法是首先求出为执行作
业的等待时间,存数数组 waittime 中,然后按根据为执行文件的响应比,取得响应比最大
的未执行作业,将该作业的 JCB 信息,存到数组中, 接着循环以上步骤,直至执行完所有
的作业。
高优先权优先算法:从文件中将作业的 JCB 各项信息输入到相应数组中,然后对作业
的到达时间 arrivetime[10]进行遍历,取得最小值,即最先到达的作业,首先被执行。将最
先到达的作业移到数组的第一项,然后执行高优先权优先算法,高优先权优先算法是首先
求出为执行作业的等待时间,存数数组 waittime 中,然后按根据为执行文件的优先权,取
得优先权最大的未执行作业,将该作业的 JCB 信息,存到数组中,,接着循环以上步骤,
直至执行完所有的作业。
四、 文件系统结构:
main():主函数;
fcfs():先来先服务算法
sjb(): 短作业优先算法
hrn(): 高响应比算法
youxian(): 高优先权优先算法
1.txt:作业的 jcb 存放信息。
五、 各模块算法流程图:
1、先来先服务的模块优先算法如下:实现将 arrivetime[i]进行升序排序。
2、短作业优先算法:
有前面的算法思想思想该模块主要有两个算法,分别为求第一个到达的作业和按作业
的运行时间 resquesttime[10]进行升序排序,因后一个算法与先来先服务算法方法相同,限
制写出第一个算法的流程图。
3、高优先比算法:
该模块主要有两个算法,分别为求第一个到达的作业和高优先比排序,其中第一个算法
与短作业优先算法中的第一个算法一样,故与此不再重复。
4、高优先权优先比算法:
该模块主要有两个算法,分别为求第一个到达的作业和高优先权优先排序,其中第一个
算法与短作业优先算法中的第一个算法一样,故与此不再重复。