`

碎片:linux vs windows, 内存/硬盘

阅读更多
找了一堆资料,稍微整理了下,具体的引用我都已经附上连接。欢迎大家讨论

什么是碎片
internal fragmentation,内部碎片
    Files come in any size. They don't end on block boundaries. So with every file a part of the last block of every file is wasted. Assuming that file sizes are random, there is approximately a half block of waste for each file on your disk. Tanenbaum calls this "internal fragmentation" in his book "Operating Systems".
    这段的大意就是说,为了更好的利用存储空间和寻找的效率,系统里面是将可用的存储空间看成是一个个簇的单位概念。比如指定簇的空间是4K,你的文件大小是7K,那么就需要2个簇8K大小的空间。这样在文件的末尾浪费了1KB。

external fragmentation,外部碎片
    Noncontiguous placement of blocks in a file is bad for performance, since files are often accessed in a sequential manner. It forces the operating system to split a disk access and the disk to move the head. This is called "external fragmentation" or simply "fragmentation" and is a common problem with MS-DOS file systems
在Windows系统里面,文件一开始是以紧密的方式排序,但随着增删的增多,文件就被分割成几个部分在存储设备各个部分。比如,
一开始是在0x0000-0x00ff存储了A文件,0x0100-0x1ff存储了B文件,接着将A文件删掉,再写入一个体积是2A的文件,那么这个2A就被分布成前面一半,中间跨过B,后面一半这样的存储方式。这样的链表式存储被成为碎片的分布。

碎片的影响
    使用效率:比如内部碎片,一定程度上影响了使用效率。当然你不可能把簇分成1KB,那样寻址的效率大大打折。所以在分配上,别以为你分了1KB就是节省空间,得视簇的单位来定。
    读取效率:也就是windows下的定义,使得文件在磁盘上呈现一种跳跃式的存储,这样对整个硬盘的I/O从寻找可利用空间到写入,都是非常大的影响。
    碎片对内存的影响:直接引用CU论坛上一位牛人的话(红色),页面地址附后
    而且从物理内存的角度看,从来也不存在硬盘上的那种所谓的碎片,应该说至少在win下,所有进程所申请并被提交的内存全都是碎片,而且就算你把分页文件关了,OS不做DROP页面操作,单进程(和可被换页的OS内核部分)所引用的物理内存同样是全都是碎片,因为除非你锁定了内存,否则不开分页文件OS内核同样在不断的修改你所引用的物理内存的页面(直接修改页表的指向就可以了),这玩意(至少我保证在win下)完全就分布在物理内存的各处,而且运行中还在不断的移动(虽然不会很频繁).
    这个东西很久以前就被批判了很多次了(参考《windows internal》),现代操作系统(我至少保证WIN32),从来就没有碎片,也不需要碎片整理,如果碎片整理有效,哪么这玩意早就会集成在内核中了。

   其次,在碎片方式下造成的影响会使得无法分配到足够的内存。但是在个人PC现在这么大的内存和页面存储下,可以忽略不计。

linux和windows硬盘的存储方式的不同
    在方式上附后的ubuntu帖子描述得非常详细,大家可以看看。一句话的概括就是,linux在文件写入的时候,前后都会预留出空间来进行文件的写入,删除等操作。

如此看来,windows硬盘方式一定就输给linux?
    本来打了一大段话,后来想想又删了,都是讨论一些技术细节,这种争辩永远不休。
    首先我们从一个博论的角度分析,两家都是非常顶尖的公司,如果真的技术存在如此大的缺陷,肯定会加以改善。所以光从这点上,就值得我们仔细思考windows硬盘碎片论。
    其次,做为用户肯定要了解产品适用的地方。微软起先的设计只是为了用户的PC使用,存储方式也是以速度为主,FAT32的格式早就是几年前的速度型代表,所以有个碎片整理功能不足奇怪。现在用的NTFS,我从来就没做过什么磁盘整理,也没觉得读取慢了多少,只是之前的碎片论一直成为人群中的阴影。
   

主要参考地址:
linux和windows存储方式的区别可以看这里:
http://forum.ubuntu.org.cn/viewtopic.php?f=120&t=27451
内存碎片的讨论可以看这里:
http://bbs.chinaunix.net/viewthread.php?tid=1155588&extra=&page=2
3
1
分享到:
评论

相关推荐

    convert f:/FS:NTFS把F盘转换为NTFS格式

    硬盘为NTFS格式时,碎片整理也快很多。 在安装的过程中可以选择使用NTFS还是FAT分区。如果在安装过程中选择了FAT,可以用下面的办法来把它转换成NTFS。  1. 依次选择“开始→运行”命令,在弹出对话框中输入“cmd...

    优化Linux系统的硬盘解决磁盘碎片化

    Linux没有Windows系统中发现的那种问题,这使得许多人认为磁盘碎片化根本不是一个问题。但是,这是不正确的。所有的文件系统随着时间的推移都趋向于碎片化。Linux文件系统减少了碎片 化,但是并没有消除。由于它不...

    rene file renamer:Windows/Linux 词法/语义多文件重命名器-开源

    Rene 是一个用 Python 为 Windows 和 Linux 编写的扩展文件重命名器命令行程序。 它的目标是易于使用但功能强大。 对于基本使用,命令语法与 Windows ren 和 Linux mv 一样简单,但在重用原始名称的部分和制定其替换...

    安卓点击爆炸碎片效果,效果图:https://blog.csdn.net/yabayaoya/article/details/115488567

    点击爆炸碎片效果

    内存救星,亲测试用,非常棒!

    因为物理内存几乎全被内存整理软件占用,因此Windows被迫把其他软件的内存数据转移到硬盘上的“虚拟内存交换文件”(PageFile)中,完成这一过程之后内存整理软件就会释放掉刚刚申请的内存,至此整理过程完成,可用...

    windows XP命令集合

    mem.exe:显示内存使用情况 msconfig.exe:系统配置实用程序 mplayer2:简易widnows media player mspaint:画图板 mstsc:远程桌面连接 mplayer2:媒体播放机 magnify:放大镜实用程序 mmc:打开控制台 ...

    Linux File-system defragmenter:https://github.com/ThomasCX/defragfs-开源

    github: https://github.com/ThomasCX/defragfs defragfs 项目针对 Linux 操作系统的文件系统/目录碎片整理,它(目前)是独立于文件系统的,只有 CLI,希望进一步的开发可以带来 GUI和更好的功能。

    Linux攻略:让系统内存不再泄漏的好方法

    内存泄漏指的是程序员动态分配了内存,但是在使用完成后却忘了将其释放。除了内存泄漏以外,在开发人员自己管理内存的开发中,缓冲溢出、悬摆指针等其它一些内存的问题也时有发生。现在已经有了一些实时监测内存问题...

    拼凑碎片:SQL Server 2005提供了丰富的碎片信息.pdf

    拼凑碎片:SQL Server 2005提供了丰富的碎片信息.pdf

    一键还原精灵 8.0

    1、建议最好在刚安装好系统且其它分区上没有数据时安装本软件,否则请在安装前务必对硬盘进行表面扫描及碎片整理,扫描方法见使用帮助:http://www.yjhy.net/help.htm问题解答第1问。 2、如果是SATA硬盘且不能正常...

    mem.rar_vxworks mem_体系结构_内存碎片_内存管理_操作系统 内存管理

    在了解实时嵌入式操作系统内存管理机制的特点以及实时处理对内存管理需求的基础上,练习并掌握有效处理内存碎片的内存管理机制,同时理解防止内存泄漏问题的良好设计方法。使用预先规划的思想,构建自己的私有内存...

    DU-MySQL-Search-Linux-V5.3

    MySQL碎片级数据搜索工具,可以在linux环境中扫描磁盘上残留的所有innodb表碎片和binlog碎片,以及frm文件。 1. 准备扫描环境 上传DU_MySQL_Search_Linux到Linux上。 注意不要上传到mysql data 目录所在的同一分区;...

    一键还原精灵setup.exe

    1、建议最好在刚安装好系统且其它分区上没有数据时安装本软件,否则请在安装前务必对硬盘进行表面扫描及碎片整理及重要数据备份,扫描方法见使用帮助:http://www.yjhy.net/help.htm问题解答第1问。 2、如果是SATA...

    reedsolomon:Go中的Reed-Solomon删除编码

    添加了 ,可使用1个奇偶校验碎片更快地进行操作。 当使用有限数量的goroutine时,性能要好得多。 AVX512现在正在使用多个内核。 流处理大修,在大多数情况下可大大提高速度。 AVX512优化 三月6,2019 纯Go实

    有效优化Linux防文件碎片降低硬盘性能.pdf

    有效优化Linux防文件碎片降低硬盘性能.pdf

    php企业网站模板

    答:linux/windows+apache/nginx+php+mysql php建议用php5.4 php5.5 php5.6 高一点的好 5.模板文件夹在哪? 答:themes/Home/ 6.修改了后台或代码相关信息 前台没发生变化? 答:点击后台右上角第一个图标 清除...

    leetcode答案-lintcode:关于解决https://www.lintcode.com/problem/上的一些问题的说明

    多利用碎片时间。例如坐校车或遛娃前先看一个题目放在脑子里,大脑空闲的时候,就开始想解题思路。 不间断,保持热度,否则事倍功 (From 知乎上高票刷题) 题目分类: 网友刷题总结: 目标: 在真正面试时,听到题目...

    android 中viewpager+fragment仿微信底部TAG完美渐变

    viewpager+fragment仿微信底部TAG完美渐变,在图片渐变的同时字的颜色也在变,注意,是渐变哦! 效果图: activity_main.xml <LinearLayout xmlns:android=... android:layout_width=match_paren

    thinkphp装修网站

    答:linux/windows+apache/nginx+php+mysql php建议用php5.4 php5.5 php5.6 高一点的好 5.模板文件夹在哪? 答:themes/Home/ 6.修改了后台或代码相关信息 前台没发生变化? 答:点击后台右上角第一个图标 清除...

Global site tag (gtag.js) - Google Analytics