6.磁盘调度实验报告

合集下载

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

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

磁盘调度操作系统实验报告一、实验目的:本次实验主要目的是通过模拟实现磁盘调度算法,加深对操作系统磁盘调度原理的理解,并学会使用操作系统磁盘调度算法解决实际问题。

二、实验内容:1.磁盘调度算法原理分析:磁盘调度算法是操作系统中的重要组成部分,它的任务是合理安排磁盘上数据的存取顺序,以提高磁盘的效率。

常见的磁盘调度算法有先来先服务(FCFS)、最短寻道时间优先(SSTF)、电梯算法(SCAN)等。

2.模拟实现磁盘调度算法:本实验选择最短寻道时间优先算法(SSTF)作为示例进行模拟实现。

SSTF算法的原理是优先选择离当前磁头位置最近的磁道进行访问,以减少磁头移动时间。

实验步骤:1.根据实际情况,创建一个磁道队列,记录需要访问的磁道序号。

2.初始化磁盘的起始位置和访问队列。

3.对访问队列进行排序,按照磁头当前位置到磁道的距离从小到大排列。

4.根据排序后的队列顺序,依次访问磁道,并记录磁头移动的距离。

5.计算平均寻道长度。

三、实验结果分析:通过模拟实现SSTF磁盘调度算法,我们获得了磁头对每个磁道的访问顺序和总共的磁头移动距离。

根据实验结果,我们可以发现SSTF算法相对于其他算法具有一定的优势。

在实际应用中,根据不同的实际情况,可以选择合适的磁盘调度算法以优化磁盘的访问效率。

四、实验总结:通过本次实验,我们对磁盘调度算法的原理和实现有了更深入的了解。

磁盘调度算法作为操作系统中一个重要的模块,对提高磁盘的读写效率起着重要的作用。

在实际应用中,我们需要根据具体问题选择合适的磁盘调度算法,以达到最优的访问效果。

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

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

操作系统磁盘调度算法实验报告及代码一、实验目的通过实验掌握磁盘调度算法的实现过程,了解各种不同磁盘调度算法的特点和优缺点,并比较它们的性能差异。

二、实验原理磁盘调度是操作系统中的重要内容,其主要目的是提高磁盘的利用率和系统的响应速度。

常见的磁盘调度算法有: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算法通过选择离当前磁道最近的请求进行处理,能够减少平均寻道时间,提高磁盘性能。

五、实验总结通过本次实验,我们学习了操作系统中磁盘调度算法的原理和实现过程。

不同的磁盘调度算法具有不同的优缺点,我们需要根据实际情况选择合适的算法。

《操作系统》实验六磁盘调度报告

《操作系统》实验六磁盘调度报告

《操作系统》实验六磁盘调度报告磁盘调度是指操作系统对存储在磁盘中的数据进行管理和调度,以提高磁盘的利用率和系统的性能。

在实验六中,我们将学习和实现几种经典的磁盘调度算法,并通过实验比较它们的性能。

本次实验中,我们实现了以下几种磁盘调度算法:先来先服务(FCFS)、最短寻道时间优先(SSTF)、电梯算法(SCAN)和循环扫描(C-SCAN)。

下面将对这几种算法进行具体的介绍和分析。

首先是先来先服务算法(FCFS)。

该算法按照请求的顺序进行磁盘访问,先到达的请求先被服务。

该算法实现简单,但是它无法根据磁盘的物理布局情况进行优化,因此可能出现不连续访问磁盘的情况,导致磁盘的寻道时间增加。

实验结果显示,在磁盘请求序列比较随机的情况下,FCFS算法的性能较差。

第二种算法是最短寻道时间优先算法(SSTF)。

该算法选择与当前磁头位置最近的磁道进行访问,以减少寻道时间。

实验结果显示,SSTF算法在磁盘请求序列比较随机的情况下,相较于FCFS算法,可以有效地减少寻道时间。

然而,当一些磁道频繁被请求时,SSTF算法会优先访问该磁道,导致其他磁道的请求被延迟,出现饥饿现象。

第三种算法是电梯算法(SCAN)。

该算法模拟电梯的运行过程,在一个方向上依次访问磁道,直到到达磁盘的最边缘,然后改变方向继续访问。

实验结果显示,SCAN算法可以很好地优化磁盘访问的顺序,减少寻道时间。

但是,SCAN算法可能导致一些请求在磁盘的一侧永远得不到服务,造成饥饿现象。

最后是循环扫描算法(C-SCAN)。

该算法和SCAN算法类似,不同之处是C-SCAN算法在到达磁盘最边缘后,直接返回到磁道的起始位置继续扫描。

实验结果显示,C-SCAN算法可以减少饥饿现象,但是可能出现磁盘一侧被连续访问导致其他区域的访问不均衡。

综上所述,不同的磁盘调度算法在不同的应用场景下有不同的性能表现。

在磁盘请求序列比较随机的情况下,SSTF算法能够最大程度地减少寻道时间。

磁盘调度实验报告

磁盘调度实验报告

实验五磁盘调度实验学时:2学时实验类型:设计实验要求:必修一、实验目的:磁盘是高速、大容量、旋转型、可直接存取的存储设备。

它作为计算机系统的辅助存储器,担负着繁重的输入输出工作,在现代计算机系统中往往同时会有若干个要求访问磁盘的输入输出要求。

系统可采用一种策略,尽可能按最佳次序执行访问磁盘的请求。

由于磁盘访问时间主要受寻道时间T的影响,为此需要采用合适的寻道算法,以降低寻道时间。

