磁盘调度算法程序课程设计报告材料
- 格式:doc
- 大小:204.23 KB
- 文档页数:22


操作系统实验报告—磁盘调度算法
操作系统实验报告
实验3磁盘调度算法
报告日期:20XX-6-17
姓名: 学号: 班级: 任课教师:
实验3磁盘调度算法
一、实验内容
模拟电梯调度算法,实现对磁盘的驱动调度。
二、实验目的
磁盘是一种高速、大量旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,负担着繁重的输入输出任务,在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请示等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求,这就叫驱动调度,使用的算法称驱动调度算法。驱动调度能降低为若干个输入输出请求服务所须的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。
三、实验原理
模拟电梯调度算法,对磁盘调度。
磁盘是要供多个进程共享的存储设备,但一个磁盘每个 时刻只能为一个进程服务。当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求处于等待状态,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。当存取臂仅需移到一个方向最远的所请求的柱面后,如果没有访问请求了,存取臂就改变方向。
假设磁盘有200个磁道,用C语言随机函数随机生成一个磁道请求序列放入模拟的磁盘请求队列中,假定当前磁头在100号磁道上,并向磁道号增加的方向上移动。请给出按电梯调度算法进行磁盘调度时满足请求的次序,并计算出它们的平均寻道长度。
四、实验过程
1.画出算法流程图。
2.源代码
#include #include #include int *Init(intarr) {
int i = 0;
srand((unsignedint)time(0)); for (i = 0; i = num)
-----WORD格式--可编辑--专业资料-----
--完整版学习资料分享---- 实验五 磁盘调度算法
班级: xxxxxxxxxxxx
姓名: xxxxxxxx
学号: xxxxxxxxxxxxxxxxxxxxx
上级日期: 2018年11月
成绩:___________________________
一、 实验目的:
通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易理解,使磁盘调度的特点更简单明了,加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解
二、实验内容
1、程序流程图
模块调用关系图
退
出 先
来
先
服
务
算
法 最
短
寻
道
时
间
优
先
扫
描
算
法
循
环
扫
描
算
法 磁盘调度模拟系统 -----WORD格式--可编辑--专业资料-----
--完整版学习资料分享---- 模块程序流程图
FCFS算法(先来先服务)流程图
输入磁道号
求平均寻道长度
输出移动的平均磁道数 按输入顺序将磁道序列输出 开始
结束 -----WORD格式--可编辑--专业资料-----
--完整版学习资料分享----
SSTF(最短寻道时间优先算法)流程图
求平均寻道长度 选择与当前磁道距离最近的磁道进行扫描
移动到最小(大)号,改向外(内)移动扫描未扫描的磁道
输出移动的平均磁道数 输出排好序的磁道序列
判断当前磁头在序列中的位置
结束 开始
输入磁道号
使用冒泡法从小到大排序
输入当前磁道号 -----WORD格式--可编辑--专业资料-----
--完整版学习资料分享----
SCAN算法(扫描算法)流程图
求平均寻道长度 选择移动臂移动方向,开始扫描
移动到最小(大)号,改向外(内)移动扫描未扫描的磁道
输出移动的平均磁道数 输出排好序的磁道序列 开始
结束 输入磁道号
第1篇
一、实验目的
1. 理解磁盘调度算法的基本原理和重要性。
2. 掌握几种常见的磁盘调度算法,包括先来先服务(FCFS)、最短寻道时间优先(SSTF)、扫描(SCAN)和循环扫描(C-SCAN)算法。
3. 通过模拟实验,分析不同磁盘调度算法的性能差异。
4. 优化磁盘调度策略,提高磁盘访问效率。
二、实验环境
1. 操作系统:Windows 10
2. 编程语言:Python 3.8
3. 磁盘调度算法模拟库:PyDiskScheduling
三、实验内容
1. FCFS算法:模拟实现先来先服务算法,按照请求顺序访问磁盘。
2. SSTF算法:模拟实现最短寻道时间优先算法,优先访问距离当前磁头最近的请求。
3. SCAN算法:模拟实现扫描算法,磁头从0号磁道开始向0号磁道移动,访问所有请求,然后返回到0号磁道。
4. C-SCAN算法:模拟实现循环扫描算法,与SCAN算法类似,但磁头在到达末尾磁道后返回到0号磁道。
四、实验步骤
1. 导入PyDiskScheduling库。
2. 创建一个磁盘调度对象,指定磁头初始位置、请求序列和调度算法。
3. 运行调度算法,获取磁头移动轨迹和访问时间。
4. 分析算法性能,包括磁头移动次数、平均访问时间和响应时间等。
五、实验结果与分析 1. FCFS算法:在请求序列较短时,FCFS算法表现较好。但随着请求序列长度增加,磁头移动次数和访问时间明显增加。
2. SSTF算法:SSTF算法在请求序列较短时表现最佳,平均访问时间和响应时间较低。但当请求序列较长时,算法性能下降,磁头移动次数增加。
3. SCAN算法:SCAN算法在请求序列较短时性能较好,但随着请求序列长度增加,磁头移动次数和访问时间逐渐增加。与SSTF算法相比,SCAN算法在请求序列较长时性能更稳定。
4. C-SCAN算法:C-SCAN算法在请求序列较短时表现较好,但随着请求序列长度增加,磁头移动次数和访问时间逐渐增加。与SCAN算法相比,C-SCAN算法在请求序列较长时性能更稳定,且磁头移动次数更少。
目录
目录 ..................................................................................................................... 1
1.课程设计目的 ................................................................................................ 1
1.1编写目的 ................................................................................................ 1
2.课程设计内容 ................................................................................................ 1
2.1设计内容 ................................................................................................ 1
3.1模块调用关系图 ..................................................... 错误!未定义书签。
4. 测试数据和结果 .......................................................................................... 4
5. 参考文献 ...................................................................................................... 7