在学习操作系统的过程中,会遇到许多之前没接触过的概念。但是理解起来比较容易,因为在学习的过程中会寻找生活中的例子来与之对应,这样就把这些没接触过的概念与拉近了距离。学习起来就非常的容易,今天给大家分享一下对磁盘调度的理解。
磁盘是可供多个进程共享的设备,当有多个进程都要求访问磁盘时,应采用一种最佳调度算法,以使各个进程对磁盘的平均访问时间最短。由于在访问磁盘的时间中,主要是寻到时间,因此磁盘调度的一个重要目标是使磁盘的平均寻道时间最短。目前常用的磁盘调度算法有先来先服务、最短寻道时间优先、扫面等算法。
先来先服务(First Come First Served, FCFS)
它根据进程请求访问磁盘的先后顺序进行调度,这种算法的优点是公平、简单,而且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,导致平均寻道时间较长。简单来说就是按照已经拍好的顺序来给进程进行调度,不会有插队等其他不公平的现象出现。
最短寻道时间优先(Shortest Seek Time First,SSTF)
这种算法要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。但是这种算法不能保证平均寻道时间最短。也就是从磁盘的某一时刻开始,按照已经给定的顺序去考虑是走正方向距离最短还是走反方向距离最短。
扫描算法(SCAN)
扫面算法又称电梯算法。该算法不仅考虑到了要访问的磁道与当前磁道的距离,更优先考虑磁头当前的移动方面。如果磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象应是其要访问的磁道在当前磁道之外,但是又是距离最短的。这样一直访问,直到没有更外面的磁道需要访问时,才将磁臂转为自外向里移动。也就是说,需要向同一个方向去访问磁道直到没有然后向反方向进行依次访问。
循环扫描算法(CSCAN)
循环扫描算法和扫描算法非常的相似,但是循环扫描算法是规定磁头是单向扫描的,而扫描算法是双向扫描的。也就是说循环扫描法朝一个方向进行访问磁道时,扫描到最大或者最小的时候会顺着原来的方向继续扫描。举个例子来说,比如说磁道最大为200,有磁道号4、18、55、78、145、187、199。如果是按照正方向、从130磁道开始的话,当访问到199的时候会继续4这个磁道而不是扫描78磁道。