本实验要求学生模拟设计一个磁盘调度程序,观察调度程序的动态运行过程。

通过实验让学生理解和掌握磁盘调度的职能。

二、实验内容:模拟电梯调度算法,对磁盘进行移臂操作三、提示及要求:1、假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。

2、磁盘是可供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。

当有进程在访问某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作结束。

当有多个进程提出输入输出请求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。

为此设置“驱动调度”进程。

3、由于磁盘与处理器是并行工作的,所以当磁盘在为一个进程服务时,占有处理器的其它进程可以提出使用磁盘(这里我们只要求访问磁道),即动态申请访问磁道,为此设置“接受请求”进程。

4、为了模拟以上两个进程的执行,可以考虑使用随机数来确定二者的允许顺序,程序结构图参考附图:5、“接受请求”进程建立一张“进程请求I/O”表,指出等待访问磁盘的进程要求访问的磁道,表的格式如下:6、“磁盘调度”的功能是查“请求I/O”表,当有等待访问的进程时,按电梯调度算法(SCAN算法)从中选择一个等待访问的进程,按其指定的要求访问磁道。

SCAN算法参考课本第九章。

算法模拟框图略。

7、附图中的“初始化”工作包括:初始化“请求I/O”表,设置置当前移臂方向;当前磁道号。

并且假设程序运行前“请求I/O”表中已有若干进程(4~8个)申请访问相应磁道。

磁盘调度实验报告实验总结

磁盘调度实验报告实验总结

磁盘调度实验报告实验总结磁盘调度是操作系统中的一个重要概念,它是指操作系统通过合理的算法和策略来管理和调度磁盘上的数据访问请求。

磁盘调度的目的是提高磁盘的读写效率,减少磁盘访问的时间开销,从而提高系统的整体性能。

本次实验主要对比了三种常见的磁盘调度算法:先来先服务(FCFS)、最短寻道时间优先(SSTF)和电梯算法(SCAN)。

通过对比实验结果分析各种算法的性能表现和特点,并给出相应的实验总结。

实验总结如下:一、先来先服务(FCFS)算法FCFS算法是一种简单直接的磁盘调度算法,它按照请求的顺序依次进行访问。

实验结果表明,FCFS算法的平均寻道时间较高,且易产生长期等待现象。

这是因为FCFS算法无法优化磁头的移动顺序,只能按照请求的先后顺序安排磁道的访问,从而导致了较差的性能表现。

二、最短寻道时间优先(SSTF)算法SSTF算法根据当前磁头位置选择距离最近的请求进行服务。

实验结果表明,SSTF算法的平均寻道时间明显优于FCFS算法,且缓解了长期等待现象。

这是因为SSTF算法可以选择离当前磁头位置最近的请求,从而减少了寻道时间,提高了磁道的访问效率。

三、电梯算法(SCAN)算法SCAN算法也称为电梯算法,它模拟了电梯运行的原理。

SCAN算法先将磁头移动到一个极限位置,然后沿着一个方向依次访问请求,直到到达另一个极限位置,再改变方向重复上述过程。

实验结果表明,SCAN算法的平均寻道时间与SSTF 算法相当,且具有较好的均衡性。

这是因为SCAN算法可以使得磁头在磁盘上的行进路线保持平衡,避免了过多的磁道之间的跳跃,从而提高了磁道的访问效率。

综上所述,不同的磁盘调度算法具有不同的性能表现和特点。

在实际应用中,需要根据具体的场景和需求选择合适的磁盘调度算法。

一般而言,SSTF算法和SCAN算法在性能上表现较好,可以提高磁盘的读写效率,减少寻道时间开销。

而FCFS算法在实际应用中较为有限,对于长期等待和寻道时间要求较高的场景不太适用。

实验报告六 磁盘调度算法

实验报告六  磁盘调度算法

实验报告六磁盘调度算法班级:软技2班学号:201467003084 姓名:刘道林一.实验内容:熟悉磁盘的结构以及磁盘的驱动调度算法的模拟,编程实现简单常用的磁盘驱动调度算法先来先服务(FIFO)、电梯调度算法、最短寻找时间优先算法、扫描(双向扫描)算法、单向扫描(循环扫描)算法等。

编程只需实现两个算法。

题目可以选取教材或习题中的相关编程实例。

编程语言建议采用c/c++或Java。

模拟程序鼓励采用随机数技术、动态空间分配技术,有条件的最好能用图形界面展现甚至用动画模拟。

实验性质:验证型。

二.实验目的和要求1)掌握使用一门语言进行磁盘驱动调度算法的模拟;2)编写程序将磁盘驱动调度算法的过程和结果能以较简明直观的方式展现出来。

三.实验原理、方法和步骤1. 实验原理磁盘驱动调度对磁盘的效率有重要影响。

磁盘驱动调度算法的好坏直接影响辅助存储器的效率,从而影响计算机系统的整体效率。

常用的磁盘驱动调度算法有:最简单的磁盘驱动调度算法是先入先出(FIFO)法。

这种算法的实质是,总是严格按时间顺序对磁盘请求予以处理。

算法实现简单、易于理解并且相对公平,不会发生进程饿死现象。

但该算法可能会移动的柱面数较多并且会经常更换移动方向,效率有待提高。

最短寻找时间优先算法:总是优先处理最靠近的请求。

该算法移动的柱面距离较小,但可能会经常改变移动方向,并且可能会发生进程饥饿现象。

