操作系统磁盘调度算法实验报告及代码
操作系统磁盘调度算法试验报告及代码

华南农业大学信息(软件)学院《操作系统分析与设讣实习》成绩单开设时间:2014学年笫一学期•程序设计水平优口良口中口差口语•程序运行效果及正确性优口良口中口差口•课程设计报告结构清晰优口良口中口差口•报告中总结和分析详尽优口良口中口差口教师签名111、需求分析:(1)输入的形式和输入值的范围:在文本框输入序列长度,输入值为int类型(2)输出的形式:输出每种磁盘调度算法的服务序列(3)程序所能达到的功能:模拟实现FCFS、SSTF、电梯LOOK、C-SCAN算法,并计算及比较磁头移动道数。
测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
输入磁道范围(Tiooo输入所选磁道个数0^1000选择算法广42、概要设计:主程序流程图:3、详细设计:先来先服务算法(FCFS):按先来后到次序服务,未作优化。
最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。
采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回地移动。
先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。
最短寻道时间优先算法(SSTF):最短寻找时间优先调度算法总是从等待访问者中挑选寻找时间最短的那个请求先执行的,而不管访问者到来的先后次序。
与先来先服务、算法比较,大幅度地减少了寻找时间,因而缩短了为各访问者请求服务的平均时间,也就提高了系统效率。
但最短查找时间优先(SSTF)调度,FCFS会引起读写头在盘面上的大范围移动,SSTF查找距离磁头最短(也就是查找时间最短)的请求作为下一次服务的对象。
SSTF查找模式有高度局部化的倾向,会推迟一些请求的服务,其至引起无限拖延(又称饥饿)。
扫描算法(SCAN):SCAN算法乂称电梯调度算法。
SCAN算法是磁头前进方向上的最短查找时间优先算法,它排除了磁头在盘面局部位置上的往复移动,SCAN算法在很大程度上消除了SSTF 算法的不公平性,但仍有利于对中间磁道的请求。
磁盘调度操作系统实验报告

磁盘调度操作系统实验报告一、实验目的:本次实验主要目的是通过模拟实现磁盘调度算法,加深对操作系统磁盘调度原理的理解,并学会使用操作系统磁盘调度算法解决实际问题。
二、实验内容:1.磁盘调度算法原理分析:磁盘调度算法是操作系统中的重要组成部分,它的任务是合理安排磁盘上数据的存取顺序,以提高磁盘的效率。
常见的磁盘调度算法有先来先服务(FCFS)、最短寻道时间优先(SSTF)、电梯算法(SCAN)等。
2.模拟实现磁盘调度算法:本实验选择最短寻道时间优先算法(SSTF)作为示例进行模拟实现。
SSTF算法的原理是优先选择离当前磁头位置最近的磁道进行访问,以减少磁头移动时间。
实验步骤:1.根据实际情况,创建一个磁道队列,记录需要访问的磁道序号。
2.初始化磁盘的起始位置和访问队列。
3.对访问队列进行排序,按照磁头当前位置到磁道的距离从小到大排列。
4.根据排序后的队列顺序,依次访问磁道,并记录磁头移动的距离。
5.计算平均寻道长度。
三、实验结果分析:通过模拟实现SSTF磁盘调度算法,我们获得了磁头对每个磁道的访问顺序和总共的磁头移动距离。
根据实验结果,我们可以发现SSTF算法相对于其他算法具有一定的优势。
在实际应用中,根据不同的实际情况,可以选择合适的磁盘调度算法以优化磁盘的访问效率。
四、实验总结:通过本次实验,我们对磁盘调度算法的原理和实现有了更深入的了解。
磁盘调度算法作为操作系统中一个重要的模块,对提高磁盘的读写效率起着重要的作用。
在实际应用中,我们需要根据具体问题选择合适的磁盘调度算法,以达到最优的访问效果。
磁盘调度算法及代码的实现课程设计报告

课程设计报告《计算机操作系统》课程设计题目:磁盘调度算法目录1.需求分析 (01)2. 总体设计及分类简介 (01)1)先来先服务(FCFS)算法 (01)2)最短寻道时间优先(SSTF)算法 (01)3)扫描调度(SCAN)算法 (01)4)循环扫描(C-SCAN)算法 (01)3.课程设计目的 (01)4.课程设计要求 (02)5.详细设计及算法流程图 (02)1)总流程图 (02)2)先来先服务(FCFS)算法流程图 (03)3)最短寻道时间优先(SSTF)算法流程图 (04)4)扫描调度(SCAN)算法流程图 (05)5)循环扫描(C-SCAN)算法流程图 (06)6.课程设计具体步骤 (07)1)定义函数部分主要代码 (07)2)先来先服务(FCFS)算法部分主要代码 (07)3)最短寻道时间优先(SSTF)算法部分主要代码 (07)4)扫描调度(SCAN)算法部分主要代码 (09)5)循环扫描(C-SCAN)算法部分主要代码 (09)7.课程设计结果显示 (10)1)先来先服务(FCFS)算法测试结果 (10)2)最短寻道时间优先(SSTF)算法测试结果 (11)3)扫描调度(SCAN)算法测试结果 (12)4)循环扫描(C-SCAN)算法测试结果 (13)8.课程设计总结 (14)9.心得体会 (15)10.参考资料 (15)磁盘调度算法一.需求分析编译程序运用磁盘的四种调度算法实现对磁盘的调度,四种算法分别为先来先服务(FCFS)算法,最短寻道时间优先(SSTF)算法,扫描调度(SCAN)算法,循环扫描(C-SCAN)算法。
二.总体设计及分类简介磁盘调度中常用的有四种算法,功能分别如下:1.先来先服务(FCFS)算法。
即先来的请求先被响应。
FCFS策略看起来似乎是相当"公平"的,但是当请求的频率过高的时候FCFS策略的响应时间就会大大延长。
FCFS策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。
操作系统磁盘调度算法实验报告及代码

