精华内容
下载资源
问答
  • 最近在腾讯的笔试题中看到最短寻道时间的题目,然后就去看了下相关资料,了解了下SSTF算法的实现(原理就是优先访问离当前读写头最近的位置) 例如:磁盘访问序列为:35,12,73,230,80,20,310,120 读写头...

    最近在腾讯的笔试题中看到最短寻道时间的题目,然后就去看了下相关资料,了解了下SSTF算法的实现(原理就是优先访问离当前读写头最近的位置)

    例如:磁盘访问序列为:35,12,73,230,80,20,310,120

    读写头起始位置为:65磁道处

    那么SSTF走道顺序依次为:65,73,80,120,35,20,12,230,310

    磁头走过总道数为:461

    C++代码实现如下

    #include<iostream>
    #include<math.h>
    using namespace std;
    int sstf(int *a,int *b,int start,int N)
    {
    	int sum,min,index,k,s_index,c[1000]={0};//c[]访问过的数字标记为1;
    	s_index=sum=k=0;
    	for(int j=0;j<N;j++)
    	{
    		s_index=index=0;
    		//把初始第0位数标记为初始的距离最小值,并记录index,如果第0位已经访问过,则往后移一位 
    		while(true)
    		{
    			if(c[s_index]==0)
    			{
    				min=abs(start-a[s_index]);
    				index=s_index; 
    				break;
    			}
    			else
    			{
    				s_index++;
    			}
    		}		
    		for(int i=s_index;i<N;i++)
    		{
    			if((abs(start-a[i])<min)&&c[i]==0)//判断是否比前一个比较过的数要小并且是否已经访问过 
    			{
    				min=abs(start-a[i]);
    				index=i;//index每次找到的距离最小的数的index记录下来 
    			}
    		}
    		c[index]=1;//把访问过的数用数组c记录下来 
    		sum+=min;//当前数和访问到的数之间的最短距离记录累加 
    		b[k++]=a[index];//把访问过的数存到数组b中 
    		start=a[index];//更新当前所在的数 
    	}
    	return sum;
    }
    int main()
    {
    	int a[1000]={0},b[1000]={0};
    	int start,num;//start为初始值,num为要输入的数的个数 
    	cin>>start>>num;
    	for(int i=0;i<num;i++)
    		cin>>a[i];
    	cout<<sstf(a,b,start,num)<<endl;
    	for(int i=0;i<num;i++)
    		cout<<b[i]<<" ";
    		cout<<endl; 
    	return 0; 
    } 

    运行结果如下 

    展开全文
  • 最短寻道时间优先算法(SSTF) 扫描算法(SCAN) 循环扫描算法(CSCAN) 先来先服务算法(FCFS,First Come First Served)  根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个...

     

    磁盘调度算法

    磁盘调度算法比较常见的有以下四种:

    1. 先来先服务算法(FCFS)
    2. 最短寻道时间优先算法(SSTF)
    3. 扫描算法(SCAN)
    4. 循环扫描算法(CSCAN)

     

    先来先服务算法(FCFS,First Come First Served)

      根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。

    初始位置100
    磁道编号

    移动距离

          55  

    45

    58

    3

    39

    19

    18

    21

    90

    72

    160

    70

    150

    10

    38

    112

    184146
    平均寻道长度55.3

      与后面即将讲到的几种调度算法相比,其平均寻道距离较大,故FCFS算法仅适用于请求磁盘I/O的进程数目较少的场合。 


     

    最短寻道时间优先(SSTF,Shortest Seek Time First)

      要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。但这种算法不能保证平均寻道时间最短。可以得到比较好的吞吐量,但不能保证平均寻道时间最短。

     

    初始位置100
    磁道编号

    移动距离

          90  10
    5832
    553
    3916
    381
    1820
    150132
    16010
    18424
    平均寻道长度27.5

      对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。  SSTF算法虽然能获得较好的寻道性能,但却可能导致某个进程发生“饥饿”(Starvation)现象。因为只要不断有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的I/O请求必然优先满足。


     

    扫描算法(SCAN)

      不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直至再无更外的磁道需要访问时,才将磁臂换向为自外向里移动。这时,同样也是每次选择这样的进程来调度,即要访问的磁道在当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现象。

    初始位置100
    磁道编号

    移动距离

          150  50
    16010
    18424
    9094
    5832
    553
    3916
    381
    1820
    平均寻道长度27.5


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


     

    循环扫描算法(CSCAN)

      SCAN算法既能获得较好的寻道性能,又能防止“饥饿”现象,故被广泛用于大、中、小型机器和网络中的磁盘调度。但SCAN也存在这样的问题:当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该进程必须等待,待磁头继续从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被大大地推迟。

      为了减少这种延迟,CSCAN算法规定磁头单向移动,例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。
      采用循环扫描方式后,上述请求进程的请求延迟将从原来的2T减为T + Smax,其中,T为由里向外或由外向里单向扫描完要访问的磁道所需的寻道时间,而Smax是将磁头从最外面被访问的磁道直接移到最里面欲访问的磁道(或相反)的寻道时间。

     

     

    转载于:https://www.cnblogs.com/Mr24/p/8684366.html

    展开全文
  • <br />感谢小陈同学的帮助,下面来看解答: <br /> <br />


    感谢小陈同学的帮助,下面来看解答:

    展开全文
  • 自己写的磁盘调度算法,通俗易懂,其中有先来先服务调度算法,最短寻道时间调度算法、电梯调度算法
  • 最短寻道时间优先(SSTF,Shortest Seek Time First) ...但这种算法不能保证平均寻道时间最短。下图示出了按SSTF算法进行调度时,各种进程被调度的次序、每次磁头移动的距离,以及9次调度磁头平均移动的距离。 ...

    最短寻道时间优先(SSTF,Shortest Seek Time First)

    该算法选择这样的过程,其要求访问的的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。但这种算法不能保证平均寻道时间最短。下图示出了按SSTF算法进行调度时,各种进程被调度的次序、每次磁头移动的距离,以及9次调度磁头平均移动的距离。
    在这里插入图片描述

    展开全文
  • 转自github 包含四种算法: 1.FIFO(先来先服务) 2.SSTF(最短寻道时间优先) 3.SCAN(扫描) 4.CSCAN(循环扫描)。
  • 磁盘调度-最短寻道时间优先(SSTF)

    千次阅读 2018-09-30 19:19:57
    最短寻道时间优先:其要求访问的磁道与当前磁头所在的距离最近。 算法思想:首先排序,找出当前第一个大于等于当前磁头所在位置,设置两个指针,分别代表左右两个磁道号,比较两个磁道号大小即可得到离起始磁道最近...
  •  掌握磁盘调度算法,如先来先服务(firstcome first served,FCFS)调度算法、最短寻道时间优先(shortest seek timefirst,SSTF)调度算法、扫描(SCAN)调度算法、循环扫描(C-SCAN)调度算法。二、 实验内容设计...
  • 本代码包含银行家算法 处理机调度 磁盘寻道三个实验,解压后将所有文件导入Eclipse运行即可,注意:解压后将所有文件导入。
  • 对给出的任意的磁盘请求序列、计算平均寻道长度;要求可定制磁盘请求序列长度、磁头起始位置、磁头移动方向。 测试:假设磁盘访问序列:98,183,37,122,14,124,65,67;读写头起始位置:53,方向:磁道增加的...
  • 原创最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码。题目阐述如下:设计五:磁盘调度...选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。常用的磁盘调...
  • 操作系统实验-磁盘调度:先来先服务、最短寻道时间算法
  • (1)设计并实现了一个函数,完成先来先服务的磁盘调度功能 (2)设计并实现了一个函数完成最短寻道时间优先的磁盘调度功能。 (3)设计并实现了一个函数完成电梯算法的磁盘调度功能。
  • 操作系统实验之磁盘调度算法模拟(最短寻道时间优先SSTF 和 扫描算法SCAN) 最短寻道时间优先SSTF 要求每次访问的磁道与当前磁头所在的磁道距离最近、 也就是每次访问距离磁头最近的磁道 扫描算法SCAN 由里向外地...
  • 一、设计目的: 加深对请求磁盘调度管理...选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。扫描算法SCAN:该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁...
  • FCFS SSTF SCAN 算法 先来先服务 最短寻道时间优先 扫描
  • 一、设计目的: 加深对请求磁盘调度管理实现...选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。最短寻道优先算法SSTF:该算法选择这样的进程:其要求访问的磁道与当前磁头所在...
  • 磁盘寻道调度算法

    千次阅读 2020-03-31 11:03:03
    磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读 / 写操作的请求。...最短寻道时间优先算法(SSTF), 扫描算法(SCAN), 循环扫描算法(CSCAN)   例: 假定某磁盘共有 ...
  • 实现磁盘调度的一些功能,如:先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN),N步扫描算法(NStepScan)
  • 磁盘调度算法(先来先服务。最短寻道时间算法) 操作系统课程设计
  • 磁盘寻道调度问题

    千次阅读 2018-08-19 11:17:26
    常用的磁盘调度算法有四种: 1. 先来先服务 (**FCFS**-first come first service) 2. 最短寻道时间优先算法(**FSST**-shorest seek time first) 3. 扫描算法(SCAN)也称为电梯调度 4. 循环扫描算法(CSCAN...
  • 先简单介绍一下这几种算法: 1、先来先服务:最早提交最早访问。 例如:磁盘访问序列:98...2、最短寻道时间优先:离读写头最近的最早访问。 例如:磁盘访问序列:98,183,37,122,14,124,65,67。 读写头起...
  • Form1: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;...names
  • printf("----------------------磁盘调度模拟----------------\n"); printf("请输入磁盘请求的个数:"); printf("%d\n",Max); printf("-----------------------初始状态-------------------\n"); printf("\n...
  • 磁盘调度算法主要包括三种算法:先来先服务、最短寻道,电梯调度。程序为java代码,编写,调试,运行都在myeclipse环境下完成,欢迎下载!
  • 用c++语言来实现对于磁盘移臂调度的模拟,模拟的算法有先来先服务法和最短寻道时间优先法
  • 怎样算平均寻道时间

    万次阅读 2014-08-06 09:46:13
    一个单片磁盘的旋转速率为7200rpm,一面上的磁道数是30000,每道扇区数是600,寻道时间是每横越百磁道用1ms...4,满足此请求的总的平均时间是多少? 1、平均寻道时间应为全部寻道时间的一半,150ms 2、
  • 1、对于如下给定的一组磁盘...2、要求分别采用先来先服务、最短寻道优先以及电梯调度方法进行调度。 3、要求给出每种算法中磁盘访问的顺序,计算出平均移动道数。 4、假定当前读写头在90号,向磁道号增加的方向移动。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,921
精华内容 2,368
关键字:

磁盘调度平均寻道时间