📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处
文件的属性
文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
类型:指明文件的类型
位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)
文件的逻辑结构与物理结构
文件的逻辑结构:所谓的“逻辑结构”,就是指在用户看来,文件内部的数据应该是如何组织起来的。
而“物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。
类似于数据结构的“逻辑结构”和“物理结构”。
如“线性表”就是一种逻辑结构,在用户角度看来,线性表就是一组有先后关系的元素序列,如: a,b, c, d, e …
“线性表”这种逻辑结构可以用不同的物理结构实现,如:顺序表/链表。顺序表的各个元素在逻辑上相邻,在物理上也相邻;而链表的各个元素在物理上可以是不相邻的。因此,顺序表可以实现“随机访问”,而“链表”无法实现随机访问。
文件的逻辑结构可以分为无结构文件和有结构文件。
无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如:Windows操作系统中的.txt文件。
有结构文件:由一组相似的记录组成,又称“记录式文件”。每条记录又若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID)
文件的逻辑地址可以表示为逻辑块号和块内地址的形式。
索引表。FTL index 表的目的是提高闪存访问的效率和可靠性。通过使用索引表,FTL 可以在逻辑块地址和物理页地址之间进行快速查找。这样,当操作系统读取或写入逻辑地址时,FTL 可以使用索引表来确定对应的物理地址,并将数据正确地定位到闪存芯片上。上述理解对吗?
文件分配方式
连续分配:逻辑上相邻的块物理上也相邻。
链接分配:逻辑上相连的块在物理上用链接指针表示先后关系。
索引分配:操作系统为每个文件维护一张索引表,其中记录了逻辑块号到物理块号的映射关系。
操作系统将(逻辑块号,块内偏移量)转换为(物理块号,块内偏移量)
当我们想要从文件中读取某个数据的时候,只需要知道那条数据对应的逻辑地址,并提供给操作系统,之后操作系统便会帮我们找打数据
什么是簇?
在计算机存储中,簇(Cluster)是一种文件系统管理和组织存储空间的单位。簇是由一组连续的扇区(Sector)组成,每个扇区通常包含512个字节。
当文件系统在存储设备上创建文件时,它将分配一定数量的簇来存储文件的内容。文件系统根据簇的大小和存储设备的格式来确定每个文件占用的簇数。较小的簇大小可以提供更高的存储空间利用率,但会导致更多的碎片化,而较大的簇大小则会浪费更多的空间但减少碎片。
windows为了提高数据读写速度,对分区空间进行了按簇划分,对于大于2GB的NTFS格式的分区来说,windows默认的簇大小是4096字节,也就是以4KB作为一个单位,所有的文件都是对簇独占的,比如说一个10KB的文件,放在簇大小为4K的分区里,就会占掉3个簇,所以实际占用空间为12KB,如果一个文件夹里有100个10KB的文件,他们的实际大小是1000KB,但是占用空间却是1200KB。但是如果把这些文件放到簇大小为8K的分区里,每个10KB的文件就会占用2个簇,也就是16KB,100个文件实际大小仍是1000KB,但占用空间却是1600KB。
📢:簇的大小
簇的大小可以根据文件系统和存储设备的不同而有所不同。常见的文件系统,如FAT32和NTFS,使用默认的簇大小来管理磁盘空间。对于NTFS文件系统,簇的大小通常为4 KB或更大,而对于FAT32文件系统,簇的大小可以是4 KB、8 KB或16 KB等。具体的簇大小取决于文件系统的设置和操作系统的限制。 因此每个簇可以包括2、4、8、16、32或64个扇区。
通过上一问,我们已经看出,簇大小较小时空间利用率较高,较大时会浪费更多空间,那么为什么不把簇分的更小一些呢?这是因为windows在读取数据时是以簇为单位进行检索的,识别到空白的簇会直接跳过,如果簇大小为8K,识别1MB就是128个簇,如果簇大小为4K,同样识别1MB就是256个簇,如此一来就会在空白的簇上浪费掉更多的时间。也就是说,簇越小,空间利用率越高,但读取速度也就越慢;反之,簇越大,空间利用率就越低,但读取速度也就越快。NTFS大分区的windows默认的簇大小一般是4KB。
📢:使用簇的好处
使用簇的好处是可以在文件系统中更高效地进行文件的存储和访问。由于簇是分配和管理存储空间的基本单位,文件系统可以更快速地定位并读取整个簇内的数据。然而,较小的簇大小可能导致更多的内部碎片,而较大的簇大小可能浪费更多的空间。因此,在选择文件系统和磁盘格式时,需要综合考虑簇大小对存储空间和性能的影响。
📢:扇区与簇的关系?
扇区是磁盘最小的物理存储单元,但是由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,从而形成簇然后在对簇进行管理。
什么是4K对齐?
早期的硬盘一个扇区的大小是512个字节,后来随之磁盘容量的不断增加和读写效率提升的要求,国际硬盘协会制定了全新标准,将每个扇区的大小调整为4096个字节,也就是4KB,这种扇区又叫4K扇区。4K对齐指的就是对磁盘分区时,让分区的起始扇区位于某一个4K扇区的起始位置。
为什么会有4K不对齐?
当硬盘扇区改成4K扇区之后,为了兼容以前的标准,为了方便技术人员的固有思维,为了保证靠扇区识别的旧的操作系统和应用软件不会出错,厂商把一个4K扇区虚拟成8个512B扇区
,以便和以前的单位统一。这样一来,从这8个扇区中的第一个扇区开始的分区,就是4K对齐了的,从其他7个扇区开始的分区,就是4K没有对齐的。
簇大小和4K对齐有什么关系?
windows读写是按簇,磁盘读写则是按扇区,如果一个分区的起始扇区为一个4K扇区的第2个虚拟扇区,也就是4K没有对齐,那么对于簇大小为4K的分区,每一个簇都会被割裂在两个不同的4K扇区里,那么当windows操作一个完整的4K簇的文件时,磁头就要对两个4K扇区进行操作,当存在大量4K左右小文件的时候,操作速度就会较低。而正确的4K对齐就会提升读写速度,尤其是小文件的读写速度。
固态硬盘为什么要4K对齐?
上面我们说了机械硬盘的4K对齐原理,那么固态硬盘众所周知并无扇区的概念,为什么也要4K对齐呢?因为固态硬盘所使用的NAND颗粒的最小单位是页,页的大小一般也是4KB,所以固态硬盘的页,等同于机械硬盘的扇区。而且由于闪存颗粒的特性所致,4K对齐对其速度影响远大于机械硬盘,所以对于固态硬盘,我们更应该进行4K对齐。