精华内容
下载资源
问答
  • 本代码包含银行家算法 处理机调度 磁盘寻道三个实验,解压后将所有文件导入Eclipse运行即可,注意:解压后将所有文件导入。
  • 操作系统课程设计,磁盘寻道算法。做了扫描和循环扫描算法。分别用数组和链表方式进行了测试。并比较了时间效率。
  • 磁盘寻道算法 电梯调度算法 C++实现 #include<iostream> using namespace std; #include<vector> #include<algorithm> compute(vector<int> v,int x,int d) { double w=1; sort(v.begin()...

    磁盘寻道算法 电梯调度算法 C++实现

    #include<iostream>
    using namespace std;
    #include<vector>
    #include<algorithm>
    compute(vector<int> v,int x,int d)
    {
        double w=1;
        sort(v.begin(),v.end());
        if(d==1){
            cout<<endl<<"    磁头从"<<x<<"磁道开始,向磁道号"<<endl;
            cout<<"            增加方向访问"<<endl;
            cout<<"    被访问的           移动距离    "<<endl;
            cout<<"  下一个磁道号        (磁道数)   "<<endl;
            int i;
            for(i=0;i<v.size();i++){
                if(x<v[i])
                    break;
            }
            int g=i,s=0;;
            int m=v[i]-x,x1=x;
            for(int j=0;j<v.size();j++){
                m=abs(v[i]-x1);
                cout<<"      "<<v[i]<<"                 "<<m<<endl;
                w+=m;
                x1=v[i];
                if(i==v.size()-1){
                    i=g;s=1;
                }
                if(s==0){
                    i++;
                }
                else{
                    i--;
                }
            }
        }
        else{
            cout<<endl<<"    磁头从"<<x<<"磁道开始,向磁道号"<<endl;
            cout<<"           减少方向访问"<<endl;
            cout<<"    被访问的           移动距离    "<<endl;
            cout<<"  下一个磁道号        (磁道数)   "<<endl;
            int i;
            for(i=0;i<v.size();i++){
                if(x<v[i+1])
                    break;
            }
            int g=i,s=0;;
            int m=v[i]-x,x1=x;
            for(int j=0;j<v.size();j++){
                m=abs(v[i]-x1);
                cout<<"      "<<v[i]<<"                 "<<m<<endl;
                w+=m;
                x1=v[i];
                if(i==0){
                    i=g;s=1;
                }
                if(s==0){
                    i--;
                }
                else{
                    i++;
                }
            }
        }
        cout<<"   平均寻道长度:"<<w/v.size()<<endl;
    }
    int main()
    {
        vector<int> v;
        int n,x,d;
        cout<<"请输入进程的数量:"<<endl;
        cin>>n;
        cout<<"请输入各进程所在的磁道号(1-200):"<<endl;
        for(int i=0;i<n;i++){
            int o;cin>>o;
            v.push_back(o);
        }
        cout<<"请输入当前磁头所在磁道(1-200):"<<endl;
        cin>>x;
        cout<<"请输入当前磁头的寻道范方向:"<<endl;
        cout<<"0-----磁道号递减方向"<<endl;
        cout<<"1-----磁道号递增方向"<<endl;
        cin>>d;
        compute(v,x,d);
    }
    /*
    9
    160 90 150 58 55 184 18 39 38
    100
    1
    
    9
    150 160 184 90 58 55 39 38 18
    100
    0
    
    */
    
    

    在这里插入图片描述

    展开全文
  • 磁盘寻道时间

    千次阅读 2016-07-14 16:26:58
    当前磁盘读写位于柱面号20,此时有多个磁盘请求,以下列柱面号顺序送至磁盘驱动器:10、22、20、2、40、6、38。寻道(Track)时,移动一个柱面需6ms,按下列算法计算所需寻道时间(柱面移动顺序及所需时间,总寻道...
    当前磁盘读写位于柱面号20,此时有多个磁盘请求,以下列柱面号顺序送至磁盘驱动器:10、22、20、2、40、6、38。寻道(Track)时,移动一个柱面需6ms,按下列算法计算所需寻道时间(柱面移动顺序及所需时间,总寻道时间;忽略到达指定柱面后所需寻道时间)。(上海交通大学1999年试题)
    ① 先来先服务。
    ② 下一个最邻近柱面。
    ③ 电梯算法(当前状态为向上)。
    先来先服务:
    ① 磁头移动顺序为:(20)→10→22→20→2→40→6→38 磁头移动总量是146柱面,总寻道时间是:146×6ms=876ms.
    ② 下一个最邻近柱面:
    磁头移动顺序为:(20)→20→22→10→6→2→38→40 磁头移动总量是60柱面,总寻道时间是:60×6ms=360ms.
    ③ 电梯算法
    磁头移动顺序为:(20)→20→22→38→40→10→6→2 磁头移动总量是58柱面,  总寻道时间是:58N×6ms=348ms.


    展开全文
  • 磁盘寻道调度算法

    2020-03-31 11:03:03
    磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读 / 写操作的请求。...最短寻道时间优先算法(SSTF), 扫描算法(SCAN), 循环扫描算法(CSCAN)   例: 假定某磁盘共有 ...

    磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读 / 写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种:

    先来先服务算法(FCFS),

    最短寻道时间优先算法(SSTF),

    扫描算法(SCAN),

    循环扫描算法(CSCAN)

     

    : 假定某磁盘共有 200 个柱面,编号为 0-199,如果在为访问 143 号柱面的请求者服务后,当前正在为访问 125 号柱面的请求服务,同时有若干请求者在等待服务,它们每次要访问的柱面号为   861479117794150102175130

     

     

    1、先来先服务算法(FCFS)First Come First Service

    这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。

    先来先服务 12586.147.91.177.94.150.102.175.130

     

    2、最短寻道时间优先算法(SSTF) Shortest Seek Time First

    该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。

    最短寻道时间优先125130.147.150.175.177.102.94.91.86

     

    3、扫描算法(SCAN)电梯调度

    扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

    电梯调度125102.94.91.86.130.147.150.175.177

     

    4、循环扫描算法(CSCAN)

    循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

    循环扫描 (125130.147.150.175.177.86.91.94.102

    展开全文
  • 磁盘寻道调度问题

    千次阅读 2018-08-19 11:17:26
    最短寻道时间优先算法(**FSST**-shorest seek time first) 3. 扫描算法(SCAN)也称为电梯调度 4. 循环扫描算法(CSCAN) 先来先服务算法: 按照请求访问磁盘的先后顺序进行调度,最简单的...

    常用的磁盘调度算法有四种:

         1. 先来先服务 (**FCFS**-first come first service)
         2. 最短寻道时间优先算法(**FSST**-shorest seek time first)
         3. 扫描算法(SCAN)也称为电梯调度
         4. 循环扫描算法(CSCAN)
    

    先来先服务算法:
    按照请求访问磁盘的先后顺序进行调度,最简单的一种调度算法。
    优点:简单、公平
    缺点:效率较低,存在磁头反复移动问题,增加服务时间,有损机械。

    最短寻道时间优先算法
    每次寻找与当前磁道距离最近的磁道,使得每次寻道时间最短。算法有较好的吞吐量,但是不能保证平均寻道时间最短。
    优点:改善磁道平均服务时间。
    缺点:访问不均匀,造成某些访问请求长期无法响应。

    扫描算法
    先考虑当前移动方向(自里向外/自外向里),再考虑与当前磁道距离最近的。
    自里向外:下一磁道在当前磁道外侧,且距离最近,依次类推,直到最外侧磁道才将磁臂换向为自外向里。移动原则同前一致。
    自外向里:下一磁道在当前磁道内侧且距离最近,依次类推,到最内侧将磁臂换向为自里向外,再按上述原则移动。
    优点:克服最短寻道优先的缺点,同时考虑方向和距离,吞吐量较大,平均响应时间较少。
    缺点:由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

    循环扫描算法
    循环扫描算法是对扫描算法的改进。
    自里向外扫描,则寻道为当前磁道外侧且距离最近磁道,直到最外侧磁道;再返回剩余等待服务的最内侧磁道,自里向外扫描。
    自外向里扫描,则寻道为当前磁道内侧且距离最近磁道,直到最内侧磁道;再返回剩余等待服务的最外侧磁道,自外向里扫描。

    实例:
    1、假设移动头磁盘有200个磁道(从0号到199号)。目前正在处理125号磁道上的请求,而刚刚处理结束的请求是143号,如果下面给出的顺序是按FIFO排成的等待服务队列顺序:
    86,147,91,177,94,150,102,175,130

    (1)先来先服务算法
    (125),86,147,91,177,94,150,102,175,130
    移动距离=(125-86)+(147-86)+(147-91)+(177-91)+(177-94)+(150-94)+(150-102)+(175-102)+(175-130)=547
    (2)最短寻道时间优先算法
    (125),130,147,150,175,177,102,94,91,86
    移动距离=130-125+147-130+150-147+175-150+177-175+177-102+102-94+94-91+91-86=143
    (3)扫描算法
    由于刚结束磁道是143,目前是125,因此磁道方向是减小方向,到最小;再从剩余中最小到最大
    (125),102,94,91,86,130,147,150,175,177

    移动距离=125-102+102-94+94-86+130-86+147-130+150-147+175-150+177-175=130

    (4)循环扫描算法
    由于刚结束磁道是143,目前是125,因此磁道方向是减小方向,到最小;再从剩余中最大到最小。
    (125),102,94,91,86,177,175,150,147,130
    移动距离=125-102+102-94+94-91+91-86+177-86+177-175+175-150+150-147+147-130=177

    2、当前磁道100号,正向磁道增加方向移动(右外向里),请求队列:23,376,205,132,61,190,29,4,40.若用SCAN算法,则磁道移动顺序和距离分别为:
    移动顺序:(100),132,190,205,376,61,40,29,23,4
    举动距离:648

    展开全文
  • 磁盘寻道时间计算

    千次阅读 2016-03-10 16:05:00
    ㈠ 磁道 以盘片中心为圆心,用不同的半径,划分出不同的很窄的圆环形区域,称为磁道㈡ 扇区 ...㈣ 寻道时间磁头从开始移动到数据所在磁道所需要的时间寻道时间越短,I/O操作越快,     1.磁盘结构图:   工
  • 测试磁盘寻道时间

    千次阅读 2013-12-09 17:39:05
    分析性能时,文件系统读取速度不定,主要因为时间不仅花在读取上,还花在磁盘旋转和寻道上,写了一段代码测试这个的时间,一般普通硬盘是10ms左右。 有两个函数,第一个函数是生成50G数据,第二个函数是测试 ...
  • 操作系统中的,4种寻道算法。FCFS(先来先服务) SSTF(最短寻道时间) SCAN(扫描算法) CSCAN(循环扫描法)
  • #include <stdio.h> #include <stdlib.h> int tracks[200];//track number void Init(int start,int num);//initialize track sequence void FCFS(int start,int num);//First come first serve algori...
  • 操作系统之磁盘寻道调度算法

    千次阅读 2017-03-29 19:50:38
    磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。...最短寻道时间优先算法(SSTF), 扫描算法(SCAN), 循环扫描算法(CSCAN)   例:假定某磁盘
  • 假定磁盘转速为20ms/圈,磁盘格式化时每个磁道被划分成10个扇区,今有10个逻辑记录(每个记录的大小刚好与扇区大小相等)存放在同一个磁道上,处理程序每次从磁盘读出一个计录后要花4ms进行处理,现要求顺序处理这10...
  • printf("请选择:\n1、SSTF(最短寻道优先算法)\n2、CSCAN(循环扫描算法)\n"); printf("3、SCAN(扫描算法)\n4、重新产生一组新的序列\n5、结束\n\n"); char c; while(c=getchar(),c!='5'){ switch(c){ ...
  • 若干个等待访问磁盘者依次要访问的柱面编号为:80,40,74,14,60,31,61,假设每移动一个柱面需要4毫秒时间,移动到当前位于35号柱面,且当前的移动方向向柱面号增加的方向。请计算: (1)若采用SCAN算法调度,求移动...
  • 最短寻道时间优先算法(SSTF) 扫描算法(SCAN) 循环扫描算法(CSCAN) 先来先服务算法(FCFS,First Come First Served)  根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个...
  • 最短寻道时间优先(SSTF,Shortest Seek Time First) 该算法选择这样的过程,其要求访问的的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。但这种算法不能保证平均寻道时间最短。下图示出了按SSTF算法...
  • 一、设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法中的扫描寻道算法。二、设计内容通过编程实现磁盘调度中扫描寻道算法。设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机...
  • 一、设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法中的最短寻道优先算法。二、设计内容通过编程实现磁盘调度中最短寻道优先算法。设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数...
  • 最近在腾讯的笔试题中看到最短寻道时间的题目,然后就去看了下相关资料,了解了下SSTF算法的实现(原理就是优先访问离当前读写头最近的位置) 例如:磁盘访问序列为:35,12,73,230,80,20,310,120 读写头...
  • } } } } 磁盘调度算法先来先服务 / 最短寻道优先 #include<stdio.h> #include<stdlib.h> #include<math.h> void FCFS(int a[],int m,int now;// 先来先服务 void SSTF(int a[],int n,int now;// 最短寻道时间优先 ...
  • 磁盘调度算法先来先服务/最短寻道优先 #include<stdio.h> #include<stdlib.h> #include<math.h> void FCFS(int a[],int m,int now;//先来先服务 void SSTF(int a[],int n,int now;//最短寻道时间优先 void choose...
  • 最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码。 题目阐述如下:  设计五:磁盘调度管理 设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法。 设计内容: 通过...
  • 磁盘调度-最短寻道时间优先(SSTF)

    千次阅读 2018-09-30 19:19:57
    最短寻道时间优先:其要求访问的磁道与当前磁头所在的距离最近。 算法思想:首先排序,找出当前第一个大于等于当前磁头所在位置,设置两个指针,分别代表左右两个磁道号,比较两个磁道号大小即可得到离起始磁道最近...

空空如也

空空如也

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

磁盘寻道