zoukankan      html  css  js  c++  java
  • 计算机组成与体系结构------磁盘调度

    一.磁盘结构与参数

      1.磁盘结构

        1)磁道:

        • 磁盘上的一组同心圆
        • 磁盘上的数据都是存放在磁道上的
        • 其宽度和磁头宽度相同
        • 为减少磁道和磁道之间的干扰,之间要保持一定的间隔

        

        2)道密度

        • 沿磁盘半径的方向单位长度内磁道的数目简称为道密度,简称为TPI(每一英寸/道),实际计算中,也有以毫米为单位 。
        • 称最外层为0道,由外向内递增

          3)位密度

        • 沿磁道方向单位长度内存储的二进制的信息的个数成为位密度(每毫米/位)      
        • 为了简化电路的设计。每个磁道存储的位数都是相同的,但是由于磁道半径的变化,所以磁盘的位密度也是由外向内逐步增加的,密度也就越来越大

        4)扇区

        • 磁盘传输的数据是以块,或者说以记录为单位,因此,磁盘上的数据以块的方式进行存放,而这些块通常称为扇区。  
        • 每个磁道所包括的扇区不等,一般是10~100个扇区,为避免干扰,扇区之间也留有空隙。

        5)柱面

        • 柱面的概念,柱面是若干个记录面组成的磁盘组
        • 所有盘面上相同位置的磁道就称为一个柱面,具有N个磁盘记录面的磁盘,每个柱面就有N个磁道,若每个磁盘记录面有N个磁道,那么这个磁盘组就有N个柱面。

           

      2.磁盘容量

        1)总磁道数:

          • m:磁盘的记录面数
          • TPI:磁盘的道密度
          • de:最外圈的直径
          • di:最内圈的直径              

                

        2)非格式化容量

          • w:位密度(每毫米的位数)
          • d:最内圈的直径
          • m:磁盘记录的面数
          • n:每一面的磁道数

              

        3)磁盘格式化容量

          • 能够实际存储有用信息的总量
          • 格式化容量=磁盘存储容量
          • s:每一个磁道的扇区数 
          • b:每个扇区所存储的字节数             

                

      3.数据存取过程

        1)磁盘存放数据规则

          • 在向磁盘记录一个文件时,应将文件尽可能记录在同一柱面上
          • 当一个柱面记录不下时,再记录到相邻的柱面上
          • 当一个文件超出一个磁道容量时,剩下的部分应该存放在其他盘面同一编号的磁道上,同一柱面的其他磁道上
          • 为存取磁盘上的一个物理记录,必须具有三个参数,分别是柱面号,磁头号(盘面号),扇区号。
          • 磁盘根据柱面号来控制移动壁做径向运动沿着半径,带动读写头到达所需的柱面,从磁头号来确定哪一个磁头来读写数据,然后等待访问的信息块旋转到读写头下时来进行存取。

        2)磁盘存取数据操作

          • 磁盘在实现这些操作时,分为查找,搜索,读,写和控制。
          • 查找:将读写头定位到指定的柱面并选择指定的磁头
          • 搜索:指定的磁头寻找要访问的记录块

        3)平均存取时间

          • 平均存取时间是反映磁盘数据操作速度的指标,单位是毫秒(ms)。
          • 它包括三个时间段,分别是平均寻道时间,平均定位时间和转动延迟。
          • 平均定位时间+转动延迟统称为等待时间

      

      4.数据传输速率  

        1)计算公式

          • TB:一个磁道上记录的字节数
          • T:磁盘每旋转一圈所需要的时间         

              

          • s:每个磁道的扇区数
          • b:每个扇区所存储的字节数

          • rpm磁盘转速

              

         2)计算公式变形

              

      3)如果未给出每次到的扇区数以及每扇区的存储字节数,则可以根据以下公式计算磁盘的平均数据传输速率 

                    

        4)举例说明

      假设一个有3个盘片的硬盘,共有4个记录面,转速为7200转/分,盘面有效记录区域的外直径为30cm,内直径为10cm,记录位密度为250位/mm,磁道密度为8道/mm,每磁道分为16个扇区,每扇区512字节。

          • 总磁道数=4*8*(30-10)/2*10=3200道

          • 非格式化容量=道密度w*3.14*最内圈直径*总磁道数/8bit/1024/1024=(250*3.14*10*10*3200)/8/1024/1024=29.95MB

          • 格式化容量=总磁道数*每一个磁道的扇区数*每扇区的字节数=3200*16*512/1024/1024=25MB

          • 平均数据传输速率=TB/T=(16*512*7200/60)/1024=960kb/s    

     

      5.磁盘调度算法 

        1)磁盘调度定义

      磁盘是一个可以被多个进程共享的一个设备,当多个进程请求访问磁盘的时候,为了保证信息的安全,系统在每一时刻只允许一个进程输入输出磁盘,其余进程只能等待,因此,操作系统应该采用一种适当的调度算法,使各进程对磁盘的平均访问时间最短,这里指的一般是寻道时间,因为等待时间与磁盘本身的结构有关。(平均等待时间是磁盘转速时间的一半)磁盘调度分为移臂调度和旋转调度两类,并且要先进行移臂调度然后再进行旋转调度,由于磁盘最耗时的是寻道时间,因此,磁盘调度的目标使磁盘的平均时间最短,当磁盘的移动壁定位后,有多个进程等待访问这个柱面的时候,应当如何决定这些进程的访问顺序呢?这就是旋转调度要考虑的问题。系统应该选择延迟时间最短的进程对磁盘的扇区进行访问, 当有若干个等待进程请求访问磁盘上的信息时,旋转调度应考虑三种情况1.进程请求访问的是同一磁道上不同编号的扇区2.进程请求访问的是不同磁道上不同标号的扇区3.进程秦请求的是不同磁道上统一编号的扇区,对于1、2两种情况,旋转调度总是让首先到达旋转磁头位置下的扇区进行传输操作,而对于不同磁道同一扇区编号的请求操作,旋转调度可以任选一个读写磁头位置下的扇区进行操作。   

              

          

        2)磁盘调度算法种类

        • FCFS:先来先服务算法

          • 按照先来后到的顺序,没有做任何优化
          • 优点:公平简单,使每个请求都会得到处理,不会出现某个请求长时间得不到请求的情况
          • 缺点:平均寻道时间可能比较长  
        • SSTF:最短寻道时间优先算法

          • 访问的磁道距离当前磁头所在的磁道最近
          • 优点:这样就可以使每次寻道所用的时间最短,FCFS算法会引起磁头在盘面上大范围的移动 
          • 缺点:会因为距离过长而推迟一些请求的服务,甚至导致无限拖延,这种情况称为饥饿。 
        • SCAN:扫描算法(也称电梯算法)

          • 不仅考虑到下一个访问磁道与当前磁道的距离,而且优先考虑再磁头前进方向上的最短查找时间,排除了磁头在磁盘上某个位置的往复移动。就像电梯一样,电梯到了10楼,往上走,即使按下9楼,也不会往回走,而是走到最高目标层再下来,而不是在9层和10层之间做往复运动。 
          • 优点:很大程度上消除了SSTF的不公平性,有利于对中间磁道的请求  
          • 缺点:当磁头由里向外移动过某一磁道的时候,这是恰有一个进程请求访问这个磁道,这是进程必须等待磁头由里向外,再由外向里扫描完要访问的磁道,才能处理这个进程的请求。
        • N-SCAN

        • C-SCAN

          • 规定磁头单向移动,消除对两端磁道不公平的算法。  

            

      

        

  • 相关阅读:
    一些术语
    Professional Frontend Engineering
    爱上阿森纳,爱上一种信仰
    ThinkPHP 和 UCenter接口的冲突
    这个城市
    来自Google的10条价值观
    如何将Gb2312转为unicode?
    未完成的代码(JS)
    微软也用PHP?!
    博客园对"公告"的Js进行了过滤
  • 原文地址:https://www.cnblogs.com/TimeIsChoice/p/8342628.html
Copyright © 2011-2022 走看看