浅谈计算机中的存储模型(四)磁盘

来源:互联网 发布:杜兰特2017总决赛数据 编辑:程序博客网 时间:2024/06/05 18:45

最后一片文章简单聊聊磁盘相关知识
前几篇文章
浅谈计算机中的存储模型(一)存储体系
浅谈计算机中的存储模型(二)物理内存
浅谈计算机中的存储模型(三)虚拟存储器


目录

  • 磁盘
    • 磁盘结构
    • 磁盘存取
    • 磁盘调度
      • 磁盘调度算法
        • FCFS
        • SSTF
        • SCAN
    • 磁盘缓冲和预读

磁盘

磁盘是计算机物理存储媒介,一般我们的程序在未执行前都是保存在磁盘上 。因为磁盘读取速度慢,所以相对价格相对低廉,容量也大


磁盘结构

侧视图

从侧面我们可以看到磁盘实际上是物理运动,磁盘读取数据时实际上是磁头在不断的转动。所以实际上磁盘的执行速度满了内存大约100000倍左右。

俯视图

俯视图我们可以看到磁盘也是分块的,一个扇区为一块,一般一块大小为512B,同圆的扇区(同心环)构成了一个磁道,扇区中间存在间隙,间隙是不存出数据的。
从图中我们能看出虽然扇区的大小不同,从外侧到内侧减小,但是容量都一样,所以外侧面积大的扇区密度小,内侧面积小的扇区密度大。


磁盘存取

磁盘一般是被磁盘控制器控制来存取数据的

计算机存储体系

磁盘控制器可以控制多块磁盘。磁盘控制器将数据从磁盘读取到IO总线上,通过总线传送到内存中去,内存其实相当于磁盘的一个高速缓存。

磁盘存取一般分为三个步骤:
1.寻道时间
磁盘控制器将磁头组合定位到磁盘所在磁道的主面上所需要的时间
2.旋转延迟
磁盘控制器等待访问块的第一个扇区转到磁头下的时间
3.传输时间
当磁盘控制器读取或写数据时,数据所在磁盘和扇区间的空隙经过磁头的时间。


磁盘调度

数据是磁盘控制器控制磁头组合来读取数据的,但是磁头组合只有一个,而页面请求顺序是随意的,我们要在最短的时间内完成最多的页面请求,这就要通过磁盘调度算法。
注意磁盘也会根据内存的分页机制来进行分页,保持和内存基本大小单位一致,这是由操作系统决定的。

FCFS–先来先服务调度算法

原理:磁盘页面请求排成一个队列,先请求的我们先读它,后请求的我们后来再读它。

优点:公平
缺点:效率太低

题目:
假设磁盘访问序列:98,183,37,122,14,124,65,67。读写头起始位置:53。求:磁头服务序列和磁头移动总距离(道数)。

如下图
这里写图片描述
图片来源百度百科

SSTF–最短寻道时间算法

原理:优先选择当前距离磁头最近的请求,离我最近的我肯定访问最快。

优点:改善了平均耗时
缺点:某些请求比如距离磁头比较远的请求可能长时间得不到响应。

如下图
这里写图片描述
图片来源百度百科

SCAN–电梯调度算法

原理:当有访问请求时,磁头按一个方向移动,此方向服务完毕后,转换方向,类似电梯,一次从底层到顶曾送完人,在从顶层向底层送,不会乎高乎低。磁盘也是高速旋转设备,让它停止并转换方向也是非常耗时的。

优点:寻道性能好,可避免饥饿现象。

如下图
这里写图片描述
图片来源百度百科


磁盘预读和磁盘缓冲

这二者都是为了提高性能和效率,如何衡量性能和效率呢,就是磁盘IO的次数,次数越少说明性能和效率越高。

磁盘预读:每次磁盘读取数据时,总会多读几页数据,因为存储是顺序存储的,用到此块数据很大可能会用到相邻的后几块数据,提前从磁盘读出可以减少磁盘IO次数。预读的页一般是证书呗

磁盘缓冲:磁盘缓冲也是,我们每次写磁盘文件时并不会立刻写入到磁盘中去,比如你给文件中一个字母a,它如果立刻写入磁盘那效率可就太低了,实际上是先写到缓冲中,等到缓冲满或者有必要时才刷新到磁盘中去。


磁盘就简单介绍到这里,如果想详细了解磁盘内部的一些知识,推荐去看《数据库系统实现》这本书的磁盘部分,讲的比较详细。


计算机中的存储模型通过这几篇文章我就简单介绍到这里,我的目的是希望能构建出一个存储模型的体系结构,很多地方并没有深入,个人觉得如果能形成一个存储体系结构在脑海中,这部分知识就算是理解了,接着再想了解或深入其他相关的知识直接去看就好

0 0
原创粉丝点击