微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇”

数据存储在硬盘的时候都是以簇为单位,所以无论文件大小是多少,除非正好是簇大小的倍数,否则文件所占用的最后一个簇或多或少都会产生一些剩余的空间,且这些空间又不能给其它文件使用,即使这个文件只有0字节,也不允许两个文件或两个以上的文件共用一个簇,不然会造成数据混乱。
–百度百科

  • 簇是操作系统读写文件的基本单位,系统是以簇为单位来读写的。是因为文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT16/32/NTFS)打开文件。
  • 扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起形成一个簇,然后再对簇进行管理(每个簇可以包括2、4、8、16、 32或64个扇区。)簇是操作系统所使用的逻辑概念,而非磁盘的物理特性为了更好地管理磁盘空间和更高效地从硬盘读取数据。

也可以这样看:
扇区: 磁头从磁盘中读取数据的最小单位(一般512B),即磁头每次从磁盘中读取数据,都是一个扇区一个扇区读的。
块(簇): 操作系统与磁盘(硬盘)交互的最小数据单元(在linux系统中称为块,在windows系统中称为簇)。操作系统从硬盘中拿一块数据,即完成一次磁盘IO。块(数据块)的大小在硬盘格式化时被指定,一般有1K,2K,4K(最常用)。如果块的大小设置为4K,那么磁盘要读取8个扇区之后,才将数据块传给操作系统。另外,数据块也是DOS下数据存储的最小单元。例如,如果一个文件的大小为1K,而块的大小为4K,那么该文件还是会占用一个块,块中剩下的3K被空闲出来,不能用于存储其他数据。因此,设置块的大小时,需要考虑要存储文件的大小。

  • 操作系统规定,一个簇中只能放置一个文件的内容,因此文件所占用的空间只能是簇的整数倍,而如果文件实际大小小于一簇,它也要占一簇的空间。所以一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。簇的大小主要由磁盘的分区格式和容量大小来决定,簇数=取整(文件大小簇大小)+1所占空间=簇数x磁盘簇大小。
    “文件大小”与“所占空间”的差别

    就比如上面的文件,文件实际大小为1,528,960 字节,但是占用空间却为1,531,904 字节(4096字节的倍数)

    这里我是win10系统,在硬盘格式化时,默认值是4096,即簇的大小,可以实现SSD的4k对齐
    关于硬盘4k对齐问题可以看下边网页

4K对齐究竟是什么意思 固态硬盘4K对齐2048和4096区别 通俗易懂!
https://baijiahao.baidu.com/s?id=1640537488176584496&wfr=spider&for=pc

簇大小通常这样选择:

  • 如果该分区保存的都是零散的小文件,就应当选用较小的簇,以提高硬盘的利用率;如果保存的都是完整的大文件例如视频,就可以选择较大的簇,以提高硬盘的读取效率。因为一个簇里面的数据必定是连续的,选择较大的簇(例如64KB)就能保证一次可以连续读取尽可能多的数据。因此,在格式化时,设置较大的簇会提高读取效率,但会影响存储效率;反之如果设置过小,虽然可以提高磁盘利用率,但是会产生大量碎片,降低读取效率。

簇是操作系统读写文件的基本单位相关推荐

  1. linux操作系统读写文件操作(c语言)

    (一)open系统的调用 为了创建一个新的文件描述,需要使用系统调用open #include<fcntl.h> #include<sys/types.h> #include& ...

  2. 操作系统OS-Lab2-FAT12文件读取

    OS-Lab2 问题 PPT相关内容 什么是实模式,什么是保护模式? PPT: * 实模式:基地址+偏移量可以直接获得物理地址的模式* 缺点:非常不安全 * 保护模式:不能直接拿到物理地址,需要进行地 ...

  3. python 文本模式读写文件时 不应使用 os.linesep 简介

    os.linesep官方文档 The string used to separate (or, rather, terminate) lines on the current platform. Th ...

  4. python文件对象提供了3个读方法、分别是-Python读写文件模式和文件对象方法实例详解...

    本文实例讲述了Python读写文件模式和文件对象方法.分享给大家供大家参考,具体如下: 一. 读写文件模式 利用open() 读写文件时,将会返回一个 file 对象,其基本语法格式如: open ( ...

  5. python怎么读取文件-python怎么读写文件操作

    本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...

  6. python导入csv文件-Python读写文件(csv、txt、excel)

    大家做在数据处理的时候,肯定难免会与文件交互,那么对于指定的文件类型,我们如何操作呢? 1.python读写csv文件 import csv #python2可以用file替代open with op ...

  7. nodeJS中读写文件方法的区别

    导言:nodejs中所有与文件相关的操作都在fs模块中,而读写操作又是我们会经常用到的操作,nodejs的fs模块针对读操作为我们提供了readFile,read, createReadStream三 ...

  8. php写文件 效率,php中读写文件与读写数据库的效率_PHP教程

    本文章来给大家介绍一个关于php中读写文件与读写数据库的效率对比,有需要了解的朋友可参考. 测试程序如下: //说明1:由于读数据库语句调用简单的封包函数两次,所以把读文件也改成连续调用两次,数据库记 ...

  9. python将csv一行保存一个txt_Python读写文件(csv、txt、excel)

    大家做在数据解决的时候,一定难免会与文件交互,那么对于指定的文件类型,我们如何操作呢? 1.python读写csv文件import csv #python2可以用file替代openwith open ...

最新文章

  1. 成都python培训比较好的机构-成都Python培训班哪个好,怎样才能不走弯路学习
  2. 在emu8086中学习几个汇编语言显示字符串的小例子
  3. MyBatis Plus Generator——MyBatis Plus代码生成器DEMO
  4. postgresql 备份恢复(一)
  5. formidable处理提交的表单或文件的简单介绍
  6. Android Ubuntu 安装问题FAQ
  7. PHP CI框架如何去掉 sql 里的反引号
  8. 【Python笔记】网络爬虫——介绍
  9. 构建自己的PHP框架--实现Model类(2)
  10. 学ps还是html,photoshop哪个版本好用?初学PS用哪个版本好?
  11. 个人用户实现发送短信功能
  12. 机器学习案例实战:Python文本数据分析新闻分类任务
  13. ubuntu-Errors were encountered while processing
  14. 识别INSB号码C语言如何讲述,探究机器码,深入研究C语言程序的机制
  15. Armstrong 一个n位数等于各个位数n次方之和
  16. Matlab img格式图片转为dicom格式
  17. 前端页面 原生php+H5 视频播放一 专辑列表页(专辑页list)
  18. 二维dct变换例题_图象题处理习题
  19. 3.2 CMMI3级——需求开发(Requirements Development)
  20. 利用VML标记语言画图、动画制作

热门文章

  1. 花式吊打源码中 Android.mk 集锦
  2. ftp服务器wu-ftpd配置详解
  3. 操作系统——并发相关问题
  4. Android 12 预览版发布,64g 手机用户哭了
  5. SAP工具箱 数据同步平台(九 与PO整合)
  6. 华为p40pro android11,华为P40Pro上手对比iPhone11Pro:差距拉开、黑马逆袭!
  7. 搭建自己的电影网站 2 (安装MacCMS10)
  8. vue中provide和inject 用法
  9. Transformer结构的初步探索
  10. office2010卸载记录