操作系统磁盘调度算法实验报告及代码一、实验目的通过实验掌握磁盘调度算法的实现过程,了解各种不同磁盘调度算法的特点和优缺点,并比较它们的性能差异。
二、实验原理磁盘调度是操作系统中的重要内容,其主要目的是提高磁盘的利用率和系统的响应速度。
常见的磁盘调度算法有:FCFS(先来先服务)、SSTF (最短寻道时间)、SCAN(扫描)、C-SCAN(循环扫描)等。
三、实验过程1.编写代码实现磁盘调度算法首先,我们需要定义一个磁盘请求队列,其中存放所有的IO请求。
然后,根据所选的磁盘调度算法,实现对磁盘请求队列的处理和IO请求的调度。
最后,展示运行结果。
以FCFS算法为例,伪代码如下所示:```diskQueue = new DiskQueue(; // 创建磁盘请求队列while (!diskQueue.isEmpty()request = diskQueue.dequeue(; // 取出队列头的IO请求//处理IO请求displayResult(; // 展示运行结果```2.运行实验并记录数据为了验证各种磁盘调度算法的性能差异,我们可以模拟不同的场景,例如,随机生成一批磁盘IO请求,并使用不同的磁盘调度算法进行处理。
记录每种算法的平均响应时间、平均等待时间等指标。
3.撰写实验报告根据实验数据和结果,撰写实验报告。
实验报告通常包括以下内容:引言、实验目的、实验原理、实验步骤、实验结果、实验分析、结论等。
四、实验结果与分析使用不同的磁盘调度算法对磁盘IO请求进行处理,得到不同的实验结果。
通过对比这些结果,我们可以看出不同算法对磁盘IO性能的影响。
例如,FCFS算法对于请求队列中的请求没有排序,可能会导致一些请求等待时间过长。
而SSTF算法通过选择离当前磁道最近的请求进行处理,能够减少平均寻道时间,提高磁盘性能。
五、实验总结通过本次实验,我们学习了操作系统中磁盘调度算法的原理和实现过程。
不同的磁盘调度算法具有不同的优缺点,我们需要根据实际情况选择合适的算法。
操作系统实验报告—磁盘调度算法

操作系统实验报告—磁盘调度算法操作系统实验报告实验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) {a[j+1] = arr[i]; j++; } else {b[k+1] = arr[i]; k++; } }printf(\访问序列:\\n\); for (i = 1; i 0; i--) { printf(\, b[i]); }sum = ((a[j]-100)*2+(100- b[1]))/15;printf(\平均寻道长度:%d\, sum); }int main {int arr[15] = { 0 }; int *ret=Init(arr); two_part(ret); getchar ; return 0;}4运行结果:五、实验小结通过本次实验,我对scan算法更加深入理解,用C语言模拟电梯调度算法,实现对磁盘的驱动调度,这个相比前两个实验实现起来相对简单,理解了算法实现起来尤为简单,程序敲出来之后没有错误,可直接运行,结果验证也无误。
《操作系统》实验六磁盘调度报告