电梯调度:总是将一个方向上的请求全部处理完后,才改变方向继续处理其他请求。

扫描(双向扫描):总是从最外向最里进行扫描,然后在从最里向最外扫描。

该算法与电梯调度算法的区别是电梯调度在没有最外或最里的请求时不会移动到最外或最里柱面,二扫描算法总是移到最外、最里柱面。

两端的请求有优先服被务的迹象。

循环扫描(单向扫描):从最外向最里进行柱面请求处理,到最里柱面后,直接跳到最外柱面然后继续向里进行处理。

该算法与扫描算法的区别是,回来过程不处理请求,基于这样的事实,因为里端刚被处理。

磁盘调度算法实验设计报告

磁盘调度算法实验设计报告

实验五磁盘调度算法班级: xxxxxxxxxxxx姓名:xxxxxxxx学号:xxxxxxxxxxxxxxxxxxxxx上级日期:2018年11月成绩:___________________________一、实验目的:通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易理解,使磁盘调度的特点更简单明了,加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解二、实验内容1、程序流程图模块调用关系图模块程序流程图FCFS算法(先来先服务)流程图SSTF(最短寻道时间优先算法)流程图SCAN算法(扫描算法)流程图CSCAN算法(循环扫描算法)流程图2、程序源码1.#include<stdio.h>2.#include<stdlib.h>3.#include<iostream>4.#include<math.h>ing namespace std;6.#define maxsize 10007./*********************判断输入数据是否有效**************************/8.int decide(char str[]) //判断输入数据是否有效9.{10.int i = 0;11.while (str[i] != '\0')12. {13.if (str[i]<'0' || str[i]>'9')14. {15.return 0;16.break;17. }18. i++;19. }20.return i;21.}22./******************将字符串转换成数字***********************/23.int trans(char str[], int a) //将字符串转换成数字24.{25.int i;26.int sum = 0;27.for (i = 0; i<a; i++)28. {29. sum = sum + (int)((str[i] - '0')*pow(10, a - i - 1));30. }31.return sum;32.}33./*********************冒泡排序算法**************************/34.int *bubble(int cidao[], int m)35.{36.int i, j;37.int temp;38.for (i = 0; i<m; i++) //使用冒泡法按从小到大顺序排列39.for (j = i + 1; j<m; j++)40. {41.if (cidao[i]>cidao[j])42. {43. temp = cidao[i];44. cidao[i] = cidao[j];45. cidao[j] = temp;46. }47. }48. cout << "排序后的磁盘序列为:";49.for (i = 0; i<m; i++) //输出排序结果50. {51. cout << cidao[i] << " ";52. }53. cout << endl;54.return cidao;55.}56./*********************先来先服务调度算法************************/57.void FCFS(int cidao[], int m) //磁道号数组,个数为m58.{59.int now;//当前磁道号60.int sum = 0; //总寻道长度61.int j, i;62.int a;63.char str[100];64.float ave; //平均寻道长度65. cout << "磁盘请求序列为:";66.for (i = 0; i<m; i++) //按先来先服务的策略输出磁盘请求序列67. {68. cout << cidao[i] << " ";69. }70. cout << endl;71. cout << "请输入当前的磁道号:";72.B: cin >> str; //对输入数据进行有效性判断73. a = decide(str);74.if (a == 0)75. {76. cout << "输入数据的类型错误,请重新输入!" << endl;77.goto B;78. }79.else80. now = trans(str, a); //输入当前磁道号81. sum += abs(cidao[0] - now);82. cout << "磁盘扫描序列为:";83.for (i = 0; i<m; i++) //输出磁盘扫描序列84. {85. cout << cidao[i] << " ";86. }87.for (i = 0, j = 1; j<m; i++, j++) //求平均寻道长度88. {89. sum += abs(cidao[j] - cidao[i]);90. ave = (float)(sum) / (float)(m);91. }92. cout << endl;93. cout << "平均寻道长度:" << ave << endl;94.}95./**********************最短寻道时间优先调度算法********************/96.void SSTF(int cidao[], int m)97.{98.int k = 1;99.int now, l, r;100.int i, j, sum = 0;101.int a;102.char str[100];103.float ave;104. cidao = bubble(cidao, m); //调用冒泡排序算法排序105. cout << "请输入当前的磁道号:";106.C: cin >> str; //对输入数据进行有效性判断107. a = decide(str);108.if (a == 0)109. {110. cout << "输入数据的类型错误,请重新输入!" << endl;111.goto C;112. }113.else114. now = trans(str, a); //输入当前磁道号115.if (cidao[m - 1] <= now) //若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务116. {117. cout << "磁盘扫描序列为:";118.for (i = m - 1; i >= 0; i--)119. cout << cidao[i] << " ";120. sum = now - cidao[0];121. }122.if (cidao[0] >= now) //若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务123. {124. cout << "磁盘扫描序列为:";125.for (i = 0; i<m; i++)126. cout << cidao[i] << " ";127. sum = cidao[m - 1] - now;128. }129.if (now>cidao[0] && now<cidao[m - 1]) //若当前磁道号大于请求序列中最小者且小于最大者130. {131. cout << "磁盘扫描序列为:";132.while (cidao[k]<now) //确定当前磁道在已排的序列中的位置,后面的算法都用到了,可以直接复制后少量修改,节省时间。

磁盘调度的实验报告(3篇)

磁盘调度的实验报告(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算法在请求序列较长时性能更稳定,且磁头移动次数更少。

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

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

实验一磁盘调度算法实现一、实验目的本课程设计的目的是通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解。

二、实验内容系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCA)N。

