zoukankan      html  css  js  c++  java
  • 磁盘管理1

    第八章 磁盘管理

    7.1 磁盘I/O

    块存储,DMA

    一、磁盘结构

    1. 组织

     

     

     

     

    磁头(Head)(盘面)

    盘面数量==磁头数量

    作用:用来写入和读取数据的

    径向运动寻道

    磁道(Track)(柱面)

    从外面到里面最外面是0磁道

    扇区(Sector)(块)

    磁道上面的最小的单位

    默认大小512字节

     

    磁盘是按柱面进行读写的,表示一个柱面的大小

    磁盘大小=柱面的大小*柱面的数量

    柱面的大小=一个磁道的大小*磁头数量

    一个磁道的大小=一个扇区的大小*扇区数量/每个磁道

     

    1. 性能

    ①寻道时间

    磁头移动到指定磁道上需要的时间。

    ②旋转延迟

    指定扇区移动到磁头下面所经历的时间。

    ③传输时间

    把数据从磁盘读出或向磁盘写入数据所经历的时间。

    二、磁盘调度算法

    1. 先来先服务(FCFS)

    这是最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法 的优点是公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求 长期得不到满足的情况。伹此算法由于未对寻道进行优化,致使平均寻道时间可能较长。 6-30示出了有9个进程先后提出磁盘I/O请求时,按FCFS算法进行调度的情况。这里, 将进程号(诸求者)按他们发出请求的先后次序排队。这样,平均寻道距离为55.3条磁道, 与后面即将讲到的几种调度算法相比,其平均寻道距离较大,故FCFS算法仅适用于请求磁盘I/O进程数目较少的场合。

    从40号磁道开始

    被访问的下一个磁道号

    磁道数

    22

    18

    42

    20

    40

    2

    4

    36

    80

    76

    50

    30

    10

    40

    74

    64

    总寻道数

    286

     

    1. 最短寻道时间优先(SSTF)

    该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每 次的寻道时间短,但这种算法不能保证平均寻道时间最短。图6-3丨示出按SSTF算法进 行调度时,各进程被调度的次序、每次磁头移动的距离,以及9次磁头平均移动的距离9 比较阁6-30和图6-3丨可以看出,SSTF算法平均每次磁头移动的距离明显低于FCFS算法 的距离,因而SSTF较之FCFS有更好的寻道性能,故过去矜一度被广泛采用。

    从40号磁道开始

    被访问的下一个磁道号

    磁道数

    40

    0

    42

    2

    50

    8

    74

    24

    80

    6

    22

    58

    10

    12

    4

    6

    总寻道数

    116

     

    1. 扫描算法

    ①双向扫描

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

     

    从40号磁道开始,上一次在50号磁道

    被访问的下一个磁道号

    磁道数

    40

    0

    22

    18

    10

    12

    4

    6

    42

    38

    50

    8

    74

    24

    80

    6

    总寻道数

    112

     

    ②单向扫描(循环扫描)(CSCAN)

    单向扫描类似于双向扫描,但是它规定磁头单向移动,只向里或外。

    从40号磁道开始,上一次在50号磁道

    被访问的下一个磁道号

    磁道数

    40

    0

    22

    18

    10

    12

    4

    6

    80

    76

    74

    6

    50

    24

    42

    8

    总寻道数

    150

     

    ③N步扫描

    SSTF、SCAN及CSCAN几种调度算法中,都可能出现磁臂停留在某处不动的情况, 例如,有一个或几个进程对某一磁道有较高的访问频率,即这个(些)进程反复请求对某一磁道 的I/O操作,从而垄断了整个磁盘设备。我们把这一现象称为“磁臂粘着”(Arnistickiness)。 在高密度磁盘上容易出现此情况。N步SCAN算法是将磁盘请求队列分成若干个长度为N 的子队列,磁盘调度将按FCFS算法依次处理这些子队列。而每处理一个队列时又是按 SCAN算法,对一个队列处理完后,再处理其他队列。当正在处理某子队列时,如果又出 现新的磁盘I/O请求,便将新请求进程放入其他队列,这样就可避免出现粘着现象。当N 值取得很大时,会使N步扫描法的性能接近于SCAN算法的性能:当N=1时,N步SCAN 算法便蜕化为FCFS算法。

    ④FSCAN

    FSCAN算法实质上 是N步扫描的简化,即FSCAN只将磁盘请求队列分成两个子队列。一个是由当前所有请求磁盘I/ O的进程形成的队列,由磁盘调度按SCAN算法进 行处理。另一个是在扫描期间,将新出现的所有请求磁盘I/ O的进程放入等待处理的请求 队列。这样,所有的新请求都将被推迟到下一次扫描时处理。

  • 相关阅读:
    淘女郎相册爬虫(Python编写)
    在 Linux 命令行中使用和执行 PHP 代码
    PHP PhantomJs中文文档(翻译)
    PHP
    PHP
    PHP
    PHP — 用PHP实现一个双向队列
    Redis — CentOS6.4安装Redis以及安装PHP客户端phpredis
    Linux
    Memcache学习笔记
  • 原文地址:https://www.cnblogs.com/giaogiaogiao/p/12808850.html
Copyright © 2011-2022 走看看