《操作系统》实验六磁盘调度报告磁盘调度是指操作系统对存储在磁盘中的数据进行管理和调度,以提高磁盘的利用率和系统的性能。
在实验六中,我们将学习和实现几种经典的磁盘调度算法,并通过实验比较它们的性能。
本次实验中,我们实现了以下几种磁盘调度算法:先来先服务(FCFS)、最短寻道时间优先(SSTF)、电梯算法(SCAN)和循环扫描(C-SCAN)。
下面将对这几种算法进行具体的介绍和分析。
首先是先来先服务算法(FCFS)。
该算法按照请求的顺序进行磁盘访问,先到达的请求先被服务。
该算法实现简单,但是它无法根据磁盘的物理布局情况进行优化,因此可能出现不连续访问磁盘的情况,导致磁盘的寻道时间增加。
实验结果显示,在磁盘请求序列比较随机的情况下,FCFS算法的性能较差。
第二种算法是最短寻道时间优先算法(SSTF)。
该算法选择与当前磁头位置最近的磁道进行访问,以减少寻道时间。
实验结果显示,SSTF算法在磁盘请求序列比较随机的情况下,相较于FCFS算法,可以有效地减少寻道时间。
然而,当一些磁道频繁被请求时,SSTF算法会优先访问该磁道,导致其他磁道的请求被延迟,出现饥饿现象。
第三种算法是电梯算法(SCAN)。
该算法模拟电梯的运行过程,在一个方向上依次访问磁道,直到到达磁盘的最边缘,然后改变方向继续访问。
实验结果显示,SCAN算法可以很好地优化磁盘访问的顺序,减少寻道时间。
但是,SCAN算法可能导致一些请求在磁盘的一侧永远得不到服务,造成饥饿现象。
最后是循环扫描算法(C-SCAN)。
该算法和SCAN算法类似,不同之处是C-SCAN算法在到达磁盘最边缘后,直接返回到磁道的起始位置继续扫描。
实验结果显示,C-SCAN算法可以减少饥饿现象,但是可能出现磁盘一侧被连续访问导致其他区域的访问不均衡。
综上所述,不同的磁盘调度算法在不同的应用场景下有不同的性能表现。
在磁盘请求序列比较随机的情况下,SSTF算法能够最大程度地减少寻道时间。
磁盘调度算法
磁盘调度算法As a person, we must have independent thoughts and personality.操作系统实验报告哈尔滨工程大学计算机科学与技术学院一、实验概述1. 实验名称磁盘调度算法2.实验目的(1)通过学习EOS实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机。
(2)观察EOS实现的FCFS、SSTF和 SCAN磁盘调度算法,了解常用的磁盘调度算法。
(3)编写CSCAN和N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。
3. 实验类型验证,设计4. 实验内容(1)准备实验(2)验证先来先服务(FCFS)磁盘调度算法(3)验证最短寻道时间优先(SSTF)磁盘调度算法(4)验证SSTF算法造成的线程“饥饿”现象()验证扫描(SCAN)磁盘调度算法()验证SCAN 算法能够解决“饥饿”现象(6)改写SCAN调度算法二、实验环境EOS操作系统与IDE环境组成的“操作系统集成实验环境OS Lab”。
三、实验过程(一)实验问题及解答1.实验指导验证先来先服务(FCFS)磁盘调度算法,要求请给出在“输出”窗口中的结果。
答:输出结果复制如下:制作软盘镜像...正在启动 Virtual PC...开始调试...****** Disk schedule start working ******Start Cylinder: 10TID: 31 Cylinder: 8 Offset: 2 -TID: 32 Cylinder: 21 Offset: 13 +TID: 33 Cylinder: 9 Offset: 12 -TID: 34 Cylinder: 78 Offset: 69 +TID: 35 Cylinder: 0 Offset: 78 -TID: 36 Cylinder: 41 Offset: 41 +TID: 37 Cylinder: 10 Offset: 31 -TID: 39 Cylinder: 12 Offset: 55 -TID: 40 Cylinder: 10 Offset: 2 -Total offset: 360 Transfer times: 10 Average offset: 362.实验指导验证验证最短寻道时间优先(SSTF)磁盘调度算法,要求请给出在“输出”窗口中的结果。
磁盘调度的实验报告(3篇)
第1篇一、实验目的1. 理解磁盘调度算法的基本原理和重要性。
2. 掌握几种常见的磁盘调度算法,包括先来先服务(FCFS)、最短寻道时间优先(SSTF)、扫描(SCAN)和循环扫描(C-SCAN)算法。
3. 通过模拟实验,分析不同磁盘调度算法的性能差异。
4. 优化磁盘调度策略,提高磁盘访问效率。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 磁盘调度算法模拟库: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)6.总结 (7)1.课程设计目的1.1编写目的本课程设计的目的是通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解。
2.课程设计内容2.1设计内容系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。
1、先来先服务算法(FCFS)这是一种比较简单的磁盘调度算法。
它根据进程请求访问磁盘的先后次序进行调度。
此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。
此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。
2、最短寻道时间优先算法(SSTF)该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。
其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。
在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。
3、扫描算法(SCAN)扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。
例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。
磁盘调度实验报告总结(3篇)
第1篇一、实验背景随着计算机技术的发展,磁盘作为计算机系统中重要的存储设备,其性能对系统整体性能的影响日益显著。
磁盘调度算法是操作系统设计中的重要组成部分,其目的是优化磁盘I/O操作,提高系统性能。
本次实验通过对几种常见的磁盘调度算法进行模拟和分析,旨在加深对磁盘调度原理的理解,并提高算法分析能力。
二、实验目的1. 了解磁盘调度算法的基本原理和常用算法;2. 比较分析不同磁盘调度算法的性能;3. 培养编程能力和算法分析能力。
三、实验内容本次实验主要涉及以下几种磁盘调度算法:1. 先来先服务(FCFS)算法;2. 最短寻道时间优先(SSTF)算法;3. 扫描算法(SCAN);4. 循环扫描算法(C-SCAN)。
实验过程中,我们首先准备一组模拟的磁盘请求序列,然后使用提供的代码实现上述四种磁盘调度算法,并计算各种情况下的寻道时间。
为了进行比较,我们尝试了不同的初始磁头位置和磁盘请求序列,观察寻道时间的变化。
四、实验步骤1. 准备磁盘请求序列:手动生成或编写程序生成一组磁盘请求序列;2. 创建实验主体:使用代码实现四种磁盘调度算法,并计算各种情况下的寻道时间;3. 改变参数进行比较:尝试不同的初始磁头位置和不同的磁盘请求序列,观察寻道时间的变化;4. 性能比较和分析:比较不同算法的寻道时间,分析它们在不同情况下的表现,找出它们的优缺点。
五、实验结果与分析1. FCFS算法:FCFS算法是最简单的磁盘调度算法,其优点是公平、算法简单,但缺点是没有对寻道算法进行优化,平均寻道时间可能比较长。
2. SSTF算法:SSTF算法选择距离磁头最近的请求先执行,从而减少了寻道时间。
但SSTF算法不能保证平均寻道时间最短。
3. SCAN算法:SCAN算法优先考虑磁头当前的移动方向,然后是访问的磁道和当前磁道的距离。
SCAN算法在磁头移动过程中,对磁道进行扫描,直到磁头到达一个方向上的最后一个请求,然后改变方向继续扫描。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华南农业大学信息(软件)学院
《操作系统分析与设计实习》成绩单
开设时间:2014学年第一学期
评价指标:
题目内容和要求完成情况优□良□中□差□
对算法原理的理解程度优□良□中□差□
程序设计水平优□良□中□差□
程序运行效果及正确性优□良□中□差□
课程设计报告结构清晰优□良□中□差□
报告中总结和分析详尽优□良□中□差□
一、需求分析:
(1)输入的形式和输入值的范围:
在文本框输入序列长度,输入值为int类型
(2)输出的形式:
输出每种磁盘调度算法的服务序列
(3)程序所能达到的功能:
模拟实现FCFS、SSTF、电梯LOOK、C-SCAN 算法,并计算及比较磁头移动道数。
测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
输入所选磁道个数0~1000
选择算法1~4
二、概要设计:
主程序流程图:
三、详细设计:
先来先服务算法(FCFS):
按先来后到次序服务,未作优化。
最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。
采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回地移动。
先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。
最短寻道时间优先算法(SSTF):
最短寻找时间优先调度算法总是从等待访问者中挑选寻找时间最短的那个请求先执行的,而不管访问
者到来的先后次序。
与先来先服务、算法比较,大幅度地减少了寻找时间,因而缩短了为各访问者请求服务的平均时间,也就提高了系统效率。
但最短查找时间优先(SSTF)调度,FCFS会引起读写头在盘面上的大范围移动,SSTF查找距离磁头最短(也就是查找时间最短)的请求作为下一次服务的对象。
SSTF查找模式有高度局部化的倾向,会推迟一些请求的服务,甚至引起无限拖延(又称饥饿)。
扫描算法(SCAN):
SCAN 算法又称电梯调度算法。
SCAN算法是磁头前进方向上的最短查找时间优先算法,它排除了磁头在盘面局部位置上的往复移动,SCAN算法在很大程度上消除了SSTF算法的不公平性,但仍有利于对中间磁道的请求。
“电梯调度”算法是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱访问者,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。
但是,“电梯调度”算法在实现时,不仅要记住读写磁头的当前位置,还必须记住移动臂的当前前进方向。
循环扫描(C-SCAN):
循环扫描 CSCAN是为了减少 SCAN 算法造成的某些进程的请求被严重推迟,CSCAN 算法规定磁头单向移动。
函数调用关系图:
四、调试分析:
(1)调试过程中遇到的问题是如何解决的以及对设计与实现的讨论和分析;
通过对每一行的输出判断问题出现在哪里,然后把出问题的地方缩小到一定范围,然后解决问题,如若解决不出则上网查询,再不行就咨询同学。
设计主要分为界面设计和算法设计,界面设计部分并没有进行过多的改进,算法部分SSTF 算法实现的比较复杂,时间复杂度较高。
(2)算法的时间复杂性(包括基本操作和其他算法的时间复杂性的分析)和改进设想;
FIFO算法经历一重循环,时间复杂度为O(n),算法比较简单;
SSTF算法经历二重循环,时间复杂度为O(n^2),算法较为复杂
SCAN和CSCAN算法含多个一重循环,时间复杂度为O(n),动态数组存储服务序列;
(3)设计过程的经验和体会;
设计过程必须要考虑时间复杂度,过高的时间复杂度会导致程序执行效率低下。
必须要进行结构化设计,各个模块要很清晰的体现,能在代码中找到相关模块的代码,这样才便于程序的维护和调试。
(4)实现过程中出现的主要问题及解决方法。
主要问题是SSTF算法的设计。
解决方法是上网查询SSTF算法的代码,学习其中的算法思想,然后运用到自己的代码中去。
五、运行结果:
输入磁道范围、输入所选磁道个数、选择算法:
测试与运行结果:输出请求序列、平均寻道时间:
六、总结:
通过这次的操作系统课程设计,我懂得了许多,首先是让我对操作系统磁盘调度策略有了更加深刻的认识,自己动手操作比光看书能更加了解磁盘调度的策略和原理,同时对磁盘调度的四种算法——先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、有了更深刻的理解和掌握,使我能够为磁盘调度选择适当的算法,提高CPU工作效率。
设计过程中遇到的困难在老师和同学的帮助下顺利解决并通过了验收,我深刻认识到算法的逻辑性对程序的重要影响,算法的准确度对程序运行结果的重要影响,这对我以后在操作系统的学习中有极大帮助。
也增强了我写代码的能力,尤其是设计算法有了进步,知道了时间复杂度的重要性。
由于这次的课程设计是单人做的,所以也增强了独立做程序的能力。
不过,通过这次课程设计,我也了解到自己有很多不足,比如在设计界面方面明显经验不足,许多地方都需要上网查询,以至于界面的简陋,代码也不够工整明了。
总的来说,这次课程设计不仅提升了自己的知识和能力,还让自己知道了自己的许多不足之处。
七、源代码:
#include<>
#include<iostream>
#include<>
#include<>
using namespace std;
#define maxsize 1000
FCFS ┃" << endl;
cout << "┠─────────────────┨" << endl;
cout << "┃ 2. SSTF ┃" << endl;
cout << "┠─────────────────┨" << endl;
cout << "┃ 3. SCAN ┃" << endl;
cout << "┠─────────────────┨" << endl;
cout << "┃ 4. C-SCAN ┃" << endl;
cout << "┠─────────────────┨" << endl;
cout << "┃ 5. EXIT ┃" << endl;
cout << "┗━━━━━━━━━━━━━━━━━┛" << endl; B:
cout << "请选择算法:";
C:
cin >> str;
a = decide(str);
if (a == 0)
{
cout << "输入错误,请重试!!!" << endl;
goto C;
}
else
c = trans(str, a);
if (c >= 6)
{
cout << "输入错误,请重试!!!" << endl;
goto B;
}
switch (c)
{
case 1:
FCFS(cidao, n);
break;
case 2:
SSTF(cidao, n);
break;
case 3:
SCAN(cidao, n);
break;
case 4:
CSCAN(cidao, n);
break;
case 5:
exit(0);
}
}
}。