磁盘

现代计算机系统最常用的外部大量存储就是磁盘或者硬盘。

磁盘的大致结构为图上所示。他包括一系列的盘片(platter),在盘片的两面都涂着磁质材料。通过在盘片上进行磁性记录可以保存信息。

读写磁头(read-write head)在一个盘片“飞行”从而可以读写数据。磁头是悬挂在磁臂(arm)上的,磁臂将所有磁头作为一个整体和进行一起移动。

每一个磁盘的盘片(platter)上逻辑的可以分为磁道(track)。磁道又可以分为扇区(sector)。同一磁道上的柱面形成了柱面(cylinder)。每个磁盘驱动器有数千个同心柱面,每个柱面又有数百个扇区。

一般判断一个磁盘的好坏是通过传输速率定位时间
传输速率:在驱动器和计算机之间数据传输的速率。
定位时间又分为寻道时间(移动磁臂到所有的柱面所需时间)和 旋转延时(旋转磁臂到所要的扇区所需要的时间)。

磁盘驱动器通过I/O总线的一组电缆连到计算机。在使用中有多种可用的总线,这就对应了多种 I/O接口。其中包括 硬盘接口技术(ATA)串行接口(SATA),外部串行(eSATA),通用串口总线(USB)

数据传输的总线由控制器来进行。在计算机的那一头的叫做主机控制器, 在I/O驱动器的这一头为磁盘控制器

I/O操作在执行的时候,计算机加粗样式会下达一个命令到主机控制器,接着主机控制器通过消息将该命令下达给 磁盘控制器, 磁盘控制器开始操作磁盘驱动器工作, 磁头和磁臂开始工作。磁盘控制器通常具有内置缓存,他会把数据传输到缓存上,而到主机的传输,则由内置缓存和主机控制器进行。

SSD

SSD 具有与传统硬盘相同的特性,容量大,但是它会更可靠,他们有移动部件;而且更快,没有寻道时间和延迟

磁盘连接

计算机访问磁盘有两种方式。一种方式是通过I/O端口,称为主机连接存储, 另外一种是分布式系统的远程主机(称为网络连接存储)。
主机连接存储:主机连接通过本地的端口来访问存储。这些端口使用多种技术。典型的台式机采用I/O 总线,一般SATA的接口更为常用。
网络连接存储:网络连接存储(NAS)设备是一种专用的存储结构,可以通过数据网络来进行远程访问。客户机通过远程过程调用(RPC)来访问连接存储。 RPC通过TCP或者UDP协议进行访问。

存储区域网络

网络连接存储有一个缺点: 存储I/O操作消耗太多的网络带宽。从而增加网络的延迟。这在大型C/S 的模式下非常严重。
存储区域网络(SAN)为专用网络,它是在网络协议上使用了一种新的存储协议。

它的优势是在于灵活。多个主机和多个存储阵列(storage array)之间可以连接到同一个SAN上,存储可以动态分配到主机。 也就是说当主机的磁盘不够时,他可以通过配置SAN 来进行动态的磁盘分配。

磁盘调度

每当进程需要进程磁盘访问的时候,他就向操作系统发出一个系统调用。每个请求需要一些信息:

  • 这个操作是输入还是输出
  • 传输的磁盘地址是什么
  • 传输的内存是什么
  • 传输的扇区数是多少
    如果磁盘驱动器和控制器空闲,则立即执行请求,否则需要将这个请求添加到磁盘驱动器的请求队列中。

对于处于请求队列的所有I/O请求,操作系统在进行选取的时候,应该需要一种调度算法来保证I/O设备的效率最大化。那么如何来评估这个效率呢
对于磁盘驱动器(就是开始那张图的全部零件加起来的装置)是根据两个量来进行评估的。访问速度磁盘带宽
根据上面的图再来回顾下两个概念:
寻道时间:移动磁臂到所有的柱面所需时间。
旋转延时:旋转磁臂到所要的扇区所需要的时间。
磁盘带宽:传输自己的总数除以所需要的总时间。

在考虑三个因素的情况下,下面有不同的调度算法。

FCFS(先来先服务)

和进程的CPU调度和 内存调度一样,先到的先服务。实现起来比较见到,直接通过一个FIFO的队列实现即可。

最短寻道时间优先(SSTF)