2.1 先来先服务算法(FCFS )这是一种比较简单的磁盘调度算法。

它根据进程请求访问磁盘的先后次序进行调度。

此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。

此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。

2.2 最短寻道时间优先算法(SSTF )该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。

其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。

在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。

2.3 扫描算法(SCAN)扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。

例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。

这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。

这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。

由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。

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

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

操作系统磁盘调度实验报告一、实验目的:1.了解磁盘调度算法的基本原理;2.熟悉磁盘I/O的实验操作;3.掌握C语言程序编写的磁盘调度算法实现。

二、实验原理:磁盘调度是指操作系统为了提高磁盘I/O的效率而对磁盘请求进行排序和调度的过程。

常见的磁盘调度算法有FCFS(先来先服务)、SSTF (最短寻道时间优先)、SCAN(扫描)、C-SCAN(循环扫描)等。

本次实验中,我们将选择SSTF算法来对磁盘请求进行调度。

SSTF算法的基本思想是选择离当前磁头最近的磁道先进行访问。

三、实验环境:1. 操作系统:Windows 10;2. 开发工具:Visual Studio 2024四、实验步骤:1.创建C语言项目并添加源代码文件;2.实现磁盘调度算法的主要函数,包括判断方向函数、SSTF算法函数;3.在主函数中读取磁道请求,调用SSTF算法函数进行磁道调度;4.运行程序,观察磁道调度结果。

五、实验代码:```c#include<stdio.h>#include<stdlib.h>#include<limits.h>//定义磁盘请求的最大数量#define MAX_REQUEST 100//定义磁盘请求结构体typedef struct diskRequestint track; //磁道号int visited; //记录当前请求是否被访问过(0表示未访问,1表示已访问)} DiskRequest;//全局变量,用来记录磁盘请求的数量int n;//方向判断函数,若当前头部位置比目标位置小,则返回1;否则返回-1int determineDirection(int current, int target)if (current < target)return 1;elsereturn -1;//SSTF算法函数,使用SSTF算法将未被访问的磁道号按顺序调度//current: 当前磁头所在磁道号//requests: 磁盘请求数组void SSTF(int current, DiskRequest* requests)int visited = 0; //记录已访问的磁道数量int totalSeekTime = 0; //记录总寻道时间int direction = determineDirection(current,requests[0].track); //记录当前移动方向int next = current; //记录下一个要访问的磁道号//循环调度直到所有磁道访问完毕while (visited < n)int minSeekTime = INT_MAX; //记录最短寻道时间//遍历从当前位置开始的所有未被访问的磁道for (int i = 0; i < n; i++)if (!requests[i].visited)//计算当前未被访问的磁道与当前位置的距离int seekTime = abs(current - requests[i].track); if (seekTime < minSeekTime)minSeekTime = seekTime;next = requests[i].track;}}}//更新总寻道时间totalSeekTime += minSeekTime;//将当前访问的磁道标记为已访问for (int i = 0; i < n; i++)if (requests[i].track == next)requests[i].visited = 1;visited++;break;}}//更新当前位置current = next;}printf("SSTF Algorithm:\n");printf("Total Seek Time: %d\n", totalSeekTime);printf("Average Seek Time: %.2f\n", (float)totalSeekTime / n);int mainDiskRequest* requests; //磁盘请求数组int current; //当前磁头所在磁道号//读取输入,获取磁盘请求的数量和当前磁头所在的磁道号printf("Please enter the number of disk requests: ");scanf("%d", &n);printf("Please enter the current disk track: ");scanf("%d", &current);//动态分配内存给磁盘请求数组requests = (DiskRequest*)malloc(n * sizeof(DiskRequest));//读取磁盘请求的磁道号printf("Please enter the disk requests:\n");for (int i = 0; i < n; i++)scanf("%d", &requests[i].track);requests[i].visited = 0; //初始化磁道为未访问状态}//调用SSTF算法对磁盘请求进行调度SSTF(current, requests);//释放内存free(requests);return 0;```六、实验结果与分析:1.实验输入:```Please enter the number of disk requests: 5Please enter the current disk track: 50Please enter the disk requests:4560102030```2.实验输出:```SSTF Algorithm:Total Seek Time: 75Average Seek Time: 15.00```3.实验分析:根据实验输入,我们可以得知当前磁头的位置为50,磁盘请求的磁道号依次为45、60、10、20、30。

6.磁盘调度实验报告

6.磁盘调度实验报告

操作系统实验报告磁盘调度实验六:磁盘调度算法一.实验目的复习模拟实现一种磁盘调度算法,进一步加深对磁盘调度效率的理解。

二.实验属性该实验为设计性实验。

三.实验仪器设备及器材普通PC386以上微机四.实验要求本实验要求2学时完成。

本实验要求完成如下任务:(1)建立相关的数据结构,作业控制块、已分配分区及未分配分区(2)实现一个分区分配算法,如最先适应分配算法、最优或最坏适应分配算法(3)实现一个分区回收算法(4)给定一批作业/进程,选择一个分配或回收算法,实现分区存储的模拟管理实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。

实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。

五 .主要算法分析各个算法分析1.先来先服务算法(FCFS)先来先服务(FCFS)调度:按先来后到次序服务,未作优化。

最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。

例如,如果现在读写磁头正在50号柱面上执行输出操作,而等待访问者依次要访问的柱面为130、199、32、159、15、148、61、99,那么,当50号柱面上的操作结束后,移动臂将按请求的先后次序先移到130号柱面,最后到达99号柱面。

