操作系统课程设计报告-磁盘调度算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
、
华南农业大学数学与信息学院(软件学院)
《操作系统分析与设计实习》成绩单
开设时间:2015学年第一学期
评价指标:
题目内容和要求完成情况优□良□中□差□
对算法原理的理解程度优□良□中□差□
程序设计水平优□良□中□差□
程序运行效果及正确性优□良□中□差□
课程设计报告结构清晰优□良□中□差□
|
报告中总结和分析详尽优□良□中□差□
一、需求分析
(1)输入的形式和输入值的范围:
在文本框输入序列长度,输入值为int类型
(2)^
(3)输出的形式:
输出每种磁盘调度算法的服务序列;
输出每种算法的平均寻道长度。
(4)程序所能达到的功能:
模拟实现FCFS、SSTF、SCAN、C-SCAN 算法,并计算及比较磁头移动道数。(4)测试数据:
包括正确的输入及其输出结果和含有错误的输入及其输出结果:
二、概要设计
1)主程序流程图:
&
输出随机生成
400个磁道号序
列
主菜单选择算法
开始
FCFS SSTF
SCAN
C-SCAN 结束
(2)各程序模块之间的调用关系
磁头初始位置输入及
合法性检查
冒泡排序算法
由外向内输出磁道序列
由内向外输出磁道序列
由当前位置向内再向
外
输出磁道序列由当前位置向外再向
内
输出磁道序列
由当前位置向内再由
外向内输出磁道序列由当前位置向外再由
内向外输出磁道序列
就近选择
主函数
FCFS
SSFT
SCAN
C-SCAN
三、详细设计
1)各操作伪码算法
/
(1)实现磁头初始位置的输入并进行合法性检查
int printstarter()//磁头初始位置输入
{
输入:磁头初始位置;
if输入小于0或大于1500
{
输出:"输入数据类型有误,请重新输入!" < 重新输入 ; } Else 返回合法的磁头初始位置 } (2)冒泡排序算法 int *bubble//冒泡排序算法 { < for 从数组的第一个元素开始重复 { 依次和后续元素表较大小; If后面元素大于当前元素 交换数值; } 输出排序后的数组; 返回数组; \ } (3)int out_to_in//由磁道最外向内输出磁道序列{ for 从最外磁道开始 { 依次输出磁道号; | 当前磁道号与磁头初始未至的绝对值求和; 磁头初始位置=当前磁道号; } 返回绝对值之和; } (4)int in_to_out//由磁道最内向外输出磁道序列{ : for 从最内磁道开始 { 依次输出磁道号; 当前磁道号与磁头初始未至的绝对值求和; 磁头初始位置=当前磁道号; } 返回绝对值之和; } ~ (5)int out_to_in_to_out//先由当前位置向内再向外{ 找到小于等于磁头初始位置的磁道 for由该磁道开始 { ) 向内依次输出磁道号; 当前磁道号与磁头初始未至的绝对值求和; } for由该磁道的外侧磁道开始 { 向外依次输出磁道号; 当前磁道号与磁头初始未至的绝对值求和; } ^ 返回绝对值之和; } (6)int in_to_out_to_in//先由当前位置向外再向内 { 找到大于等于磁头初始位置的磁道 ~ for由该磁道开始 { 向外依次输出磁道号; 当前磁道号与磁头初始未至的绝对值求和; } for由该磁道的内侧磁道开始 { 向内依次输出磁道号; 】 当前磁道号与磁头初始未至的绝对值求和; } 返回绝对值之和; } (7)int out_to_in_twice由当前磁道向内再从最外向内 { ~ 找到小于等于磁头初始位置的磁道; for由该磁道开始 { 向内依次输出磁道号; 当前磁道号与磁头初始未至的绝对值求和; } for由最外侧磁道开始 { { 向内依次输出磁道号直到小于等于初始位置的磁道的外侧一个磁道; 当前磁道号与磁头初始未至的绝对值求和; } 返回绝对值之和; } , (8)int in_to_out_twice由当前磁道向外再从最内向外 { 找到大于等于磁头初始位置的磁道 for由该磁道开始