栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

操作系统实验七 磁盘调度算法的模拟与实现(C语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

操作系统实验七 磁盘调度算法的模拟与实现(C语言)

实验七 磁盘调度算法的模拟与实现 1 、实验目的 (1) 了解磁盘结构以及磁盘上数据的组织方式。 (2) 掌握磁盘访问时间的计算方式。 (3) 掌握常用磁盘调度算法及其相关特性。 2 、实验基本知识及原理 ( 1 )磁盘数据的组织 磁盘上每一条物理记录都有唯一的地址,该地址包括三个部分:磁头号(盘面号)、柱面号(磁 道号)和扇区号。给定这三个量就可以唯一地确定一个地址。 ( 2 )磁盘访问时间的计算方式 磁盘在工作时以恒定的速率旋转。为保证读或写,磁头必须移动到所要求的磁道上,当所要求 的扇区的开始位置旋转到磁头下时,开始读或写数据。对磁盘的访问时间包括:寻道时间、旋转延 迟时间和传输时间。 ( 3 )磁盘调度算法 磁盘调度的目的是要尽可能降低磁盘的寻道时间,以提高磁盘 I/O 系统的性能。 先进先出算法 FIFO :按访问请求到达的先后次序进行调度。 最短服务时间优先算法 SSTF :优先选择使磁头臂从当前位置开始移动最少的磁盘 I/O 请求进 行调度。 SCAN (电梯算法): 要求磁头臂先沿一个方向移动,并在途中满足所有未完成的请求,直到它 到达这个方向上的最后一个磁道,或者在这个方向上没有别的请求为止,后一种改进有时候称作 LOOK 策略。然后倒转服务方向,沿相反方向扫描,同样按顺序完成所有请求。 C-SCAN (循环扫描)算法: 在磁盘调度时,把扫描限定在一个方向,当沿某个方向访问到最 后一个磁道时,磁头臂返回到磁盘的另一端,并再次开始扫描。 3 、实验内容 本实验通过编程模拟实现几种常见的磁盘调度算法。 ( 1 )测试数据:参见教材 P305 ,测试结果参见表 11.2 。 ( 2 )使用 C 语言编程实现 FIFO 、 SSTF 、 SCAN 、 C-SCAN 算法。 4 、 实验结果与分析 5 、 实验总结

流程图:

代码:

#include 
#include 
#include 
#include 
#define max 200
int num; //磁盘数
//55 58 39 18 90 160 150 38 184
int request[100];   //请求磁盘序列
int begin;  //开始磁盘位置
int kua;    //横跨的总数
int k;      //每次横跨的磁盘数
int re[100];    //复制初始序列
int r[100];     //记录每个算法执行后序列

void FIFO(){    //先进先出
    kua=abs(begin-request[0]);
    printf("n先进先出算法:n    FIFO调度:      %3d",begin);
    for(int i=0;ire[j+1]){
                re[j]=re[j]+re[j+1];
                re[j+1]=re[j]-re[j+1];
                re[j]=re[j]-re[j+1];
            }
        }
    }
    for(int i=0;ib){
            printf(" %3d",re[i]);
            r[c++]=re[i];
        }
    for(int i=num-1;i>=0;i--)
        if(re[i]b){
            printf(" %3d",re[i]);
            r[c++]=re[i];
        }
    for(int i=0;i 

实验结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932306.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号