采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回地移动。

先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。

2.最短寻道时间优先算法(SSTF)最短寻找时间优先调度算法总是从等待访问者中挑选寻找时间最短的那个请求先执行的,而不管访问者到来的先后次序。

现在仍利用同一个例子来讨论,现在当50号柱面的操作结束后,应该先处理61号柱面的请求,然后到达32号柱面执行操作,随后处理15号柱面请求,后继操作的次序应该是99、130、148、159、199。

磁盘调度算法实验报告

磁盘调度算法实验报告

磁盘调度算法实验报告磁盘调度算法实验报告引言:磁盘调度算法是操作系统中的重要组成部分,它负责决定磁盘上数据的访问顺序,以提高磁盘的访问效率。

在本次实验中,我们对比了三种常见的磁盘调度算法:先来先服务(FCFS)、最短寻道时间优先(SSTF)和扫描(SCAN)算法。

通过对比实验结果,我们将分析不同算法的优缺点,并对其适用场景进行探讨。

实验过程:为了模拟磁盘调度算法在实际应用中的情况,我们使用了一个包含100个磁道的磁盘模型。

我们随机生成了一组磁道请求序列,并以此作为实验数据。

首先,我们使用FCFS算法对数据进行访问,记录下访问每个磁道所需的时间。

然后,我们分别使用SSTF和SCAN算法进行同样的操作,并记录下相应的访问时间。

实验结果:经过实验,我们得到了不同调度算法的访问时间数据。

在FCFS算法中,由于它按照请求的先后顺序进行访问,所以磁头需要频繁地在磁道之间移动,导致访问时间较长。

SSTF算法则根据当前磁头位置选择最近的磁道进行访问,因此其访问时间相对较短。

而SCAN算法则将磁头从一端移动到另一端,期间访问所有请求的磁道,这样可以减少磁头的移动次数,从而提高访问效率。

讨论与分析:从实验结果可以看出,不同的磁盘调度算法在不同的场景下有着不同的优势。

FCFS算法适用于请求较少、请求之间没有明显关联的情况。

因为它简单易实现,不需要额外的计算和判断,但在高负载情况下容易导致磁头抖动,降低整体性能。

SSTF算法适用于请求之间有明显关联的情况,因为它能够选择最近的磁道进行访问,减少了磁头的移动次数。

但是,当请求分布不均匀时,SSTF算法可能会导致某些磁道长时间得不到访问。

SCAN算法则适用于对整个磁盘进行扫描的场景,因为它能够在一个方向上连续访问多个磁道,减少了磁头的移动次数。

但是,SCAN算法可能会导致某些磁道长时间得不到访问,因此在请求分布不均匀的情况下,其性能可能会受到影响。

结论:通过本次实验,我们对比了三种常见的磁盘调度算法,并分析了它们的优缺点及适用场景。

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

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

实验一磁盘调度算法实现一、实验目的本课程设计的目的是通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解。

二、实验内容系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。

2.1先来先服务算法( FCFS )这是一种比较简单的磁盘调度算法。

它根据进程请求访问磁盘的先后次序进行调度。

此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。

此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。

2.2 最短寻道时间优先算法( SSTF )该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。

其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。

在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。

2.3 扫描算法( SCAN )扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。

例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。

这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。

这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。

由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。

磁盘调度算法的设计实验报告

磁盘调度算法的设计实验报告

磁盘调度算法的设计实验报告一、实验背景磁盘调度算法是操作系统中的重要内容之一,它的主要作用是优化磁盘的读写效率,提高系统的性能。

本次实验旨在通过设计不同的磁盘调度算法,比较它们在不同情况下的性能表现。

二、实验环境本次实验使用了Linux操作系统和C语言编程语言。

硬件环境为Intel Core i5处理器、4GB内存和500GB硬盘。

三、实验过程1. 先来看看什么是磁盘调度算法。

磁盘调度算法是指操作系统中用于管理磁盘I/O请求队列的算法。

常见的磁盘调度算法有FCFS(先来先服务)、SSTF(最短寻道时间优先)、SCAN(扫描)、LOOK(往返扫描)等。

2. 接下来我们分别对这些算法进行设计和实现,并进行性能测试。

3. 首先是FCFS算法。

FCFS算法就是按照请求到达时间的顺序进行服务,即先来先服务。

我们通过模拟生成一组随机数作为请求队列,然后计算出每个请求需要移动的距离,并计算出平均寻道长度。

4. 然后是SSTF算法。

SSTF算法是指选择距离当前磁头位置最近的请求进行服务。

我们同样使用模拟生成一组随机数作为请求队列,然后计算出每个请求与当前磁头位置的距离,并按照距离从小到大进行排序,然后依次服务每个请求,并计算出平均寻道长度。

5. 接下来是SCAN算法。

SCAN算法是指磁头从一端开始移动,直到到达另一端,然后返回原点继续移动。

我们同样使用模拟生成一组随机数作为请求队列,并将其按照磁头当前位置的左右分成两部分,分别从左往右和从右往左进行服务,并计算出平均寻道长度。

6. 最后是LOOK算法。

LOOK算法和SCAN类似,不同之处在于当服务完最远的请求时不会返回原点,而是直接返回最近的请求。

我们同样使用模拟生成一组随机数作为请求队列,并将其按照磁头当前位置的左右分成两部分,分别从左往右和从右往左进行服务,并计算出平均寻道长度。