顾名思义:当在移动磁头到别处处理请求之前,处理靠进当前磁头位置最近的请求
和CPU调度的最短作业优先(SJF)调度一样,它会导致磁盘请求的饥饿

SCAN调度(扫描)

这种调度方法也叫电梯调度,这个也比较好理解, 磁臂从磁盘的一段开始,向另一端移动,在移过每个柱面时,处理请求。当到达磁盘的另一端时,磁头反方向移动,继续处理。

C-SCAN(循环扫描)
这个是电梯算法的一个变种,它会把向一个方向进行扫描,直到磁盘的另一端结束,然后立马回到磁盘的另外一端,再次进行扫描。

LOOK 调度

它是C-SCAN的变种,它在扫描的时候并不是扫描整个磁盘,而是在队列中的最小和最大之间。

如何选择调度算法?
SSTF是最常见的,但是对于磁盘负荷较大的系统,SCAN和C-SCAN会更好,因为他不会产生饥饿。当然对于任何调度算法,性能还取决于请求的数量和类型。除此之外,文件的分配方式也会影响磁盘的服务请求。后面来讲文件系统结构和方式。
对于没有没有移动磁头的SSD来说,它通常可以用FCFS的策略。

————————————————————————————

磁盘管理

磁盘格式化

一个新的磁盘是一个空白盘:它只是一个磁性记录材料的盘子。在磁盘上可以存储数据之前,他必须分为扇区,以便磁盘控制器能够读写。这个过程叫做低级格式化或者物理格式化
低级格式化为每个扇区使用特殊的数据结构,填充磁盘。每个扇区的数据结构通常包括头部,数据区域和尾部。头部和尾部包含了一些磁盘控制器的使用信息。如扇区的纠错代码(Error-Correcting, ECC)。当控制器通过正常I/O写入一个扇区的数据时,ECC采用根据区域所有字节而计算的新值来进行更新。在读取一个扇区时,ECC会重新计算。并且与原来的值进行比较。如果存储的和计算的值不一样,表示扇区已经损坏,并且扇区可能已经损坏。

大多数磁盘在制作的时候已经进行了低级格式化。这种格式化也方便磁盘制造商进行测试磁盘,并且初始化逻辑块号到无损磁盘扇区的映射。

引导块

为了开始运行计算机,如打开电源或者重启时,它必须有一个初始化的程序来运行。它初始化系统的所有部分,从CPU寄存器到设备控制器和内存,接着启动操作系统。
对于大多数计算机,自举程序处于只读存储器 (ROM)。它是只读的数据,不会被计算机病毒影响,所以位于ROM的自举程序一般放在固定位置,它的功能就是在通电或者复位的时候,从磁盘上调入完整的** 引导程序**。 这个引导程序存储在磁盘上,通常称为启动块。

windows允许将磁盘分为多个分区,有一个分区是引导分区(boot partition),其中包含了操作系统和设备程序。 一般的windows系统将引导代码存放在磁盘的第一个扇区,它为主引导记录(MBR)。
windows的启动过程,通电后,首先加载并允许在系统ROM中的代码,这个代码会指示系统从MBR上加载引导代码。除了引导代码,MBR还包括 一个分区表和一个表示(标示那个分区为引导系统)。

坏块

因为磁盘具有移动部件并且容错差(磁头在磁盘表面上方),容易出现故障。有时候,这种故障时彻底的,需要更换磁盘,并且从备份介质上将其内容恢复到新盘。更为常见的是, 一个或者多个扇区坏掉,而且大多数磁盘出厂时就有坏块。

复杂的磁盘在恢复坏块时,它的控制器维护磁盘内的坏块列表。这个列表在出厂低级格式化时初始化,并且在磁盘使用寿命内更新。低级格式化将一些块放在一边作为备用,操作系统看不到这些块。控制器可以采用备用块来逻辑地代替坏块。这种方案叫做扇区备用

一般的扇区处理:
操作系统尝试读取逻辑块87
控制器计算ECC,发现87为坏块。他向操作系统汇报这一情况。
当操作系统下次启动时可以运行特殊命令,请求控制器转换成备用块替代坏块
之后的访问87,就使用的是 备用块。
它的替代方案是:扇区滑动。 假定17号扇区变坏,并且第一个可用备用逻辑扇区在202之后,那么他就会进行滑动,类似于在有序数组的插入一个中间值,所有的扇区都往后移动一个扇区。直到扇区18写入扇区19。然后以后的17就映射到现在的18。

