热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

磁盘的访问机制及其相关算法

一.磁盘的性能1.磁盘的结构磁盘设备包括一个或者多个物理盘片,每个盘片分为一个或者两个存储面,每个盘面上有若干个磁道,每个磁道间有一定的间隙,每个磁道从逻辑上被划分为若干个扇区(软

一.磁盘的性能

1.磁盘的结构

磁盘设备包括一个或者多个物理盘片,每个盘片分为一个或者两个存储面,每个盘面上有若干个磁道,每个磁道间有一定的间隙,每个磁道从逻辑上被划分为若干个扇区(软盘大约为8-32个扇区,硬盘可多达上百个),一个扇区称为一个盘块或数据块,每个扇区之间有一定的间隙。

《磁盘的访问机制及其相关算法》

注:上图是将一个磁道分为8个扇区。

        显然,若将一个磁盘的内外磁道分为相同的扇区,就会浪费外面磁道的空间。那么,现代磁盘利用了外磁道较内磁道大,所以将磁道划分在不同的环带内,同一环带内的磁道就具有相同数目的扇区,则:外磁道的扇区数目明显大于内磁道的扇区数目。但是,磁道和盘面的几何形式变化会对驱动程序有所影响,则,现代磁盘向操作系统提供的都是虚拟几何的磁盘结构而不是实际的物理几何的规格。

2.磁盘的分类

(1)固定头磁盘

    用途:主要用于大容量磁盘。

    优点:存取速度快;

(2)移动头磁盘

   用途:主要用于中小型磁盘

   缺点:存取速度慢;

   优点:结构简单;

3.磁盘的访问时间

存取数据时,磁头必须能够移动到所指定的磁道上,并等待所指定的扇区的开始位置旋转到磁头下,最后进行数据的读/写。

(1)寻道时间Ts :启动磁臂的时间与磁头到达指定磁道移动n条磁道所经历时间之和。

    Ts = m*n+s;(m为常数)

(2)旋转延迟时间Tx :指定扇区移动到磁头下所需要的时间。

    对于硬盘,平均旋转延迟时间为2ms;

    对于软盘,平均旋转延迟时间为50-100ms;

(3)传输时间Tt:数据从磁盘读出或者对于磁盘写入数据的时间,所以Tt的大小与读/写数据的大小和磁盘的转速有              关。

         Tt = b/rN(b表示读/写的字节数,rN磁盘的旋转速度)

        则:磁盘访问时间: T = Ts + Tx + Tt;

二.磁盘调度算法

1.先来先服务(FCFS)

思想:按照进程请求访问磁盘的先后次序进行调度。

优点:公平.简单,每个进程的请求都能得到满足;

缺点:平均寻道时间较长。

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

思想:每次都优先调度要求访问的磁道的与当前磁头所在磁道最近的进程。

优点:降低了磁盘的平均寻道时间;

缺点:当进程要求访问的磁道远离磁头时,该进程的需求始终得不到满足,可能发生“饥饿”现象。

3.扫描算法(SCAN)

思想:下一个访问的对象应是其欲访问的磁道即在当前磁道之外,又是距离最近的。自里向外的访问直至外面没有磁道需要访问时,将磁臂换为从外向里移动。不断地对于磁盘进行访问,有效的避免了“饥饿”问题。

4.循环扫描算法(CSCAN)

提出背景:当有一个进程请求访问一个磁道,但是磁头刚从里向外越过了这个磁道,则:该进程必须等待磁头从里向外                移动到直至外面没有磁道需要访问时,再从外向里移动,访问完该程序之前的所有进程之后再对于该进程进                行调度;这样对于这个进程的调度产生了时间上的一定延迟。基于此问题,提出了循环扫描算法。

思想:规定磁头的移动方向为单向的。(1)当磁头的移动方向为从里向外时:当磁头移动到最外面的请求访问的磁道并且访问后,磁头立即返回最里面的请求访问的磁道,从里向外进行循环访问。(2)当磁头的移动方向为从外向里,类比(1)即可。

5.FSCAN算法

思想:将磁盘请求队列分为两个子队列。

(1)一个是当前所有请求磁盘I/O的进程所形成的队列,由磁盘调度按照SCAN算法进行调度;

(2)另一个是将在扫描期间新出现的请求磁盘I/O的进程插入等待处理的请求队列。

  则:就不会产生“磁臂粘着”现象。

6.NStepSCAN算法

思想:就是将磁盘请求队列分为N个队列,并且按照先来先服务的算法对于这N个队列进行处理。

当N = 1时为SCAN算法;当N = 2时为FSCAN算法。


推荐阅读
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 探讨如何通过高效的数据库查询和排序策略,优化基于GPS位置信息的附近用户搜索功能,以应对大规模用户数据场景。 ... [详细]
author-avatar
一剑吹雪_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有