四、实验结果通过对以上四种磁盘调度算法进行测试,得到以下结果:1. FCFS平均寻道长度:1622. SSTF平均寻道长度:783. SCAN平均寻道长度:984. LOOK平均寻道长度:87五、实验结论从实验结果可以看出,SSTF算法的性能最优,平均寻道长度最短。

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

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

实验一磁盘调度算法实现一、实验目的本课程设计的目的是通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解;二、实验内容系统主界面可以灵活选择某种算法,算法包括:先来先服务算法FCFS、最短寻道时间优先算法SSTF、扫描算法SCAN、循环扫描算法CSCAN;先来先服务算法 FCFS这是一种比较简单的磁盘调度算法;它根据进程请求访问磁盘的先后次序进行调度;此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况;此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小;最短寻道时间优先算法 SSTF该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短;其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大;在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期;扫描算法 SCAN扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向;例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的;这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动;这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现;由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法;此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道;循环扫描算法 CSCAN循环扫描算法是对扫描算法的改进;如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少;这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动;例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描;三、实验流程系统功能图图3-1 系统功能图算法流程图本次实验为实现磁盘调度算法,分别实现四个算法并调试;四个算法算法包括:先来先服务算法FCFS、最短寻道时间优先算法SSTF、扫描算法SCAN、循环扫描算法CSCAN;四个算法的流程图分析如下;1)先来先服务算法FCFS的流程图图3-2 先来先服务算法的流程图2)最短寻道时间优先算法SSTF的流程图图3-3 最短寻道时间优先算法的流程图3)扫描算法SCAN的流程图图3-4扫描算法的流程图4)循环扫描算法CSCAN的流程图图3-5 循环扫描算法的流程图四、源程序include<>include<>include<>include<>define maxsize 1000/判断输入数据是否有效/int decidechar str 来先服务 2.最短寻道时间优先 3.扫描调度 4.循环扫描 5.退出\n"<<endl;cout<<" -------------------------------------------------------------------------"<<endl;G:cout<<" 请选择算法: ";F:cin>>str; //对输入数据进行有效性判断a=decidestr;ifa==0{cout<<" 输入数据的类型错误,请重新输入"<<endl;goto F;//输入错误,跳转到F,重新输入}else c=transstr,a;ifc==5 break;ifc>5{cout<<" 输入的数据错误请重新输入"<<endl;goto G;}switchc{case 1: //使用FCFS算法FCFScidao,count;break;case 2: //使用SSTF算法SSTFcidao,count;break;case 3: //使用SCAN算法SCANcidao,count;break;case 4: //使用CSCAN算法CSCANcidao,count;break;}}}五、实验结果程序主界面运行程序后,将会提示用户输入磁道序列,并且以0结束;当用户输入磁道序列后,系统将会重新显示用户输入的磁道序列;程序主界面运行图如图5-1所示;图5-1 程序主界面先来先服务算法FCFS运行结果选择算法1之后,进入算法1 的操作;系统会显示磁盘的请求序列;用户需要输入当前的磁道号,系统会显示出磁盘的扫描序列和平均寻道长度;由运行结果可得出,先来先服务算法的平均寻道长度为;先来先服务算法的运行图如图5-2所示;图5-2 先来先服务算法运行结果图最短寻道时间优先算法SSTF运行结果选择算法2之后,进入算法2 的操作;系统会显示磁盘的请求序列;用户需要输入当前的磁道号,系统会显示出磁盘的扫描序列和平均寻道长度;由运行结果可得出,先来先服务算法的平均寻道长度为;最短寻道时间优先算法的运行图如图5-3所示;图5-3 最短寻道时间优先算法运行结果图扫描算法SCAN运行结果选择算法3之后,进入算法3的操作;系统会显示磁盘的请求序列;用户需要输入当前的磁道号,系统会显示出磁盘的扫描序列和平均寻道长度;由运行结果可得出,先来先服务算法的平均寻道长度为11;扫描算法的运行图如图5-4所示;图5-4 扫描算法运行结果图循环扫描算法CSCAN运行结果选择算法4之后,进入算法4的操作;系统会显示磁盘的请求序列;用户需要输入当前的磁道号,系统会显示出磁盘的扫描序列和平均寻道长度;由运行结果可得出,先来先服务算法的平均寻道长度为11;扫描算法的运行图如图5-5所示;图5-5 循环扫描算法运行结果图六、总结通过本次实验,学习了解磁盘调度四种调度算法先来先服务算法;最短寻道时间优先算法;扫描算法;循环扫描算法的工作原理以及四种调度算法之间的差异和共性,并且在当中发现了自己的不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固,看到了自己的实践经验还是比较缺乏,实践能力还需要提高;。

磁盘调度实验报告

磁盘调度实验报告

磁盘调度实验报告一、实验目的1.掌握磁盘调度算法的基本原理和思想;2.理解磁盘调度算法的性能指标及其关系;3.利用实验验证各种磁盘调度算法的性能差异。

二、实验原理磁盘调度算法是操作系统中用来调度磁盘的读写操作的一种方法。

磁盘访问的时间主要包括寻道时间、旋转延迟和数据传输时间。

磁盘调度算法的目标是尽可能减少磁头的移动和等待时间,提高磁盘的访问效率。

常用的磁盘调度算法有先来先服务(FCFS)、最短寻找时间优先(SSTF)、电梯扫描(SCAN)和循环扫描(CSCAN)等。

FCFS算法就是按照请求的先后顺序进行访问,即先来的请求先执行。

