天津理工大学实验报告
学院(系)名称:计算机与通信工程学院
姓名
晴小天
学号
2013xxxx
专业
计算机科学与技术
班级
2013 级 2 班
实验项目 实验三:磁盘调度算法的实现
课程名称
操作系统
课程代码
实验时间
批改意见
2011 年 12 月 8 日 第 3、4 节
2011 年 12 月 12 日 第 7、8 节
2011 年 12 月 15 日 第 3、4 节
2011 年 12 月 19 日 第 7、8 节
实验地点
成绩
0668036
软件实验室 7-219
软件实验室 7-219
软件实验室 7-219
软件实验室 7-215
教师签字:
实验内容:
1. 本实验是模拟操作系统的磁盘寻道方式,运用磁盘访问顺序的不同来设计磁盘的调度算法。
2. 实现的磁盘调度算法有 FCFS,SSTF,SCAN,CSCAN 和 NStepSCAN 算法。
3. 设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机产生要进行寻道的磁道号序列。
4. 选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。
5. 按算法的寻道效率进行排序,并对各算法的性能进行分析比较。
实验要求:
1.详细描述实验设计思想、程序结构及各模块设计思路;
2. 详细描述程序所用数据结构及算法;
3. 明确给出测试用例和实验结果;
4. 为增加程序可读性,在程序中进行适当注释说明;
5. 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;
6. 实验报告撰写要求结构清晰、描述准确逻辑性强;
7.实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。
【实验过程记录(源程序、测试用例、测试结果及心得体会等)】
第 1页 共 10页
#include
#include
using namespace std;
void FCFS(int a[],int n);
void SSTF(int a[],int n);
void SCAN(int a[],int n);
void CSCAN(int a[],int n);
int main()
{
int n;//磁道的个数
int s;//功能号
cout<<"请输入磁道的个数:"<>n;
int *a=new int[n];
cout<<"生成随机磁道号..."<>s;
if(s>4)
{
cout<<"输入有误!"<case 3:SCAN(a, n);break;
case 4:CSCAN(a,n);break;
}
}
}
return 0;
}
//先来先服务调度算法(FCFS)
void FCFS(int a[],int n)
{
int sum=0,j,i,first=0,now;
cout<<"请输入当前磁道号:";
cin>>now;//确定当前磁头所在位置
cout<<"磁盘调度顺序为:"<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
第 3页 共 10页
}
cout<<"按递增顺序排好的磁道:"<
>now;//确定当前磁头所在位置
cout<<"磁盘调度顺序为:"<=0;i--)
cout<=now)//当前磁头位置小于最里欲访问磁道
{
for(i=0;i=0)&&(r