您的位置:首页 > 理论基础

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

2015-10-09 20:46 651 查看
最后一片文章简单聊聊磁盘相关知识

前几篇文章

浅谈计算机中的存储模型(一)存储体系

浅谈计算机中的存储模型(二)物理内存

浅谈计算机中的存储模型(三)虚拟存储器

目录

磁盘

磁盘结构

磁盘存取

磁盘调度

磁盘调度算法

FCFS

SSTF

SCAN

磁盘缓冲和预读

磁盘

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

磁盘结构



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



俯视图我们可以看到磁盘也是分块的,一个扇区为一块,一般一块大小为512B,同圆的扇区(同心环)构成了一个磁道,扇区中间存在间隙,间隙是不存出数据的。

从图中我们能看出虽然扇区的大小不同,从外侧到内侧减小,但是容量都一样,所以外侧面积大的扇区密度小,内侧面积小的扇区密度大。

磁盘存取

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



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

磁盘存取一般分为三个步骤:

1.寻道时间

磁盘控制器将磁头组合定位到磁盘所在磁道的主面上所需要的时间

2.旋转延迟

磁盘控制器等待访问块的第一个扇区转到磁头下的时间

3.传输时间

当磁盘控制器读取或写数据时,数据所在磁盘和扇区间的空隙经过磁头的时间。

磁盘调度

数据是磁盘控制器控制磁头组合来读取数据的,但是磁头组合只有一个,而页面请求顺序是随意的,我们要在最短的时间内完成最多的页面请求,这就要通过磁盘调度算法。

注意磁盘也会根据内存的分页机制来进行分页,保持和内存基本大小单位一致,这是由操作系统决定的。

[b]FCFS–先来先服务调度算法[/b]

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

优点:公平

缺点:效率太低

题目:

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

如下图



图片来源百度百科

[b]SSTF–最短寻道时间算法[/b]

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

优点:改善了平均耗时

缺点:某些请求比如距离磁头比较远的请求可能长时间得不到响应。

如下图



图片来源百度百科

[b]SCAN–电梯调度算法[/b]

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

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

如下图



图片来源百度百科

磁盘预读和磁盘缓冲

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

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

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

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: