多文件同时读写为什么没有单文件读写快?
2017-07-25 16:08
274 查看
如果是读或写同时操作一块物理磁盘,会导致磁头寻道冲突。
想像磁盘是一块黑胶唱片,每次读写在一个确定的位置都需要:
移动磁头到相应圆环,即改变磁头到圆心的内径
转动唱片,让磁头停留在需要的位置
这个被称为随机寻址的过程相对读写操作是很慢的。所以在磁盘操作中应该尽量避免随机寻址。如果同时只写一个文件,通常会被优化为顺序寻址,可以想像为连续播放整张唱片。同时写两个文件,因为操作系统要保证多任务的并行执行,可以想象为,同时播放两首曲子,先播放曲目一5秒钟,再曲目二5秒钟,不断循环。这样就导致频繁的随机寻址,性能会急剧下降。如果是写多块物理磁盘,或写固态硬盘,就不会有上面的问题。
想像磁盘是一块黑胶唱片,每次读写在一个确定的位置都需要:
移动磁头到相应圆环,即改变磁头到圆心的内径
转动唱片,让磁头停留在需要的位置
这个被称为随机寻址的过程相对读写操作是很慢的。所以在磁盘操作中应该尽量避免随机寻址。如果同时只写一个文件,通常会被优化为顺序寻址,可以想像为连续播放整张唱片。同时写两个文件,因为操作系统要保证多任务的并行执行,可以想象为,同时播放两首曲子,先播放曲目一5秒钟,再曲目二5秒钟,不断循环。这样就导致频繁的随机寻址,性能会急剧下降。如果是写多块物理磁盘,或写固态硬盘,就不会有上面的问题。
相关文章推荐
- linux 为什么 没有生成core文件? 之二
- 为什么我的WIN XP系统中的文件(夹)没有“安全”选项卡设置?
- 使用双向文件流来对文件同时读写
- .txt文件改成.bat为什么没有反应
- ubuntu为什么没有/etc/inittab文件? 深究ubuntu的启动流程分析
- 为什么vue-cli创建的build文件下没有dev-server.js文件
- PHP解决多进程同时读写一个文件的问题
- 在任何一个java工程下(即便是j2ee工程)都可以直接对某一个java文件run as Java Application,但是为什么有的java文件右击,没有“Java Application”
- 为什么我用VS2010做EXTPB.NET程序,有些文件没有发布出去?
- 多个地方同时向一个文件读写的互斥问题解决方案
- Eclipse中为什么创建DynamicWebProject后没有默认的web.xml文件?
- 在没有安装access的电脑上读写.mdb文件
- 为什么说,没有asdl之前,一根电话线,不可以,同时打座机电话&&上网
- ubuntu为什么没有/etc/inittab文件? 深究ubuntu的启动流程分析
- ubuntu为什么没有/etc/inittab文件? 深究ubuntu的启动流程分析
- 为什么很多php文件没有结束标记
- PHP基于文件锁解决多进程同时读写一个文件问题示例
- vs c#2005 web编程中的.cs文件为什么都没有namespace?
- 关于 Eclipse 创建 Dynamic Web Project (动态的 WEB 项目) 为什么会出现没有web.xml配置文件的问题
- 为什么文件系统没有标签分类方式?