当前位置: 首页 > news >正文

操作系统——磁盘操作

文章目录

  • 前言
  • 一、磁盘的结构
  • 二、磁盘调度算法
    • 1、一次磁盘读写操作需要的时间
    • 2、磁盘调度算法
      • ①先来先服务算法(FCFS)
      • ②最短寻找时间优先(SSTF)
      • ③扫描算法(SCAN)
      • ④LOOK 调度算法
      • ⑤循环扫描算法(C-SCAN)
      • ⑥C-LOOK 调度算法
  • 三、减少磁盘延迟时间的方法
  • 四、磁盘的管理
    • 1、磁盘初始化
    • 2、引导块
    • 3、坏块的管理
  • 总结


前言

本文的主要内容是操作系统中磁盘操作的一些基础知识,包括磁盘的结构、磁盘的调度算法、减少磁盘延迟时间的方法以及磁盘的管理,重点理解和掌握磁盘的调度算法和减少磁盘延迟时间的方法这两部分内容。


一、磁盘的结构

磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据。磁盘的简单示意图如下图所示。
在这里插入图片描述
由图中可以看到,主要的构成包括磁盘、磁头、磁头臂、永磁铁、马达、主轴、以及空气过滤片等。
磁盘的盘面会被划分成一个个的磁道,磁道又会被划分成扇区,且每个扇区所存放的数据量相同,由于外层扇区的面积大于内层扇区,因此扇区越靠内,也就是扇区面积越小,数据密度越大。磁盘盘面的划分示意图如下图所示。
在这里插入图片描述
在磁盘中读或者写数据:要在磁盘中读或者写数据,首先需要磁头臂带动磁头,将其移动到用户想要读或者写的扇区所在的磁道,然后磁盘会转动起来,让目标扇区从磁头下面划过,这样就可以完成对扇区的读或者写操作了。
一个磁盘由多个盘片构成,如下图所示。
在这里插入图片描述
一个盘片可能会有两个盘面,也就是正面和反面。每个盘面都有一个磁头,所有的磁头都连在同一个磁臂上, 因此所有磁头的移动方向都是一样的。所有盘面中相对位置相同的磁道就组成了柱面,比如所有盘面最内侧的磁道就构成了一个柱面。
可以用 (柱面号,盘面号,扇区号) 来确定任意一个磁盘块,从磁盘块中读或者向其中写的步骤为:
①根据柱面号移动磁臂,让磁头指向指定的柱面;
②激活指定盘面对应的磁头;
③磁盘旋转的过程中,指定的扇区会从磁头下面划过,这样就完成了对指定扇区的读或者写。
磁头有可移动的和不可移动的两种,可移动的每个盘片只有一个磁头,不可移动的每个盘片有多个磁头,如下图所示。
请添加图片描述
磁盘的盘片可以更换的称为可换盘磁盘,不可更换的称为固定盘磁盘。
对磁盘的结构这部分内容简单的总结一下,如下图所示。
在这里插入图片描述


二、磁盘调度算法

1、一次磁盘读写操作需要的时间

寻找时间,也称寻道时间,它是指在读写数据前,将磁头移到指定的磁道所花的时间,包括启动磁头臂的时间和移动磁头的时间。
延迟时间,它是指通过旋转磁盘,使磁头定位到目标扇区所需要的时间,一般来说,找到目标扇区平均需要转半圈。
传输时间,从磁盘读出或者向磁盘写入数据所经历的时间。
在这里插入图片描述
总的时间 = 寻找时间+延迟时间+传输时间
延迟时间和传输时间都与磁盘的转速有关,而转速是硬件的固有属性,因此操作系统无法优化延迟时间和传输时间,但是操作系统的磁盘调度算法会直接影响寻道时间。

2、磁盘调度算法

①先来先服务算法(FCFS)

先来先服务算法根据进程请求访问磁盘的先后顺序进行调度。
一个先来先服务算法的例子如下图所示。
在这里插入图片描述
先来先服务算法的优点:公平;如果请求访问的磁道比较集中,算法的性能还可以。
先来先服务算法的缺点:如果有大量的进程竞争使用磁盘,请求访问的磁道很分散,则该算法的性能很差,寻道时间长。

②最短寻找时间优先(SSTF)