《操作系统》之磁盘篇相关推荐

  1. linux远程图形操作系统,二、Linux操作系统之操作篇-Xmanager 远程访问Linux图形化界面...

    2.Linux操作系统之操作篇-Xmanager 远程访问Linux图形化界面 红帽配置Xmanager 远程访问Linux: 1. 修改gdm配置文件,修改内容为粗体部分. /etc/gdm/cus ...

  2. 操作系统之磁盘调度——SCAN实例讲解

    操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...

  3. SkyEye仿真平台下的操作系统实验- 准备篇(一)

    目录 01.helloworld! 02.链接脚本 03.Arm汇编语言 04.汇编和C语言混合编程 <一步步写嵌入式操作系统>从零开始实现了操作系统leeos,并在SkyEye虚拟机中进 ...

  4. 【操作系统】BIOS篇

    在之前的文章中我们说过,BIOS除了开机自检和加载引导扇区之外,还提供了很多有用的中断程序,这些程序是我们在真正启动操作系统之前的阶段和硬件交互的利器.既然叫基本I/O软件,那么我们就来看看其中比较重 ...

  5. 【UCOSIII操作系统】任务篇(1)创建任务

    UCOSIII操作系统 UCOSIII操作系统--任务篇(1)创建任务 一.UCOSIII--任务 简介 二.创建任务流程 1.定义任务栈 2.定义任务控制块TCB 3.定义任务主体函数 4.创建任务 ...

  6. Hadoop 调优之Linux操作系统调优篇

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  7. 测试工程师必备linux基础一(服务器磁盘篇)

    测试工程师必备linux基础 第一篇服务器磁盘认识及操作 测试过程中,有一个很重要的东西,测试环境搭建,希望大家在看了本文后能够对于磁盘有一个初步的概念.本文讲述linux服务器中,磁盘的操作流程,R ...

  8. Linux IO磁盘篇整理小记

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  9. 操作系统——进程原理篇

    进程 进程及线程是操作系统对CPU进行管理的手段,其中最重要的内容是并发.因为要并发,所以发明了进程,又进一步发明了线程.进程是在CPU层面上提供并发的抽象(进程与进程间并行):线程则属于在进程这个层 ...

最新文章

  1. 【swjtu】数据结构实验7_Huffman编码
  2. 编程语言python特点-常用编程语言介绍及各特点
  3. 如何用Snapgene 4.3.6进行序列比对及查找碱基位点
  4. 光流 | 高精度:HS光流计算(matlab源代码)
  5. React的组件模式
  6. 前端学习(764):创建对象的三种方式
  7. 论文浅尝 | 基于属性embeddings的跨图谱实体对齐
  8. linux文本处理脚本题,Linux文本处理工具sed练习题
  9. [界面开发新秀]免费的AYUI,开发360领航版系列教程[2/40]
  10. Windows下搭建Android开发环境
  11. JSP中鼠标禁用代码
  12. sql2008转到sqk2000的步骤
  13. 永洪BI-报表生成URL
  14. 两侧广告HTML,网页左右两侧居中的对联广告代码
  15. JS时间增加2个小时
  16. python,练习乌龟吃鱼
  17. 雷电云手机无限雷币版v1.60
  18. 动易百度快照劫持,百度快照被劫持了怎么办?
  19. matlab shading颜色设置,关于matlab中pcolor显示图片时的shading设置问题
  20. 【2020-10-28】DS12C887+驱动

热门文章

  1. 可以替换十五个整版软件的免费软件
  2. 七年级计算机与信息安全教案,苏教版七年级信息技术上册2.3《计算机与信息安全》教学课件1 (共18张PPT)...
  3. x201换风扇_笔记本怎么换风扇 ThinkPad X201i换风扇图文教程
  4. Imail 邮件服务器的SMTP配置与 .NET 下使用 System.Net.SmtpClient 发送邮件
  5. SSD系列之一:安装,调试(caffe)
  6. xp系统蓝屏代码7b_如何解决U盘安装WindowsXP系统出现蓝屏并提示oxoooooo7b错误代码...
  7. 酒店酒吧幕墙亮化工程施工方案
  8. Vuforia网站及Vuforia码下载使用方法
  9. 【板栗糖GIS】arcmap—如何防止数据路径失效出现红色感叹号
  10. CSDN排名第一的人--2019