找了一堆资料,稍微整理了下,具体的引用我都已经附上连接。欢迎大家讨论
什么是碎片
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
分享到:
相关推荐
2. 磁盘碎片整理:由于文件的创建和删除可能导致磁盘空间碎片,Windows提供了磁盘碎片整理工具来优化磁盘布局,提高性能。 3. 磁盘配额:Windows NTFS文件系统支持磁盘配额,可以限制用户或组的磁盘使用空间,有助...
Linux操作系统是基于Unix的一种开源操作系统,它以其稳定性和灵活性而受到广泛的使用,特别是在服务器领域。在Linux中,命令行界面是进行系统管理的核心工具,掌握常用命令及其参数的使用是每个Linux用户的基础技能...
Linux的策略是基于需求的回收,避免了不必要的内存碎片,并且保持了良好的性能。 在Linux中,内存使用情况可以通过`free`命令查看。例如,输出显示了总内存(total)、已用内存(used)、空闲内存(free)、共享...
【Linux基础命令与简要】 Linux是一个开源操作系统,它的核心在于命令行界面,通过一系列的命令来管理和操作系统。在Linux中,理解基础命令和文件系统是至关重要的。 1. **文件系统与分区** - **主分区**:最多可...
Linux 操作系统中,磁盘碎片化是一个普遍存在的问题,不论 Linux 文件系统采用什么类型的文件格式(ext3、JFS、xFS、ReiserFS),使用什么类型的硬盘(IDE、SCSI),随着时间的推移,文件系统都会趋向于碎片化。...
9. **/proc**:这是一个虚拟目录,它反映了系统的当前状态,如进程信息、系统统计、设备信息等,所有数据都来源于系统内存而非硬盘。 10. **/root**:超级用户(root)的主目录,root用户有系统的所有权限,可以...
这两个函数通常会用到Windows API或者Linux系统调用来实现,如Windows下的CreateFile、DeviceIoControl,以及Linux下的open、pread/pwrite等。 以下是一个简单的函数结构示例: ```cpp // 假设已定义了打开设备...
2. 交换空间:在Linux系统中,与Windows的虚拟内存类似,用于临时存储数据。 九、内存故障诊断与测试 1. Memtest86:常用的内存测试工具,可检测内存错误。 2. 故障诊断:通过系统日志、蓝屏信息等判断内存是否...
6. **内存管理**:内核对内存管理进行了优化,引入了伙伴系统(Buddy System)进行物理内存分配,提高了内存利用率,减少了内存碎片。 7. **源码注释**:中文注释的存在使得中国开发者更容易理解源码,这对于学习和...
3. **/dev**:设备文件的集合地,Linux中设备被视为普通文件处理,如硬盘、键盘、鼠标等都在此目录下。 4. **/etc**:系统配置文件的家,包含各种服务、网络、用户设置等,例如hosts、networks、resolv.conf等。 5...
10. **兼容性与跨平台**:大内存工具可能需要在不同的操作系统环境下工作,如Windows、Linux、macOS等,因此需要良好的跨平台兼容性。 综上所述,“开启大内存工具”可能是一种针对系统内存优化的解决方案,涵盖了...
- **安全性与灵活性:** 可以在一个分区安装易受攻击的操作系统(如Windows),而在另一个分区安装较为安全的Linux系统,两者之间不会互相影响。 #### Linux中的挂载点概念 与Windows将分区视为独立的驱动器不同,...
3. **/dev**:设备文件的集合地,Linux通过设备文件与硬件交互,如硬盘、鼠标、键盘等都有对应的设备文件。 4. **/etc**:存放系统级别的配置文件,包括用户、网络、服务等的配置,如`/etc/passwd`, `/etc/network/...
5. 定期碎片整理:虽然Linux文件系统通常比Windows更少受到碎片问题的影响,但在长期使用后,还是有必要进行碎片整理,以优化文件和目录的存储布局。 6. 优化挂载选项:在挂载文件系统时,可以调整挂载选项(如...
3. **交换文件/页面文件**:在Windows系统中,称为“页面文件”,在Linux中被称为“交换分区”。这是操作系统在硬盘上创建的一个特殊文件,用于存储从物理内存中换出的页。 4. **地址转换**:虚拟内存系统通过页表...
Linux的交换分区(Swap)可在物理内存不足时使用硬盘空间作为临时扩展。 7. **注意事项**:虽然内存整理有时可以提升系统性能,但过度依赖内存整理工具可能导致系统资源的浪费,因为整理过程本身也需要消耗CPU和...
8. **Linux的交换区**:Linux使用交换区作为虚拟内存的一部分,它在硬盘上预分配一个固定大小的区域,用于在内存不足时扩展内存。 内存管理是操作系统设计中的一个复杂主题,涉及到内存分配策略、页面替换算法、...
### Linux下的文件结构详解 #### 一、概述 在Linux操作系统中,文件系统的设计遵循一定的逻辑结构,这种结构不仅有助于用户高效地管理文件,还能帮助系统有效地组织和维护各种资源。本文将详细介绍Linux下的文件...
例如,一块硬盘有一个主分区,一个扩展分区,扩展分区上有3个逻辑分区,那么在Linux中,这些分区的标识分别为hda1(Windows的C盘)、hda2(扩展分区,Windows中无对应)、hda5(Windows的D盘)、hda6(Windows的E盘...
5. **内存分析工具**:有许多工具可用于进程内存监视,例如Windows平台的Task Manager和Process Explorer,Linux下的top、htop和Valgrind等。这些工具能展示内存使用量、查看内存分配情况,甚至可以进行深度分析,如...