精华内容
下载资源
问答
  • 操作系统磁盘调度算法实验报告
    2021-05-25 00:37:32

    操作系统磁盘调度算法实验报告课案

    《操作系统原理》

    课 程 设 计 报 告 书

    题 目:磁盘调度 专 业:网络工程 学 号: 学生姓名: 指导教师: 完成日期:

    目录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc436561075" 第一章 课程设计目的 PAGEREF _Toc436561075 \h 1 HYPERLINK \l "_Toc436561076" 1.1编写目的 PAGEREF _Toc436561076 \h 1 HYPERLINK \l "_Toc436561077" 第二章 课程设计内容 PAGEREF _Toc436561077 \h 2 HYPERLINK \l "_Toc436561078" 2.1设计内容 PAGEREF _Toc436561078 \h 2 HYPERLINK \l "_Toc436561079" 2.1.1、先来先服务算法(FCFS) PAGEREF _Toc436561079 \h 2 HYPERLINK \l "_Toc436561080" 2.1.2、最短寻道时间优先算法(SSTF) PAGEREF _Toc436561080 \h 2 HYPERLINK \l "_Toc436561081" 2.1.3、扫描算法(SCAN) PAGEREF _Toc436561081 \h 3 HYPERLINK \l "_Toc436561082" 2.1.4、循环扫描算法(CSCAN) PAGEREF _Toc436561082 \h 3 HYPERLINK \l "_Toc436561083" 第三章 系统概要设计 PAGEREF _Toc436561083 \h 4 HYPERLINK \l "_Toc436561084" 3.1模块调度关系图 PAGEREF _Toc436561084 \h 4 HYPERLINK \l "_Toc436561085" 3.2模块程序流程图 PAGEREF _Toc436561085 \h 4 HYPERLINK \l "_Toc436561086" 3.2.1 FCFS算法 PAGEREF _Toc436561086 \h 5 HYPERLINK \l "_Toc436561087" 3.2.2 SSTF算法 PAGEREF _Toc436561087 \h 6 HYPERLINK \l "_Toc436561088" 3.2.3 SCAN算法 PAGEREF _Toc436561088 \h 7 HYPERLINK \l "_Toc436561089" 3.2.4 CSCAN算法 PAGEREF _Toc436561089 \h 8 HYPERLINK \l "_Toc436561090" 第四章 程序实现 PAGEREF _Toc436561090 \h 9 HYPERLINK \l "_Toc436561091" 4.1 主函数的代码实现 PAGEREF _Toc436561091 \h 9 HYPERLINK \l "_Toc436561092" 4.2.FCFS算法的代码实现 PAGEREF _Toc436561092 \h 11 HYPERLINK \l "_Toc436561093" 4.3 SSTF算法的代码实现 PAGEREF _Toc436561093 \h 13 HYPERLINK \l "_Toc436561094" 4.4 SCAN算法的代码实现 PAGEREF _Toc436561094 \h 15 HYPERLINK \l "_Toc436561095" 4.5 CSCAN算法的代码实现 PAGEREF _Toc436561095 \h 17 HYPERLINK \l "_Toc436561096" 第五章 测试数据和结果 PAGEREF _Toc436561096 \h 20 HYPERLINK \l "_Toc436561097" 第六章 总结 PAGEREF _Toc

    更多相关内容
  • 操作系统磁盘调度算法实验报告
  • 假设有 n 个磁道号所组成 的磁道访问序列,给定开始磁道号 m 和磁头移动的方向,正向 或者反向,分别利用不同的磁盘调度算法访问磁道序列,给出 每一次访问的磁头移动距离,计算每种算法的平均寻道长度
  • 实用标准文案 目录 目录 1 1 课程设计目的 1 1.1 编写目的 1 2 课程设计内容 1 2.1 设计...1.1 编写目的 本课程设计的目的是通过磁盘调度算法设计一个磁盘调度模拟系统 从而使磁盘调度算法更加形象化容易使人理解使磁
  • 操作系统实验八 磁盘调度算法实验报告
  • 操作系统磁盘调度算法实验报告及代码.docx
  • 操作系统磁盘调度算法实验报告及代码参考.pdf
  • 操作系统实验六 磁盘调度算法(内含源代码和详细实验报告),详细介绍:http://blog.csdn.net/xunciy/article/details/79239096
  • 操作系统实验报告 磁盘调度 先进先出算法 lru算法 操作系统实验报告 磁盘调度 先进先出算法 lru算法操作系统实验报告 磁盘调度 先进先出算法 lru算法
  • 实验报告为课程实验报告,内容齐全,详细介绍了操作系统中作业调度算法
  • 介绍FCFS、SSTF、SCAN、C-SCAN、LOOK、C-LOOK六种磁盘调度算法

    磁盘调度算法

    FCFS

    先到先服务,最简单,比较公平,大量访问性能近似于随机调度。

    在这里插入图片描述

    SSTF

    最短寻找时间优先,贪心算法,比FCFS好,可能产生饥饿。

    在这里插入图片描述

    展开全文
  • 复习模拟实现一种磁盘调度算法(FCFS、SSTF、Scan、CScan、2-step Scan任选一),进一步加深对磁盘调度效率的理解。本实验模拟实现了电梯扫描算法
  • 操作系统实验报告三份,基于天津理工大学,实验1:处理机调度.;实验2:存储器的分配与回收;磁盘调度算法的实现
  • 操作系统实验报告 操作系统实验报告 实验六 磁盘调度算法 班级 学号 姓名 需求分析 1实验目的 通过这次实验加深对磁盘调度算法的理解进一步掌握先来先服务FCFS最短寻道时间优先SSTFSCAN和循环SCAN算法的实现方法 2...
  • 实验一、进程控制实验 实验二、线程和进/线程管道通信实验 实验三、进程调度算法实验 实验四、进程同步实验 实验五、进程互斥实验 ...实验八、磁盘移臂调度算法实验 实验九、文件系统接口实验
  • 实验课上写的,有更好的想法可以提出,大家一起学习,赚点积分不容易 C语言编写,调试过可运行,含实验报告,含具体流程图 ,有注释和变量解释,环境为VS2008 安徽大学操作系统实验(八)基于扫描的磁盘调度算法,...
  • 操作系统实验八:磁盘移臂调度算法实验报告。实验目标:加深对于操作系统设备管理技术的了解,体验磁盘移臂调度算法的重要性;掌握几种重要的磁盘移臂调度算法,练习模拟算法的编程技巧,锻炼研究分析试验数据的能力...
  • Exercise 1: 本实验是模拟操作系统的磁盘寻道方式,运用磁盘访问顺序的不同来设计磁盘的调度算法。 Exercise 2: 实现的磁盘调度算法有FCFS,SSTF,SCAN,CSCAN和 NStepSCAN算法。 Exercise 3: 设定开始磁道号寻道...
  • 内含实验报告+代码(源代码+可执行文件)+截图+画图
  • 假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m(SCAN、CSCAN中默认向磁道号增加的方向访问),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。...

    一、实验内容

    设计程序模拟先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m(SCAN、CSCAN中默认向磁道号增加的方向访问),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。

    二、C++代码

    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    const int MaxNumber=100;
    
    void FCFS(int begin,int length,int TrackOrder[]){
        int  MoveDistance = 0;
        double  AverageDistance = 0;
        int i;
        cout<<"-------FCFS-------"<<endl;
        for (i = 1; i <= length; i++){
            MoveDistance = abs(TrackOrder[i] - TrackOrder[i-1]);//计算本次的寻道长度
            AverageDistance += MoveDistance;//累计寻道长度
            cout<<TrackOrder[i]<<"  "<<MoveDistance<<endl;//输出本次寻道长度
        }
        AverageDistance = AverageDistance / length;//计算平均寻道长度
        cout<<"平均寻道时间为:"<<AverageDistance<<endl;
        cout<<"---------------------"<<endl;
    }                   
    
    void SSTF(int begin,int length,int TrackOrder[]){
        int  MoveDistance;//寻道长度
        double  AverageDistance;//平均寻道时间
        int i,j,k,flag ,count = 0;//count用来计算目前已经完成寻道的磁道数量,flag用来存放开始寻道号所在的位置,
        //k值用来表示每一次查找的中心点,每次分别找到左右两边与k值相距最小且未被访问过的磁道
        sort(TrackOrder,TrackOrder + length);要将数组从小到大进行排序
        bool tag [length];//标记数组,标记某个磁道是否已经被访问过了
        for ( i = 0; i <= length; i++){
            tag[i] = false;//标记数组初始化
        }
        for ( i = 0; i <= length; i++){
            if (TrackOrder[i] == begin){
                flag = i;//找到开始寻道号所在的位置
            } 
        }
        k = flag;
        cout<<"-------SSTF-------"<<endl;
        while (count != length){//完成寻道的磁道数量不等于原始磁道序列长度
            for ( i = (k - 1 + length) % length; i >= 0; i--){//查找k左边距离k最小且未被访问的磁道,i = (k - 1 + length)的作用是若是k=0时,它的左边就从最后一个磁道开始递减查找
                if (i == flag || tag[i] == true)continue;
                break;
            }
            for ( j = (k + 1) % length; j < length; j++){//查找k右边距离k最小且未被访问的磁道,j = (k + 1) % length的作用是若是k=length时,它的右边边就从第一个开始递增查找
                if (j == flag || tag[j] == true)continue;
                break;
            }
            if (abs(TrackOrder[j] - TrackOrder[k]) < abs(TrackOrder[k] - TrackOrder[i])){
                MoveDistance = abs(TrackOrder[j] - TrackOrder[k]);//计算寻道时间
                AverageDistance += MoveDistance;//累计寻道时间
                ++count;//完成寻道的磁道数量+1
                tag[j] = true;//修改标记数组
                k = j;//下次以j为中心点,查找左右两边距离最小且未被访问的磁道
                cout<<TrackOrder[j]<<"  "<<MoveDistance<<endl;//输出本次寻道长度
            }else{
                MoveDistance = abs( TrackOrder[k] - TrackOrder[i]);//计算寻道时间
                AverageDistance += MoveDistance;//累计寻道时间
                ++count;//完成寻道的磁道数量+1
                tag[i] = true;//修改标记数组
                k = i;//下次以i为中心点,查找左右两边距离最小且未被访问的磁道
                cout<<TrackOrder[i]<<"  "<<MoveDistance<<endl;//输出
            }
        }
        AverageDistance = AverageDistance / length;//计算平均寻道长度
        cout<<"平均寻道时间为:"<<AverageDistance<<endl;
        cout<<"---------------------"<<endl;
    }
    
    void SCAN(int begin,int length,int TrackOrder[]){
        int  MoveDistance = 0;//寻道长度
        double  AverageDistance = 0;//平均寻道长度
        int i,temp,j;
        int flag = 0;//用flag来标记开始寻道号所在的位置
        //将数组进行排序
        sort(TrackOrder,TrackOrder + length);//将磁道号按大小排序
        for ( i = 0; i <= length; i++){//找到开始寻道号所在的位置
            if (TrackOrder[i] == begin){
                flag = i;
                break;
            }
        }
        cout<<"-------SCAN-------"<<endl;
        for (i = flag + 1;i <= length ;i++){//从开始寻道号所在位置的下一个开始直至访问到最大的磁道号
            MoveDistance = abs(TrackOrder[i] - TrackOrder[i-1]);//计算本次寻道长度
            AverageDistance += MoveDistance;//累计寻道长度
            cout<<TrackOrder[i]<<"  "<<MoveDistance<<endl;//输出本次寻道长度
        }
        for ( i = flag - 1 ;i >= 0 ;i--){
            if (i == flag - 1){
                //最大的磁道号减去小于开始寻道号的第一条磁道号
                MoveDistance = abs(TrackOrder[i] - TrackOrder[length]);//计算本次寻道长度
            }else{
    
                MoveDistance = abs(TrackOrder[i] - TrackOrder[i+1]);//计算本次寻道长度
            }
            cout<<TrackOrder[i]<<"  "<<MoveDistance<<endl;//输出本次寻道长度
            AverageDistance += MoveDistance;//累计寻道长度
        }
        AverageDistance = AverageDistance / length;//计算并输出平均寻道时间
        cout<<"平均寻道时间为:"<<AverageDistance<<endl;
        cout<<"---------------------"<<endl;
    }
    
    void CSCAN(int begin,int length,int TrackOrder[]){
        int  MoveDistance = 0;//寻道长度
        double  AverageDistance = 0;//平均寻道长度
        int i,temp,j;
        int flag = 0;//用flag来标记开始寻道号所在的位置
        //要将数组从小到大进行排序
        sort(TrackOrder,TrackOrder + length);
        for ( i = 0; i <= length; i++){
            if (TrackOrder[i] == begin){//找到开始寻道号所在的位置
                flag = i;
                break;
            }
        }
        cout<<"-------CSCAN-------"<<endl;
        for (i = flag + 1;i != flag; i++){
            temp = i % (length+1);//循环查找
            MoveDistance = abs(TrackOrder[temp] - TrackOrder[i-1]);//计算本次寻道长度
            AverageDistance += MoveDistance;//累计寻道长度
            cout<<TrackOrder[temp]<<"  "<<MoveDistance<<endl;//输出本次寻道长度
            i = temp;
        }
        AverageDistance = AverageDistance / length;//计算并输出平均寻道时间
        cout<<"平均寻道时间为:"<<AverageDistance<<endl;
        cout<<"---------------------"<<endl;
    }
    
    int main(int argc, char* argv[]){
        int TrackOrder[MaxNumber];//磁道序列
        //0 55 58 39 18 90 160 150 38 184
        //= {0,55,58,39,18,90,160,150,38,184};
        // int length = 10;
        // int begin = 100;
        int length;//磁道序列的原始长度
        int begin;//开始寻道号
        cout<<"请输入磁道个数:";
        cin>>length;
        cout<<"请输入磁道序列:";
        for (int i = 1; i <= length; i++){
            cin>>TrackOrder[i];
        }
        cout<<"请输入开始磁道号:";
        cin>>begin;
        TrackOrder[0] = begin;//把开始寻道号加入磁道序列
        int i;
        while (1){
            cout<<"输入你要执行的操作:"<<endl;
            cout<<"算法选择:1-FCFS,2-SSTF,3-SCAN,4-循环SCAN,5-退出:";
            cin>>i;
            if (i == 1){
                FCFS(begin,length,TrackOrder);
            }else if (i == 2){
                SSTF(begin,length,TrackOrder);
            }else if (i == 3){
                SCAN(begin,length,TrackOrder);
            }else if (i == 4){
                CSCAN(begin,length,TrackOrder);
            }
            else{
                break;
            }
        } 
    	return 0;
    }
    
    展开全文
  • 本实验为“磁盘移臂调度算法实验”,操作系统经典实验,实验目的为:加深对于操作系统设备管理技术的了解,体验磁盘移臂调度算法的重要性;掌握几种重要的磁盘移臂调度算法,练习模拟算法的编程技巧,锻炼研究分析试验...
  • 操作系统实验报告 实验题目磁盘调度算法 实验目的 通过这次实验加深对磁盘调度算法的理解进一步掌握先来先 服务 FCFS最短寻道时间优先 SSTFSCAN 和循环 SCAN 算法的 实现方法 实验内容 问题描述 设计程序模拟先来先...
  • 描编程序实现磁盘调度算法,并求出每种算法的平均寻道长度。设计要求: (1)能够输入程序要访问的磁道序列或系统自动生成程序要访问的磁道序列和磁头当前所在的磁道数。 (2)可以选择某磁盘调度算法(先来先服务...
  • 实用标准文案精彩文档实用标准文案精彩文档淮阴工学院操作系统课程设计报告选题名称: 磁盘调度算法的模拟实现系(院): 经济管理学院专 业: 信息管理与信息系统班 级:姓 名: 学 号:指导教师:学年学期: 2014 ~ 2015 ...

    实用标准文案

    精彩文档

    实用标准文案

    精彩文档

    淮阴工学院

    操作系统课程设计报告

    选题名称: 磁盘调度算法的模拟实现

    系(院): 经济管理学院

    专 业: 信息管理与信息系统

    班 级:

    姓 名: 学 号:

    指导教师:

    学年学期: 2014 ~ 2015 学年 第 1 学期

    2014年 12 月 21 日

    设计任务书

    课题

    名称

    磁盘调度算法的模拟实现

    设计

    目的

    调研并熟悉磁盘调度的基本概念、排序算法与工作规程;

    学习Visual C++中的图形化界面设计技术;

    通过实际编程加深对基础知识的理解,提高实践能力;

    学习开发资料的收集与整理,学会撰写课程设计报告。

    实验

    环境

    微型电子计算机(PC);

    安装Windows 2000以上操作系统,Visual C++6.0开发工具。

    任务

    要求

    利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;

    在第15周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;

    本课题主要实现能用各种排序算法实现对数据的排序,排序后显示排序结果。

    结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。

    工作进度计划

    序号

    起止日期

    工 作 内 容

    1

    2014.12.15~2014.12.16

    在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。

    2

    2014.12.17~2014.12.18

    设计总体方案,构建、绘制流程框图,编写代码,上机调试。

    3

    2014.12.18~2014.12.19

    测试程序,优化代码,增强功能,撰写设计报告。

    4

    2014.12.20~2014.12.21

    提交软件代码、设计报告,参加答辩,根据教师反馈意见,修改、完善设计报告。

    指导教师(签章):

    年 月 日

    摘要:

    磁盘是外设中一个很常用的部分,所以,对磁盘数据的寻道时间的长短可以直接影响机器的整体运行速度的快慢。本设计为一个模拟磁盘调度算法的磁盘调度模拟系统,能够模拟先来先服务(FCFS)算法、最短寻道时间(SSTF)算法、电梯(SCAN)算法、环形扫描(C_SCAN)算法及N_SCAN算法五个磁盘调度算法,输入为一组作业的磁道请求,输出为按选择的算法执行时的磁头移动轨迹。其中,先来先服务(FCFS)算法、最短寻道时间(SSTF)算法、电梯(SCAN)算法为基本算法,环形扫描(C_SCAN)算法及N_SCAN算法为扩展算法。

    关键字:磁盘调度;模拟;算法;选择;执行;

    目录

    TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc406751471" 1 磁盘调度算法的基本概念 PAGEREF _Toc406751471 \h 1

    HYPERLINK \l "_Toc406751472" 2 主要算法分析 PAGEREF _Toc406751472 \h 2

    HYPERLINK \l "_Toc406751473" 2.1 先来先服务算法(FCFS) PAGEREF _Toc406751473 \h 2

    HYPERLINK \l "_Toc406751474" 2.2 最短寻道时间优先算法(SSTF) PAGEREF _Toc406751474 \h 2

    HYPERLINK \l "_Toc406751475" 2.3 扫描算法(SCAN) PAGEREF _Toc406751475 \h 2

    HYPERLINK \l "_Toc406751476" 3 各算法的流程图 PAGEREF _Toc406751476 \h 3

    HYPERLINK \l "_Toc406751477" 4调试分析及测试结果 PAGEREF _Toc406751477 \h 5

    HYPERLINK \l "_Toc406751478" 4.1 运行结果 PAGEREF _Toc406751478 \h 5

    HYPERLINK \l "_Toc406751479" 4.2 程序代码 PAGEREF _Toc406751479 \h 7

    HYPERLINK \l "_Toc406751480" 总 结 PAGEREF _Toc406751480 \h 12

    HYPERLINK \l "_Toc40675148

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,083
精华内容 1,233
热门标签
关键字:

操作系统磁盘调度算法实验报告