SSTF算法每次选择最短寻找时间的磁道进行访问,减少了寻道时间。

SCAN算法则是磁头按照一个方向进行扫描,直到扫描到磁盘的一侧,然后改变方向继续扫描。

CSCAN算法是类似于SCAN算法,只是当扫描到磁盘的一侧时,直接跳到另一侧进行扫描。

这些算法各有优缺点,适用于不同的场景和需求。

三、实验过程1.实验环境搭建:选择一台计算机作为实验机器,安装操作系统和相应的磁盘调度算法软件;2.实验数据准备:生成一组磁道访问的请求序列,包括请求的磁道号和读写操作;3.实验数据输入:将生成的请求序列输入到磁盘调度软件中,选择不同的调度算法进行模拟;4.实验结果记录:记录各种调度算法的磁头移动次数和平均访问时间;5.实验数据分析:根据实验结果进行数据分析,比较各种算法的性能差异。

四、实验结果分析根据实验数据进行结果分析,比较不同调度算法的性能差异。

以磁头移动次数和平均访问时间为评价指标,可以看出不同算法对磁盘访问的影响。

在一些情况下,可能一些算法的磁头移动次数更少,但平均访问时间可能并不是最低的,需要综合考虑多个因素。

根据实验结果可以发现,FCFS算法的磁头移动次数和平均访问时间相对较高,因为它只按照请求的先后顺序进行访问,没有考虑磁道之间的距离。

SSTF算法在减少磁头移动次数和平均访问时间方面有一定的优势,因为它每次选择最短寻找时间的磁道进行访问。

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

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

操作系统实验磁盘调度算法实验报告一.实验目的本实验旨在通过磁盘调度算法的模拟,探究不同调度算法对磁盘访问性能的影响,了解各种算法的特点和适用场景。

二.实验方法本实验通过编写磁盘调度模拟程序,实现了三种常见的磁盘调度算法:FCFS(先来先服务)、SSTF(最短寻找时间优先)和SCAN(扫描算法)。

实验中使用C语言编程语言,并通过随机生成的队列模拟磁盘访问请求序列。

三.实验过程1.FCFS(先来先服务)算法FCFS算法是一种非常简单的调度算法,它按照请求到达的顺序进行调度。

在实验中,我们按照生成的请求队列顺序进行磁盘调度,记录每次磁头移动的距离。

2.SSTF(最短寻找时间优先)算法SSTF算法是一种动态选择离当前磁头位置最近的磁道进行调度的算法。

在实验中,我们根据当前磁头位置和请求队列中的磁道位置,选择距离最近的磁道进行调度。

然后将该磁道从请求队列中移除,并记录磁头移动的距离。

3.SCAN(扫描算法)算法SCAN算法是一种按照一个方向进行扫描的算法,它在每个方向上按照磁道号的顺序进行调度,直到扫描到最边缘磁道再折返。

在实验中,我们模拟磁头从一个端点开始,按照磁道号从小到大的顺序进行调度,然后再折返。

记录磁头移动的距离。

四.实验结果与分析我们通过生成不同数量的请求队列进行实验,记录每种算法的磁头移动距离,并进行比较。

实验结果显示,当请求队列长度较小时,FCFS算法的磁头移动距离较短,因为它按照请求到达的顺序进行调度,无需寻找最短的磁道。

然而,当请求队列长度较大时,FCFS算法的磁头移动距离会显著增加,因为它不能根据距离进行调度。

SSTF算法相对于FCFS算法在磁头移动距离上有了明显改进。

SSTF算法通过选择最短的寻找时间来决定下一个访问的磁道,因此可以减少磁头的移动距离。

然而,在请求队列中存在少量分散的请求时,SSTF算法可能会产生扇区的服务死锁现象,导致一些磁道无法及时访问。

SCAN算法通过扫描整个磁盘来进行调度,有效解决了FCFS算法有可能导致的服务死锁问题。

磁盘调度实验报告

磁盘调度实验报告

磁盘调度实验报告磁盘调度实验报告一、引言磁盘调度是操作系统中的一个重要组成部分,其作用是对磁盘上的数据进行合理的调度和管理,以提高磁盘的读写效率。

本文将对磁盘调度实验进行详细的分析和总结,探讨不同的磁盘调度算法对磁盘性能的影响。

二、实验目的本次实验的目的是通过模拟不同的磁盘调度算法,比较它们在不同情况下的性能表现,包括平均寻道时间、平均旋转延迟时间和平均访问时间等指标。

通过实验结果的对比分析,我们可以了解不同磁盘调度算法的优劣,并选择适合特定应用场景的磁盘调度算法。

三、实验环境和方法本次实验使用了模拟磁盘调度的软件,并设置了不同的磁盘调度算法进行对比。

实验环境为一台配置良好的计算机,操作系统为Windows 10。

实验方法是通过设置不同的磁盘访问序列,模拟磁盘的读写操作,并记录相应的性能指标。

四、实验结果和分析在本次实验中,我们选择了三种常见的磁盘调度算法进行对比,分别是先来先服务(FCFS)、最短寻道时间优先(SSTF)和电梯算法。

下面将分别对这三种算法的实验结果进行分析。

1. 先来先服务(FCFS)先来先服务算法是最简单的一种磁盘调度算法,它按照请求的顺序进行调度。

实验结果显示,当磁盘访问序列较为随机时,FCFS算法的性能表现较差。

这是因为当磁盘访问序列随机时,FCFS算法无法充分利用磁盘的局部性原理,导致平均寻道时间较长。

