浅谈计算机中的存储模型(四)磁盘
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次数。预读的页一般是证书呗
磁盘缓冲:磁盘缓冲也是,我们每次写磁盘文件时并不会立刻写入到磁盘中去,比如你给文件中一个字母a,它如果立刻写入磁盘那效率可就太低了,实际上是先写到缓冲中,等到缓冲满或者有必要时才刷新到磁盘中去。
磁盘就简单介绍到这里,如果想详细了解磁盘内部的一些知识,推荐去看《数据库系统实现》这本书的磁盘部分,讲的比较详细。
计算机中的存储模型通过这几篇文章我就简单介绍到这里,我的目的是希望能构建出一个存储模型的体系结构,很多地方并没有深入,个人觉得如果能形成一个存储体系结构在脑海中,这部分知识就算是理解了,接着再想了解或深入其他相关的知识直接去看就好。
完
前几篇文章
浅谈计算机中的存储模型(一)存储体系
浅谈计算机中的存储模型(二)物理内存
浅谈计算机中的存储模型(三)虚拟存储器
目录
磁盘
磁盘结构
磁盘存取
磁盘调度
磁盘调度算法
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,它如果立刻写入磁盘那效率可就太低了,实际上是先写到缓冲中,等到缓冲满或者有必要时才刷新到磁盘中去。
磁盘就简单介绍到这里,如果想详细了解磁盘内部的一些知识,推荐去看《数据库系统实现》这本书的磁盘部分,讲的比较详细。
计算机中的存储模型通过这几篇文章我就简单介绍到这里,我的目的是希望能构建出一个存储模型的体系结构,很多地方并没有深入,个人觉得如果能形成一个存储体系结构在脑海中,这部分知识就算是理解了,接着再想了解或深入其他相关的知识直接去看就好。
完
相关文章推荐
- 计算机选课程序(C#实验)
- PTA数据结构 5-5 堆中的路径
- HTTP 状态码
- Apache HTTP Server与Tomcat的三种连接方式介绍
- tcp拥塞控制时间轴上三种状态的关系,慢启动,拥塞避免,以及快速恢复的教学状态图。
- 【转】c++ http下载文件
- 数据结构基础1_顺序表
- android 使用brocastReceiver监听网络连接状态
- 笔试怎么过(2)TCP/IP、HTTP、进程/线程、sql
- TCP滑动窗口与拥塞窗口
- 网络编程socket相关错误号及信息的获取
- Python网络爬虫(Get、Post抓取方式)
- Python网络爬虫(Get、Post抓取方式)
- 《深入理解Linux网络技术内幕》阅读笔记(二十一)
- 一个TCP连接池的自我修养-如mysql-client、http-client、redis-client
- 正则表达式学习(基础篇)(原创)
- 计算机 字节、位等之间的换算
- 博弈论 + 按位异或
- Linux网络编程socket错误分析
- PTA数据结构 5-4 是否同一棵二叉搜索树