最短寻找时间优先算法会优先处理与当前磁头距离最近的磁道,可以保证每次的寻道时间最短,但不能保证总的寻道时间最短。其本质就是贪心算法的思想,只选择眼前最优,但是总体未必最优。
一个最短寻找时间优先算法的例子如下图所示。
在这里插入图片描述
最短寻找时间优先算法的优点:性能较好,平均寻道时间短。
最短寻找时间优先算法的缺点:磁头在一个小区域内来回移动,可能产生饥饿现象。

③扫描算法(SCAN)

扫描算法的提出是为了防止饥饿的产生,因此规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。由于磁头移动的方式很像电梯,因此也叫电梯算法。
一个扫描算法的例子如下图所示。
在这里插入图片描述
在磁头移动且磁道没有都访问完时,磁头只有移到最边上的磁道才能改变磁头的移动方向继续访问剩余的磁道。
扫描算法的优点:性能较好;平均寻道时间短;不会产生饥饿现象。
扫描算法的缺点:只有到达最边上才能改变磁头的移动方向,但是有时候往往不需要移动到最边上;算法对于各个位置磁道的响应频率不平均,越靠近两边的两次访问之间的时间差最短,中间的时间差最大。

④LOOK 调度算法

扫描算法只有到达最边上才能改变磁头的移动方向,而 LOOK 调度算法就是为了解决这个问题,即如果在磁头移动方向上已经没有别的请求,就可以立即改变磁头的移动方向,该算法边移动边观察,因此叫 LOOK 调度算法。
一个 LOOK 调度算法的例子如下图所示。
在这里插入图片描述
LOOK 调度算法的优点:相比于扫描算法,不用移动到最边上才改变磁头方向,寻道时间进一步缩短。

⑤循环扫描算法(C-SCAN)

循环扫描算法是为了解决扫描算法对各个位置磁道响应频率不平均的问题,因此规定只有磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请求。
一个循环扫描算法的例子如下图所示。
在这里插入图片描述
循环扫描算法的优点:相比于扫描算法,对于各个位置磁道响应频率很平均。
循环扫描算法的缺点:移动和返回时都到了最边缘的位置,有时候并不需要,因此增加了寻道时间。

⑥C-LOOK 调度算法

C-LOOK 调度算法是为了解决循环扫描算法磁头的移动和返回时都到了最边缘的位置的问题。C-LOOK 调度算法是,如果磁头移动方向上已经没有磁道访问请求了,就可以立即让磁头返回,并且磁头只需要返回到有磁道访问请求的位置即可。
一个 C-LOOK 调度算法的例子如下图所示。
在这里插入图片描述
C-LOOK 调度算法的优点:相比于循环扫描算法,寻道时间进一步缩短。
对磁盘调度算法这部分内容简单的总结一下,如下图所示。
在这里插入图片描述


三、减少磁盘延迟时间的方法

假设要连续读取橙色区域的2、3、4号扇区,如下图所示。
在这里插入图片描述
因为磁头读取一个扇区的内容后,需要一小段的时间处理,但是盘片又在不停地旋转着。如果2、3号扇区相邻的排列着,则读完2号扇区后无法连续不断地读入3号扇区,必须等盘片继续旋转,3号扇区再一次划过磁头的时候,才能读取3号扇区的内容,这样就会有较长的延迟时间。
一个减少延迟时间的方法就是采用交替编号,如下图所示。
在这里插入图片描述
采用交替编号的策略可以让逻辑上相邻的扇区在物理上有一定的间隔,这样在读完上一个扇区后,接下来的一个扇区可以用来处理数据,因此使得读取连续的逻辑扇区所需要的延迟时间更短。
前面提到过磁盘的物理地址是 (柱面号,盘面号,扇区号),而不是 (盘面号,柱面号,扇区号),因为这样在读取地址连续的磁盘块时,可以减少磁头移动所消耗的时间。
如果盘面与盘面之间相对位置相同处扇区编号也相同,如下图所示。
请添加图片描述
这样的话,在0号盘面转动两圈后,其内侧扇区全部读完,紧接着是无法连续读取1号盘面的内侧扇区的,需要等到该扇区第二次划过磁头时才可以,这样仍然增加了延迟时间。
可以采取错位命名的方法解决这个问题,如下图所示。
请添加图片描述
可以让1号盘面的扇区和0号盘面的扇区错开一个扇区的位置,这样在读完0号盘面的扇区后就可以接着读1号盘面的扇区了。
对减少磁盘延迟时间的方法这部分内容简单的总结一下,如下图所示。
在这里插入图片描述


四、磁盘的管理

1、磁盘初始化

磁盘初始化步骤:
①进行低级格式化,也就是物理格式化,将磁盘的各个磁道划分为扇区。一个扇区通常可以分为头、数据区域、尾三个部分,管理扇区所需要的数据结构一般存放在头和尾两个部分;
②将磁盘分区,每个分区由若干个柱面组成;
③进行逻辑格式化,创建文件系统,包括创建文件系统的根目录、初始化存储空间管理所用的数据结构。

2、引导块

计算机开机时需要进行一系列的初始化工作,这些工作是通过执行初始化程序(自举程序)完成的。初始化程序放在了 ROM 中,而 ROM 中的数据在出厂时就已经写入了,此后也不能再修改。
如果是这种方式的话,要更新自举程序会很不方便,因此只在 ROM 中放入很小的自举装入程序,而完整的自举程序放在磁盘的启动块(引导块或启动分区)上,启动块位于磁盘的固定位置。
在开机时,计算机先运行自举装入程序,通过执行该程序就可以找到引导块,并将完整的自举程序读入内存,完成初始化。
拥有启动分区的磁盘称为启动磁盘或者系统磁盘,比如Windows系统中的 C 盘。

3、坏块的管理

对于一些坏了的、无法正常使用的扇区,也就是坏块,操作系统是无法修复的,应该将坏块标记出来,以免错误地使用到它。
简单的磁盘可以在逻辑格式化时对整个磁盘进行坏块检查,标明哪些扇区是坏扇区,比如可以在文件分配表上标明,这种方式下,坏块对操作系统不透明。
对于复杂的磁盘,磁盘控制器会维护一个坏块链表,在磁盘出厂前进行低级格式化时就将坏块链进行初始化。此外还会保留一些备用扇区,用于替换坏块,称为扇区备用,这种方式下,坏块对操作系统透明。
对磁盘的管理这部分内容简单的总结一下,如下图所示。
在这里插入图片描述


总结

以上就是操作系统——磁盘操作的所有内容了,本文中介绍到的磁盘的结构和磁盘的管理是比较基础的内容,需要熟知,几种磁盘的调度算法也需要掌握,减少磁盘延迟时间的方法这部分内容比较难懂,可以结合磁盘的结构一起学习。
参考视频:
磁盘的结构
磁盘调度算法
减少磁盘延迟时间的方法
磁盘的管理

相关文章:

  • DSPE-PEG-FSHB,FSHB-PEG-DSPE,磷脂-聚乙二醇-靶向多肽FSHB
  • JAVA 力扣练习题:回文数
  • 【Git】credential.helper
  • PDF格式分析(六十九)——注释字典
  • mysql45讲记录
  • 软件测试工程师要摆正自己的心态和位置
  • Vue的双向绑定及应用
  • 编程的基础知识
  • Vue介绍和入门,包括配置等
  • 编程猫创作工具:新版Kitten新体验
  • SpringBean面试题
  • Linux installation of Davinci Adaptive IDE
  • 基于SSM的住院病人监测预警信息管理系统毕业设计源码021054
  • 字节一面:说说TCP的三次握手
  • 数据中台不是万能钥匙,企业需求才是数据中台建设的根本
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Android框架之Volley
  • angular2开源库收集
  • chrome扩展demo1-小时钟
  • es6(二):字符串的扩展
  • MySQL数据库运维之数据恢复
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • PHP的类修饰符与访问修饰符
  • select2 取值 遍历 设置默认值
  • 阿里云应用高可用服务公测发布
  • 闭包--闭包之tab栏切换(四)
  • 我看到的前端
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • puppet连载22:define用法
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 达梦数据库知识点
  • # 计算机视觉入门
  • #100天计划# 2013年9月29日
  • #laravel 通过手动安装依赖PHPExcel#
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #pragma预处理命令
  • #QT(串口助手-界面)
  • (1)Android开发优化---------UI优化
  • (C#)一个最简单的链表类
  • (多级缓存)缓存同步
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (七)Knockout 创建自定义绑定
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Unity3DUnity3D在android下调试
  • (转载)Linux 多线程条件变量同步
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置