2. 最短寻道时间优先(SSTF)最短寻道时间优先算法是一种比较常用的磁盘调度算法,它选择离当前磁头位置最近的磁道进行访问。

实验结果显示,SSTF算法在随机磁盘访问序列下表现优秀,平均寻道时间较短。

这是因为SSTF算法能够充分利用磁盘的局部性原理,尽可能减小寻道时间。

3. 电梯算法电梯算法是一种比较灵活的磁盘调度算法,它模拟了电梯的运行方式。

当磁头移动的方向没有改变时,电梯算法按照最短寻道时间优先的原则进行调度;当磁头移动的方向改变时,电梯算法改变调度方向,并按照当前方向上最远的磁道进行访问。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验报告




实验六:磁盘调度算法
一.实验目的
复习模拟实现一种磁盘调度算法,进一步加深对磁盘调度效率的理解。

二.实验属性
该实验为设计性实验。

三.实验仪器设备及器材
普通PC386以上微机
四.实验要求
本实验要求2学时完成。

本实验要求完成如下任务:
(1)建立相关的数据结构,作业控制块、已分配分区及未分配分区
(2)实现一个分区分配算法,如最先适应分配算法、最优或最坏适应分配算法
(3)实现一个分区回收算法
(4)给定一批作业/进程,选择一个分配或回收算法,实现分区存储的模拟管理
实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。

实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。

五 .主要算法分析
各个算法分析
1.先来先服务算法(FCFS)
先来先服务(FCFS)调度:按先来后到次序服务,未作优化。

最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。

例如,如果现在读写磁头正在50号柱面上执行输出操作,而等待访问者依次要访问的柱面为130、199、32、159、15、148、61、99,那么,当50号柱面上的操作结束后,移动臂将按请求的先后次序先移到130号柱面,最后到达99号柱面。

采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回地移动。

先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。

2.最短寻道时间优先算法(SSTF)
最短寻找时间优先调度算法总是从等待访问者中挑选寻找时间最短的那个请求先执行的,而不管访问者到来的先后次序。

现在仍利用同一个例子来讨论,现在当50号柱面的操作结束后,应该先处理61号柱面的请求,然后到达32号柱面执行操作,随后处理15号柱面请求,后继操作的次序应该是99、130、148、159、199。

采用最短寻找时间优先算法决定等待访问者执行操作的次序时,读写磁头总共移动了200多个柱面的距离,与先来先服务、算法比较,大幅度地减少了寻找时间,因而缩短了为各访问者请求服务的平均时间,也就提高了系统效率。

但最短查找时间优先(SSTF)调度,FCFS会引起读写头在盘面上的大范围移动,SSTF查找距离磁头最短(也就是查找时间最短)的请求作为下一次服务的对象。

SSTF查找模式有高度局部化的倾向,会推迟一些请求的服务,甚至引起无限拖延(又称饥饿)。

3.扫描算法(SCAN)
SCAN 算法又称电梯调度算法。

SCAN算法是磁头前进方向上的最短查找时间优先算法,它排除了磁头在盘面局部位置上的往复移动,SCAN算法在很大程度上消除了SSTF算法的不公平性,但仍有利于对中间磁道的请求。

“电梯调度”算法是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱访问者,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。

这好比乘电梯,如果电梯已向上运动到4层时,依次有3位乘客陈生、伍生、张生在等候乘电梯。

他们的要求是:陈生在2层等待去10层;伍生在5层等待去底层;张生在8层等待15层。

由于电梯目前运动方向是向上,所以电梯的形成是先把乘客张生从8层带到15层,然后电梯换成下行方向,把乘客伍生从5层带到底层,电梯最后再调换方向,把乘客陈生从2层送到10层。

但是,“电梯调度”算法在实现时,不仅要记住读写磁头的当前位置,还必须记住移动臂的当前前进方向。

六、程序代码
#include<>
#include<>
#include<>
void FCFS(int array[],int m)来先服务算法流程图
3. 扫描算法流程图
八.课程设计运行结果
一. 运行后的开始界面如下:
二、运行各个算法结果如下
1.运行先来先服务(FCFS)算法调度后程序结果如下:
2.运行最短寻道时间优先(SSTF)算法调度程序结果如下:
3.运行扫描(SCAN)算法调度程序结果如下:
5.选择退出后程序界面如下:
九.心得体会
整个设计中最麻烦的就是整个程序模块的划分和各模块之间接口设计,编程中经常犯想当然的错误,编程中出现了不少奇怪的错误。

再调试中尝试使用了分割法,对错误模块进行定位,再进行排查.通过这次的课程设计使我认识到要将操作系统这门计算机专业的课学好不仅仅是要把书上的基本知识学好而且还要不断进行实践,将所学的跟实践操作结合起来才能更好地巩固所学,才能提高自己实践能力.通过这次的设计使我认识到只停留在表面理解问题是很难使问题得到很好的解决的,实践能力与理论知识同样重要。

可以说此课程设计的理论难度并不大,但是若要深入发掘其中的东西,并且实际去编程实现,就遇到了相当大的难度。

因为与之涉及的很多方面并没有学过,需要自己去自学和实践检验。

,通过模拟磁盘调度及进程排队算法来加深对操作系统中各个磁臂调度算法概念的理解。

模拟磁盘调度算法(FCFS,SSTF,SCAN,CSCAN),实现各种不同调度算法的过程,并计算各算法的平均寻道长度,
以便于我们判断各种算法的优劣以及各种算法使用的场合。

相关文档
最新文档